我需要合并我的网站副本只有一个提交

时间:2015-04-16 15:22:10

标签: git github merge

我在github上有一个git repo。

有人采取了回购(复制,不分叉;我不完全确定如何或为什么),在其中大约四分之一的文件上做了大量工作,然后上传了一个新的git repo给他们github中的自己的区域只包含一个提交 - 初始提交,包含所有内容。

如果我尝试git merge,那么每个文件都会出现冲突;它认为我们都是从头开始添加文件。我们当然有。

我可以手动对它们进行差异和合并。但我真的不必这样做。

我已将他的回购添加为遥控器。

是否有明显的方法只合并已更改的文件?

2 个答案:

答案 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

可能有一种更简单的方法。