我有两个分支,"private"和"public"。我在"private"上工作,并且定期地,我想要替换"public"分支中的所有内容,以便拥有"private"文件夹中的干净拷贝。
由于我不想让"private"的历史记录进入"public",所以我使用git merge --squash
,但我仍然需要逐个手动解决合并文件。有更好的方法吗?
我有两个分支,"private"和"public"。我在"private"上工作,并且定期地,我想要替换"public"分支中的所有内容,以便拥有"private"文件夹中的干净拷贝。
由于我不想让"private"的历史记录进入"public",所以我使用git merge --squash
,但我仍然需要逐个手动解决合并文件。有更好的方法吗?
git merge -X theirs private
这就是你要找的。当然,你可以像你想要的那样添加--squash
。
ours
合并策略(而不是策略选项),如其他提交中所指出的:
1.a 假设您在“private”分支上(否则,请执行git checkout private
)
1.b git merge -s ours public
1.c git checkout public
1.d git merge --ff-only private
1.e (可选:现在两个分支都指向合并提交;如果要使“private”指向合并前的提交,请执行:)git checkout private; git reset --hard private@{1}
(注意,这使用了reflog,并且只有在此期间没有更改“private”时才能这样工作)git checkout public
)
2.b git merge --no-commit private
将准备一个合并提交,但无论是否存在合并冲突,都会在提交之前停止
2.c git checkout -f private -- .
以检出“private”的当前状态
2.d git add .
标记冲突为已解决(如果有)
2.e git commit
保存合并提交;“public”现在具有与“private”完全相同的内容。--squash
开关。