Git常用命令用法和实战总结

简介: Git常用命令用法和实战总结

常用命令

git clone <版本库的网址> <本地目录名></本地目录名></版本库的网址>
git log                    // 查看看commit历史记录
git add & git commit       //提交当前工作空间的修改内容到索引库中
git revert  version        //还原一个版本的修改,必须提供一个具体的Git版本号 version
git tag version            //可以将某个具体的版本打上一个标签这样你就不需要记忆复杂的版本号哈希值了
git branch                 //查看当前分支
git brance -a              //查看所有分支
git branch test            //就新建了一个名字叫 test 的分支
git checkout -b test      //这个命令的意思就是新建一个test分支,并且自动切换到test分支
git checkout test         //切换到test分支
git branch -d   test     //把test分支删除了。
git branch -D  test     //强制删除test分支
git push --force origin
//如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送
到远程主机。这时,如果你一定要推送,可以使用–force选项。上面命令使用–force选项,结果导致远程主机
上更新的版本被覆盖。除非你很确定要这样做,否则应该尽量避免使用–force选项。
git fetch //相当于是从远程获取最新版本到本地,不会自动merge(更新remote索引,获取远程服务器的最新分支)
git pull  //相当于是从远程获取最新版本到本地,会自动merge
git push origin :a //删除远程分支
对应语法为:git push [远程库名] [本地分支]:[远程分支]
即向待删除远程分支推送一个空的本地分支。
git stash          //备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次
提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop    //从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash
的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。

rebase 和 merge的区别

流程示例

从图中可以看到,这里生成了一个新的提交G,是怎么生成的呢?merge 命令 它会把两个分支的最新快照(F、ED、E)以及二者最近的共同祖先(B)进行三方合并,合并的结果是生成一个新的快照G(并提交)。

当执行rebase操作时,git会从两个分支的共同祖先开始提取待变基分支上的修改,然后将待变基分支指向基分支的最新提交,最后将刚才提取的修改应用到基分支的最新提交的后面。

结论

  • merge 是一个合并操作,会将两个分支的修改合并在一起,默认操作的情况下会提交合并中修改的内容
  • merge 的提交历史记录了实际发生过什么,关注点在真实的提交历史上面
  • rebase 并没有进行合并操作,只是提取了当前分支的修改,将其复制在了目标分支的最新提交后面
  • rebase 操作会丢弃当前分支已提交的 commit,故不要在已经 push 到远程,和其他人正在协作开发的分支上执行 rebase 操作
  • merge 与 rebase 都是很好的分支合并命令,没有好坏之分,使用哪一个应由团队的实际开发需求及场景决定

使用场景

git和rebase这两者哪种操作更好,这是取决于不同的场景的。

当我们拉取公共分支最新代码的时候建议使用rebase,也就是git pull -rgit pull --rebase,但有个缺点就是rebase以后我就不知道我的当前分支最早是从哪个分支拉出来的了,因为基底变了。(如果使用merge,多出无意义的一条提交记录)。

往公共分支上合代码的时候,使用merge。(如果使用rebase,那么其他开发人员想看主分支的历史,就不是原来的历史了,历史已经被你篡改了)

实战技巧

一、提交的Commit超过100M

如果您已经将大文件添加到仓库并提交了更改,您需要从 Git 历史记录中删除它。这可以通过使用 git filter-branch 来完成。以下是使用 git filter-branch 的示例:

brew install git-filter-repo

git filter-repo 提示您这不是一个新克隆的仓库,因此默认情况下,它不会在当前仓库上执行破坏性操作。为了解决这个问题,您有两个选择:

1.在新克隆的仓库上运行命令:这是首选的解决方案,因为它更安全。首先,克隆您的仓库到一个新的文件夹:

git clone <repository_url> <new_folder>

将 <repository_url> 替换为您的仓库的 URL,将 <new_folder> 替换为新克隆仓库的目标文件夹。然后,进入新文件夹并再次运行 git filter-repo 命令:

cd <new_folder>
git filter-repo --invert-paths --path <file_name>

2.使用 --force 选项:如果您确定要在当前仓库上进行操作并愿意承担风险,请使用 --force 选项强制执行命令:

git filter-repo --invert-paths --path <file_name> --force

参考文章

全网最通俗易懂的讲解: git rebase和git merge的原理和区别 [ 建议收藏]


目录
相关文章
|
6月前
|
开发工具 git
Git版本控制工具合并分支merge命令操作流程
通过以上步聚焦于技术性和操作层面指南(guidance), 可以有效管理项目版本控制(version control), 并促进团队协作(collaboration).
1279 15
|
6月前
|
存储 Java 开发工具
【Git】零基础入门:配置与初始操作实战指南
本文聚焦 Git 的“从 0 到 1”配置与基础操作,旨在帮助 Java 开发者快速掌握环境搭建、用户配置、仓库初始化、代码提交、版本回退等核心技能。内容设计上避免涉及复杂的分支策略或高级命令,以实用为导向,适合零基础入门者系统学习,为后续参与企业级项目开发奠定版本控制基础。
|
9月前
|
安全 开发工具 git
git的常用操作命令
git的常用操作命令
543 57
|
7月前
|
存储 缓存 开发工具
Git stash命令的详细使用说明及案例分析。
通过上述案例,我们看到stash命令能够在不丢失进度的情况下,帮助开发者临时切换开发上下文,这在处理多个任务或紧急bug时特别有用。正确使用Git stash可以大大提高开发的灵活性和效率。
2158 0
|
12月前
|
人工智能 前端开发 Java
用git rebase命令合并开发阶段中多条commit提交记录
通过 `git rebase`,可以合并多个提交记录,使开发历史更简洁清晰。操作分为 6 步:查看提交历史 (`git log --oneline`)、设置需合并的提交数 (`git rebase -i HEAD~N`)、修改动作标识为 `s`(squash)、保存退出编辑、调整提交信息、强制推送至远程仓库 (`git push -f`)。此方法适合清理本地无关提交,但若有团队协作或冲突风险,需谨慎使用以避免问题。
1964 60
|
10月前
|
存储 项目管理 开发工具
Git常用命令及操作技巧
以上是Git的常用命令及操作技巧,尽管看起来有些繁琐,但实际上只要花费一些时间进行实践,您将很快熟练掌握。随着使用熟练度的提高,您会发现Git对项目管理和协同工作的强大帮助。
225 20
|
11月前
|
Linux 开发工具 git
版本控制工具:Git的安装和基本命令使用指南。
结束这段探险,掌握了Git你就等于掌握了一个宝藏,随时可以瞥见你的编程历程,轻松面对日后的挑战。Git,无疑是编程者的强大武器,开始你的Git探险之旅吧!
399 28
|
网络安全 开发工具 git
mac git clone命令提示git@gitee.com: Permission denied (publickey).问题修复
mac git clone命令拉取gitee上项目代码时提示密钥问题
1062 19
|
Java 网络安全 开发工具
Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合
通过本文,读者可以深入了解Git的核心概念和实际操作技巧,提升版本管理能力。