git 解决冲突 命令_git采用 ours/theirs 自动解决冲突

5054addc3261ea545a35c7b647dc992c.png

背景

git冲突一般是修改了同一个文件导致的。

解决方法

确定你需要的是哪个仓库的文件,然后执行相应的命令即可。

保留当前分支代码

git checkout --ours {codefiles}

保留要合并分支代码

git checkout --theirs {codefiles}

1 新建测试目录,新增readme.md文件,文件内容为"hello"。保存后,新建两个分支分别为feature,develop。

➜ git.worker git init
Initialized empty Git repository in /home/kim/worker/git.worker/.git/
➜ git.worker git:(master) echo "hello" > readme.md
➜ git.worker git:(master) ✗ cat readme.md
hello
➜ git.worker git:(master) ✗ git add .
➜ git.worker git:(master) ✗ git commit -m "create readme.md"
[master (root-commit) 00b953e] create readme.md
1 file changed, 1 insertion(+)
create mode 100644 readme.md
➜ git.worker git:(master) git branch feature
➜ git.worker git:(master) git branch develop

2 在feature 分支追加内容 "我是feature", 在develop 分支追加内容 "我是develop"

➜ git.worker git:(master) git checkout feature
Switched to branch 'feature'
➜ git.worker git:(feature) echo "我是feature" >> readme.md
➜ git.worker git:(feature) ✗ git add .
➜ git.worker git:(feature) ✗ git commit -m "update readme.md"
[feature d6fa79b] update readme.md
1 file changed, 1 insertion(+)➜ git.worker git:(feature) git checkout develop
Switched to branch 'develop'
➜ git.worker git:(develop) echo "我是develop" >> readme.md
➜ git.worker git:(develop) ✗ git add .
➜ git.worker git:(develop) ✗ git commit -m "update readme.md"
[develop 3576b42] update readme.md
1 file changed, 1 insertion(+)

3 测试

3.1 git merge

develop merge feature ,git checkout --ours 保留 develop 分支内容 ,反之亦然。

➜ git.worker git:(develop) git merge feature
Auto-merging readme.md
CONFLICT (content): Merge conflict in readme.md
Automatic merge failed; fix conflicts and then commit the result.
➜ git.worker git:(develop) ✗ git checkout --ours .
➜ git.worker git:(develop) ✗ cat readme.md hello
我是develop

3.2 git rebase

存在变基,develop rebase feature 后,git checkout --ours 保留 我是feature ,反之亦然。

➜ git.worker git:(develop) git rebase feature
First, rewinding head to replay your work on top of it...
Applying: update readme.md
Using index info to reconstruct a base tree...
M readme.md
Falling back to patching base and 3-way merge...
Auto-merging readme.md
CONFLICT (content): Merge conflict in readme.md
error: Failed to merge in the changes.
Patch failed at 0001 update readme.md
Use 'git am --show-current-patch' to see the failed patch
Resolve all conflicts manually, mark them as resolved with
"git add/rm ", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
➜ git.worker git:(d6fa79b) ✗ git checkout --ours .
➜ git.worker git:(d6fa79b) ✗ cat readme.md hello
我是feature

3.3 git cherry-pick

develop cherry-pick feature ,git checkout --ours 保留 develop 分支内容 ,反之亦然。

➜ git.worker git:(develop) git cherry-pick feature
error: could not apply d6fa79b... update readme.md
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add ' or 'git rm '
hint: and commit the result with 'git commit'
➜ git.worker git:(develop) ✗ git checkout --ours .
➜ git.worker git:(develop) ✗ cat readme.md hello
我是develop

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值