我正在维护一个存储库 A 。
另一位撰稿人已将 A 克隆到另一个存储库 B 。
后来,另一位撰稿人将文件 F 添加到 B 中,这与我无关。
现在我想将 B 中的更改合并回 A ,但不提交 F 。怎么做?
答案 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 上尝试的合并将比通常更不智能。