9. 拉取(远程仓库的)分支 git pull
以上,我们完成了代码克隆、新建分支、切换分支、文件追踪(暂存)、提交更新记录、分支推送,现在可以说是完成了 60% 的任务了,剩下 40% 要做的事是更新远程仓库的主分支 master 。
分为四步:
第一步,从 update-init_project-cpc 分支切换至 master 分支 (注意都是本地仓库);
git checkout master
第二步,master 分支拉取远程仓库,确保本地的 master 分支与远程仓库中的 master 文件状态保持一致;
git pull
注意:这里看似多了一步,实际上在真实开发过程中,远程仓库的 master 分支可能与我们最开始的不一样了,有更新,因此这一步是有必要的!
10. 合并分支 git merge <branch name>
第三步,将 update-init_project-cpc 分支上的代码合并进 master 分支。
注意,此时我们位于 master 分支,要合并谁,branch name(分支名) 就写谁,这里是 update-init_project-cpc。
git merge update-init_project-cpc
11. 查看未暂存的修改 git diff
一般情况下,可以正常合并。
但这里出现了一个错误,提示我们有一个文件(.gitignore)没有被提交。
原因是 vs code 发现 master 分支上的 .gitignore 文件可以做一些更好的修改,于是我遵循它的建议作了修改,但此时并未提交这些修改。
还记得吗?可以通过 git status 来查看本地仓库的文件状态:
git status
如果
git status
命令的输出对于你来说过于简略,而你想知道具体修改了什么地方,可以用git diff
命令。—— git-scm.com/book/zh/v2/…
git diff
git diff 命令可以看到文件修改的具体细节,而不仅仅是文件的名字。
接下来,文件添加追踪,放进暂存区,并提交更新。
git add .gitignore && git commit -m 'update .gitignore'
注意:上面的命令是连写方式,也可以像下面这样分开写:
git add .gitignore git commit -m 'update .gitignore' # 上面两条可合并为一条: # git add .gitignore && git commit -m 'update .gitignore'
当然,还需要推送到远程仓库才行。
git push
最后,重新进行代码合并。
git merge update-init_project-cpc
又出错了!自动合并时,提示 .gitignore 文件存在冲突。
12. 解决分支冲突
如上图所示,在 vs code 中,如果出现分支冲突,那么在这个发生冲突的文件中,绿色代表当前分支 (此时是 master 分支) 的内容,蓝色表示外来分支 (此时是 update-init_project-cpc 分支) 的内容。
根据实际情况,这里应该选择外来分支的内容,点击绿色范围上方的第二个选项:Accept Incoming Change。
这样,就解决了分支冲突。
注意:实际工作中,遇到的冲突可能远比这个复杂,有必要的情况下,请和团队成员确认合并结果,以免合并出错,造成代码丢失等问题。
接下来,重新添加文件放进暂存区、提交并推送。
git add .gitignore && git commit -m 'fix conflicts in .gitignore && git push'
好像推送成功了,但是又没有成功。
因为我把 && git push
命令写进了提交记录的字符串中,本来要写的是:
git add .gitignore && git commit -m 'fix conflicts in .gitignore' && git push
现在,已经提交了记录了,该怎么办?
重新修正提交信息即可。
13. 查看分支提交历史 git log
在修正提交信息之前,我们需要看一下提交历史,确认上一次的提交信息是否写错。
那么如何查看提交历史呢?
git log
我们可以看到最近一条提交记录的提交信息被误写成:fix conflicts in .gitignore && git push。
14. 修正上一次的提交 git commit —amend
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有
--amend
选项的提交命令来重新提交。——git-scm.com/book/zh/v2/…
git commit --amend
输入后,出现以下界面,第一行就是刚刚的提交信息:
此时,按下 i 键进入 insert 模式:
移动光标,修改第一行的提交信息:
完成后,按下 Esc 键,退出 insert 模式,底部的”插入“字样消失。
此时,直接键入 Linux 命令 —— :wq
,保存编辑并退出。出现以下界面说明修改成功:
这时再次使用 git log 查看提交历史。
没有问题。
终于,正式来到最终章——将合并好的 master 分支推送至远程仓库(git push),并使用 git status 再次查看文件状态:本地仓库的分支已更新到远程仓库,也确实没有东西提交了,本地和远程仓库的内容保持一致。
至此,完成了初始化 Vue 脚手架的任务(相关分支:update-init_project-cpc)。
15. Summary
如果你边读边做,我相信你应该会掌握以下技能:
- 1.将一个远程仓库克隆到本地
- 2.在本地新建分支
- 3.切换(检出)分支
- 4.追踪文件,放进暂存区
- 5.提交更新
- 6.推送分支
除此之外,还包括分支合并、分支冲突的解决、提交信息的修改等内容。