问题描述
李四和王五同时下载了dev分支代码,main.cpp代码为:
#include <stdio.h>
void main(void) {
printf("hello");
}
李四修改代码后提交并push,李四修改的代码
#include <stdio.h>
void main(void) {
printf("hello 李四");
}
同时王五也修改了代码
#include <stdio.h>
void main(void) {
printf("hello 王五");
}
王五修改提交后也push,但是push报错,代码冲突了
当多个开发者同时对同一分支的同一文件进行修改并提交时,常常会出现代码冲突。李四和王五的情况就是如此,他们都修改了 main.cpp
文件并尝试 push 到 dev 分支。李四的修改已经成功 push,而王五的 push 由于代码冲突而失败。
解决冲突的方法
1、手动解决冲突
1)王五 pull 最新的 dev 分支代码:
git pull origin dev
2)Git 会提示冲突,并将冲突的部分标记在文件中。编辑 main.cpp
文件,可以看到类似下面的内容:
<<<<<<< HEAD
#include <stdio.h>
void main(void) {
printf("hello 李四");
}
=======
#include <stdio.h>
void main(void) {
printf("hello 王五");
}
>>>>>>> dev
3)手动修改冲突部分的代码,例如:
#include <stdio.h>
void main(void) {
printf("hello 李四和王五");
}
4)保存文件,添加并提交解决后的代码:
git add main.cpp
git commit -m "Resolved merge conflict between 李四 and 王五"
git push origin dev
2、使用 git merge 工具
1)王五 pull 最新的 dev 分支代码:
git pull origin dev
2)使用 Git 提供的合并工具(如 git mergetool
)来解决冲突:
git mergetool
3)解决冲突后,保存并关闭合并工具,添加并提交解决后的代码:
git add main.cpp
git commit -m "Resolved merge conflict using mergetool"
git push origin dev
3、重新基于最新代码修改并提交
1)王五 stash 他的更改:
git stash
2)pull 最新的 dev 分支代码:
git pull origin dev
3)应用 stash 的更改:
git stash pop
4)解决任何潜在的冲突,并确认更改:
git add main.cpp
git commit -m "王五的更改重新基于最新代码"
git push origin dev
4、创建新的分支并进行变基操作
1)王五创建一个新的分支:
git checkout -b new-branch
2)pull 最新的 dev 分支代码:
git pull origin dev
3)在新分支上进行变基操作:
git rebase dev
4)解决冲突,添加并提交解决后的代码:
git add main.cpp
git rebase --continue
5)将新分支的代码合并回 dev 分支:
git checkout dev
git merge new-branch
git push origin dev
每种方法都有其优点,具体选择哪种方法可以根据实际情况和团队的工作流程决定。通常情况下,手动解决冲突是最常用和最灵活的方法。
标签:git,代码,dev,王五,GPT,main,void From: https://www.cnblogs.com/aliving/p/18279426