入门篇
概念篇
git 首先要明白3个工作区
- 下面这张图描述的很清楚,先简单过一下图中每个的功能
下面的话, Cherry-pick 是最直接的方式了。我个人非常喜欢 cherry-pick
- 这里有一个仓库, 我们想将 side 分支上的工作复制到 main 分支,你立刻想到了之前学过的 rebase 了吧?但是咱们还是看看 cherry-pick 有什么本领吧
- 执行 git cherry-pick C2 C4
- 我们只需要提交记录 C2 和 C4,所以 Git 就将被它们抓过来放到当前分支下了。

交互式rebase
当你知道你所需要的提交记录(并且还知道这些提交记录的哈希值)时, 用 cherry-pick 再好不过了 没有比这更简单的方式了。但是如果你不清楚你想要的提交记录的哈希值呢? 幸好 Git 帮你想到了这一点, 我们可以利用交互式的 rebase —— 如果你想从一系列的提交记录中找到想要的记录, 这就是最好的方法了.
- 交互式 rebase 指的是使用带参数 --interactive 的 rebase 命令, 简写为 -i
- 如果你在命令后增加了这个选项, Git 会打开一个 UI 界面并列出将要被复制到目标分支的备选提交记录,它还会显示每个提交记录的哈希值和提交说明,提交说明有助于你理解这个提交进行了哪些更改。
- 在实际使用时,所谓的 UI 窗口一般会在文本编辑器 —— 如 Vim —— 中打开一个文件。
图示

- 执行git rebase -i HEAD~4 或者 git rebase -i
- 下图就会去做选择哪些提交是需要rebase的,还可以决定顺序
pick代表的是未选择,Omit是选择的
进阶篇
远程分支变动,本地落后远程
常用场景解决方法
场景1(落后远程分支)
- 图示(远程分支是已经提交了C2,C3,而本地落后)

- 解决办法
将C3进行备份,然后撤销本地提交C3
- 备份C3
- 还原主分支:git reset --hard
- 拉取最新分支: git pull
- 解决冲突:将刚刚备份的修改进行合并
- 修改完以后,git commit
- 新建分支并跳转: git checkout -b new
- 提交新的分支 :git push

- 执行git reset --hard后

- 备份完
- git pull
- 合并
- git commit
- 新建分支: git checkout -b newbranch

- git push

本文围绕Git展开,介绍入门与进阶操作。入门部分涵盖提交记录、分支创建与切换、合并等操作,如git commit提交修改,git merge和git rebase合并分支;还介绍撤销变更、cherry - pick等操作。进阶部分针对远程分支变动、本地落后的场景给出解决办法。





当执行git checkout C3后,HEAD就脱离分支指向C3这次提交






1109

被折叠的 条评论
为什么被折叠?



