在实际开发过程中有以下2中情况
1. 本地修改后,未执行 git commit, 当前的修改处于unstage 跟 stage的时候
- 执行 git pull 拉取最新代码,会提示冲突
- 执行 git stash //会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录, 不会存储 Untracked files: 的文件
- git pull
- git stash apply stash@{0}
- 解决冲突
vi common/readme
<<<<<<< Updated upstream 跟 ======= 之间的是git pull 下来的代码, ======= 跟>>>>>>> Stashed changes 是本地修改的代码
- 解决冲突后,执行 git add common/readme; git commit; git push
2. 本地修改后,已经执行了 git commit,并且希望保留本地的commit 信息
- 本地的提交记录
- 远程仓库的记录
可以看到 在 commit id: efdba2e 之后,远程仓库更新了2个提交,然后本地提交了2个。
此时我们希望将本地修改的 提交到远程的 f474912之后,并且保留本地提交的 commit 信息,我们需要在本地仓库进行以下操作:
- git pull --rebase
git提示我们有冲突 - 解决冲突
vi commom/readme
<<<<<<< HEAD 跟 ======= 是git pull 下来的代码 ,======= 跟 >>>>>>> [dir1] common readme. 之间的是本地修改的代码
- 解决冲突后执行: git add common/readme; git rebase --continue
- git log 查看 发现 本地修改的 已经 提交到远程的 f474912之后
- git push