git偏拉

时间:2010-06-06 06:40:55

标签: git

我正在维护一个存储库 A

另一位撰稿人已将 A 克隆到另一个存储库 B

后来,另一位撰稿人将文件 F 添加到 B 中,这与我无关。

现在我想将 B 中的更改合并回 A ,但不提交 F 。怎么做?

3 个答案:

答案 0 :(得分:8)

从那里拿起头和樱桃挑选。

git remote add jessica git://jessica.com/repo.git
git fetch jessica master
git cherry-pick 235a5
...

答案 1 :(得分:2)

你可以这样做:

git checkout <remote_branch> <paths>

其中<paths>是您真正想要的文件。如果你想要的文件位于你没有的文件的单独目录中,这是最简单的,因为你可以使用通配符。

或者,尝试:

git pull --squash

这可能有点手动,因为您必须在提交之前去删除您不想要的文件,但如果您不想要的文件被添加为,则它也是唯一的方法。改变了想要的文件的同一提交的一部分。

(相当重要的)缺点是你丢失了远程分支的提交历史。

答案 2 :(得分:1)

简短的回答是你不能用git“部分拉”。

但是,您可以从 B 中提取更改,然后使用git-rebase(1)或git-filter-branch(1)修改包含 F的提交 在推送之前 A 。请记住,这会改变(相对于 B )您修改的提交的哈希值,因此未来在 B 上尝试的合并将比通常更不智能。

看看the Pro Git chapter on Rewriting History