VS Code执行git pull遇冲突,如何对比本地与他人变更并处理?
Git拉取冲突处理:对比代码变更、选择保留/回退方法
一、先搞定本地未提交的修改
你现在碰到的问题是本地有未提交的修改,直接拉远程代码会被覆盖,得先处理本地变更:
- 暂存本地修改:不想立刻提交的话,敲
git stash把当前修改暂存起来,之后随时能恢复,执行完就能正常拉代码了。 - 提交本地修改:如果改完了,直接
git add .+git commit -m "你的提交说明",提交完再拉远程代码。
二、对比本地和远程的代码差异
处理完本地变更拉完代码后,用这些方法看两边的修改:
- 看本地当前分支和远程development分支的具体代码差异:
git diff origin/development - 看远程分支的提交记录:
git log --oneline origin/development - 看远程比本地多了哪些提交:
git log --oneline ..origin/development;反过来想看本地比远程多的提交:git log --oneline origin/development.. - 在VS Code里更直观:打开源代码管理面板(Ctrl+Shift+G),点“比较”按钮,直接看文件的差异对比。
三、选择保留哪方变更或合并修改
1. 直接用远程代码覆盖本地
如果想放弃本地所有修改,直接敲git reset --hard origin/development,注意这个操作会彻底删掉本地未提交的修改,想清楚再用。
2. 合并双方修改,手动解决冲突
拉代码时如果出现合并冲突(暂存或提交后拉取可能会触发),VS Code会自动标出冲突文件。打开文件后能看到:
<<<<<<< HEAD下面是你本地的代码=======是本地和远程代码的分隔线>>>>>>> [远程分支哈希值]下面是远程的代码
你手动编辑文件,留下需要的代码,删掉冲突标记,然后git add <冲突文件名>,最后git commit完成合并。
3. 恢复之前暂存的本地修改
如果之前用了git stash暂存修改,拉完远程代码后,敲git stash pop就能恢复。如果恢复时出现冲突,按上面的方法手动解决就行;想看看暂存了啥内容,用git stash list看列表,git stash show stash@{0}看具体修改。
4. 放弃拉取,回到之前状态
如果不想拉远程代码了,想退回到拉取前的状态:要是已经进入合并流程,敲git merge --abort;要是只是暂存了修改,敲git stash apply恢复就行。
内容的提问来源于stack exchange,提问作者Agnum
相关产品推荐
相关产品推荐

