我在github上有一个git repo。
有人采取了回购(复制,不分叉;我不完全确定如何或为什么),在其中大约四分之一的文件上做了大量工作,然后上传了一个新的git repo给他们github中的自己的区域只包含一个提交 - 初始提交,包含所有内容。
如果我尝试git merge,那么每个文件都会出现冲突;它认为我们都是从头开始添加文件。我们当然有。
我可以手动对它们进行差异和合并。但我真的不必这样做。
我已将他的回购添加为遥控器。
是否有明显的方法只合并已更改的文件?
答案 0 :(得分:0)
可能的解决方案:
git fetch https://github.com/blah/other-repo.git <branch> && git cherry-pick <commit>
它的行为类似于合并,如果出现冲突,您必须手动解决它们,但仅限于修改过的文件。
答案 1 :(得分:0)
是的,看起来新提交中的文件权限已更改为755;这就是导致一切被标记为已更改的原因。
How do I make Git ignore file mode (chmod) changes?建议使用
解决问题git config core.fileMode false
不幸的是,这对我不起作用;可能是因为它只查看工作树中的更改而不是提交中的更改。
相反,我进入新的分支并做了以下
git diff --summary master | grep 'mode change 100644 => 100755' | cut -d' ' -f7- | xargs -I {} chmod -x {}
然后关闭新分支中的所有可执行位。
git commit -a
git log --oneline
2f80315 Changing permissions to match master...
c7896aa The Commit From The Other Fella
git checkout master
git cherry-pick 2f80315
git commit --allow-empty
确保未编辑的每个文件的所有权限都匹配,此时为
git diff newfellasbranch
向我展示了他们所做的改变。我很开心,所以
git merge newfellasbranch --strategy-option theirs
可能有一种更简单的方法。