我正在维护一个存储库 一个。
克隆了另一个贡献者 一个 到另一个存储库 乙。
后来,其他贡献者添加了文件 F,与我无关,进入 乙。
现在我想合并更改 乙 回到 一个,但没有提交 F。怎么办?
我正在维护一个存储库 一个。
克隆了另一个贡献者 一个 到另一个存储库 乙。
后来,其他贡献者添加了文件 F,与我无关,进入 乙。
现在我想合并更改 乙 回到 一个,但没有提交 F。怎么办?
从那里拿起头和樱桃挑选。
git remote add jessica git://jessica.com/repo.git
git fetch jessica master
git cherry-pick 235a5
...
你可以这样做:
git checkout <remote_branch> <paths>
哪里 <paths>
是你真正想要的文件。如果您想要的文件位于不同的文件的单独目录中,这是最简单的,因为您可以使用通配符。
或者,尝试:
git pull --squash
这可能有点手动,因为你必须在提交之前删除你不想要的文件,但如果你不想要的文件作为一部分被添加,它也是唯一的方法。同样的提交改变了你的文件 做 想。
(相当重要的)缺点是你丢失了远程分支的提交历史。
简短的回答是你不能用git“部分拉”。
但是,您可以从中提取更改 乙,然后使用git-rebase(1)或git-filter-branch(1)修改包含的提交 F 在推之前 至 一个。请记住,这将改变(相对于 乙)您修改的提交的哈希值,因此将来尝试合并 乙 会不像往常那么聪明。
看一眼 关于重写历史的Pro Git章节。