Appearance
分支管理
正如一开始所说,git 命令最大的坑还是命令功能的重复性,经常会有同一个功能有多个命令,互联网上不同时期的"学习笔记",让学习者痛苦万分,所以我在这里只会记录我自己的理解,不会记录所有的命令,如果你想要了解更多,请查看官方文档
1. 查看分支
bash
# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 查看远程仓库地址
git remote -v
2. 新建分支
bash
# 新建分支
git branch 分支名
# 切换到该分支
git switch 分支名
# 创建分支并切换
git switch -c 分支名
# 将新建的分支推送到远程
git push -u origin 分支名
# -u选项表示将本地分支与远程分支关联起来,以便在以后的推送和拉取操作中可以省略分支名称
bash
# 新建分支
git branch 分支名
# 切换到该分支
git checkout 分支名
# 创建分支并切换
git checkout -b 分支名
# 将新建的分支推送到远程
git push -u origin 分支名
# -u选项表示将本地分支与远程分支关联起来,以便在以后的推送和拉取操作中可以省略分支名称
提示
git 中的 checkout 命令承载了分支操作和文件恢复的部分功能,有点复杂,并且难以使用和学习,
所以社区解决将这两部分功能拆分开,在git 2.23.0
中引入了两个新的命令 switch
和 restore
用来取代 checkout
3. 修改分支
假设要将分支「AAA」修改为分支「BBB」
bash
# 1. 修改本地分支名
git branch -m AAA BBB
# 2. 删除远程分支AAA
git push origin :AAA
# 3. 将本地分支BBB推送到远程
git push -u origin BBB
4. 合并分支
git 合并分支有两种方式,一种是使用merge
,另一种是使用rebase
.
方法 | 区别 |
---|---|
merge | 将两个分支的最新提交合并,并且会生成一个新的提交 |
rebase | 将两个分支的最新提交合并,并且会将当前分支的提交放在最后 |
WARNING
执行 rebase 操作的时候,需要保证 master 分支处于最新状态,否则在 merge 合并的时候也可能存在冲突,就失去使用 rebase 的意义。
4.1 merge
合并会主分支有两种选择,即快速合并和非快速合并,二者的区别在于是否会生成一个新的提交
bash
# 快速合并
git merge 分支名
# 非快速合并
git merge --no-ff 分支名
快速提交图示:
非快速提交图示:
对开源项目来说,非快速合并是一个很好的选择,因为这样可以保留分支的提交记录,方便以后的维护,如果选择快速合并,则需要保证每个提交都是独立且完整的。
4.2 rebase
“变基”通俗理解就是改变某个分支所基于的分支。把分支 b 的所有更改在 a 的基础上应用一次,然后把应用后的结果放到 b 里面,这种方法叫做“变基(rebase)”。你可以使用 rebase 命令把某一分支上的所有修改都复制到另一分支上,就好像重新播放一样。
4.2.1 变基当前分支
切换分支进行变基:
bash
# 1. 切换到要变基的分支
git switch 分支名
# 2. 变基
git rebase master
不切换分支进行变基:
bash
git rebase master 分支名