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的原理和区别 [ 建议收藏]


目录
相关文章
|
25天前
|
开发工具 git
git 常用命令
这些只是 Git 命令的一部分,Git 还有许多其他命令和选项,可根据具体需求进行深入学习和使用。熟练掌握这些命令能够帮助你更高效地管理代码版本和协作开发。
|
4月前
|
存储 开发工具 git
|
18天前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
25 3
|
4月前
|
开发工具 git
【GIT 第二篇章】GIT常用命令
Git常用命令涵盖初始化、状态管理、提交、分支处理、远程操作等关键流程。`git init`启动本地仓库,`git clone`下载远程仓库。通过`git status`和`git diff`检查工作状态与差异。利用`git add`暂存文件,`git commit`保存更改。借助`git branch`、`git checkout`、`git merge`和`git rebase`管理分支。使用`git fetch`、`git pull`和`git push`同步远程仓库。通过`git reset`、`git revert`和`git checkout`实现版本回退。
74 0
|
1月前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
50 1
[Git]入门及其常用命令
|
2月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
141 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
1月前
|
开发工具 git 开发者
|
1月前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
61 0
|
3月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
3月前
|
安全 网络安全 开发工具
深入探索Git:全面解析Git的用法与最佳实践
深入探索Git:全面解析Git的用法与最佳实践
69 2