/ 写在前面 – 我热爱技术、热爱开源。我也相信开源能使技术变得更好、共享能使知识传播得更远。但是开源并不意味着某些商业机构/个人可以为了自身的利益而一味地索取,甚至直接剽窃大家曾为之辛勤付出的知识成果,所以本文未经允许,不得转载,谢谢/


创建与合并分支

参考文档:创建与合并分支 - 廖雪峰的官方网站

Git鼓励大量使用分支,这样更安全。

关于分支的一些命令:(有多种命令的推荐前者)

  • 查看分支: git branch
  • 创建分支: git branch <name>
  • 切换分支: git switch <name> 或者 git checkout <name>
  • 创建➕切换分支: git switch -c <name> 或者 git checkout -b <name>
  • 合并某分支到当前分支: git merge <name>
  • 删除分支: git branch -d <name>

合并分支

Git较懒,倾向于使用 --ff 模式,即Fast Forward模式,但在这种模式下,删除分支后,会丢掉分支信息。

我们可以通过参数 --no-ff 来强制禁用Fast Forward模式,这样Git就会在merge时生成一个新的commit,我们从分支历史上就可以看出分支信息。

bug分支

参考文档:Bug分支 - 廖雪峰的官方网站

Git还提供了一个 stash 功能,可以使用 git stash 把当前工作现场“储藏”起来,等以后恢复现场后继续工作。

git stash list 命令可以查看刚刚保存的工作现场。

恢复工作现场有2种办法:

  1. 一是用 git stash apply 恢复,但是恢复后, stash 内容并不删除,你需要用 git stash drop 来删除;
  2. 另一种方式是用 git stash pop ,恢复的同时把stash内容也删了。

master 分支上修复的bug,想要合并到当前 dev 分支,可以用 git cherry-pick <commit> 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。这样会产生一次新的 commit 。但是,使用 cherry-pick 一定要注意:先 cherry-pickgit stash pop ,否则会报错,前提是 cherry-pick 改动的文件与 stash 的文件不冲突。

注意事项 - 我觉得你们说的有点乱,会带坏新手 我给你们做个总结

先说几个名词 未被追踪的文件:指的是新建的文件或文件夹且还没加入到暂存区(新建的还没有被git add 过得) 未加入到暂存区的文件:指的是已经被追踪过,但是没有加入到暂存区(已经执行过git add/commit的但是这次修改后还没有git add) 举例: readme.md 已经被git add/git commit过,但是呢 我这次只是修改了,而且没有修改完,不能commit test 新建的文件夹,没有被git add/git commit过 有个急事需要处理,这时候我需要切换分支,去处理紧急任务,比如文中的举例去修改bug, 正确的步骤: git add test(让git去追踪这个新文件) git stash保留现场 如果我不执行这两个命令,那么我在修改BUG完成之后 git status,就会发现readme.md 没有添加到暂存区,同时又多了个test文件,但是自己的readme.md没有完成,万万不可以提交,这样导致bug的修改代码也提交不了。所以你需要 git stash,这样你在提交修改bug代码的时候 ,就不会看见readme.md 和 test。可以安心提交修改bug的代码。

天哪! 幸好我一上来看到的是你这条评论,不然不知道会被其他评论中各种不充分的测试带偏到哪里去! 关于stash到底用不用先add到stage总结一句话就是”必须被add“注意字是重点

楼主说的好,我总结一下楼主的总结(滑稽 在 git stash 之前一定要用 git status 确认没有 Untracked files 否则,也没啥,多 stash 几次而已…

bug分支这个话题还是有点复杂,自己暂时也还没怎么搞清楚……

丢弃分支

如果要丢弃一个还未合并的分支,可以通过 git branch -D <name> 强行删除。