仅结合本人使用场景, 方法可能不是最优的
1. 忽略本地修改, 强制拉取远程到本地
主要是项目中的文档目录, 看的时候可能多了些标注, 现在远程文档更新, 本地的版本已无用, 可以强拉
- Git fetch --all
- Git reset --hard origin/dev
- Git pull
关于 commit 和 pull 的先后顺序, commit--》pull--》push 和 pull--》commit--》push 的顺序, 两种情况都遇到过代码冲突. 解决方法如下:
2. 未 commit 先 pull, 视本地修改量选择 revert 或 stash
// 场景
同事 有新提交
我 没有 pull -> 修改了文件 -> pull -> 提示有冲突
2.1 本地修改量小
如果本地修改量小, 例如只修改了一行, 可以按照以下流程
-> revert(把自己的代码取消) -> 重新 pull -> 在最新代码上修改 -> [pull 确认最新] -> commit&push
2.2 本地修改量大, 冲突较多
有两种方式处理
-> stash save(把自己的代码隐藏存起来) -> 重新 pull -> stash pop(把存起来的隐藏的代码取回来 ) -> 代码文件会显示冲突 -> 右键选择 edit conficts, 解决后点击编辑页面的 mark as resolved-> commit&push
-> stash save(把自己的代码隐藏存起来) -> 重新 pull -> stash pop(把存起来的隐藏的代码取回来 ) -> 代码文件会显示冲突 -> 右键选择 resolve conflict -> 打开文件解决冲突 ->commit&push
另外, 由于我是通过 IDEA 来操作 Git 的, 所以显示冲突时, 我是在图形化界面操作的示意如下
3. 已 commit 未 push, 视本地修改量选择 reset 或直接 merge
// 场景
同事 有新提交
我 没有 pull -> 修改了文件 -> commit -> pull -> 提示有冲突
3.1 修改量小, 直接回退到未提交的版本(可选择是否保存本地修改)
如果本地修改量小, 例如只修改了一行, 可以按照以下流程
-> reset(回退到未修改之前, 选 hard 模式, 把自己的更改取消) -> 重新 pull -> 在最新代码上修改 -> [pull 确认最新] -> commit&push
ps: 实际上完全可以采取直接 merge 的方法, 这里主要是根据尽量避免 merge 的原则, 提供一种思路
3.2 修改量大, 直接 merge, 再提交(目前常用)
-> commit 后 pull 显示冲突 -> 手动 merge 解决冲突 -> 重新 commit -> push
来源: https://www.jb51.net/article/191655.htm