git:从一个分支检出所有文件(但保留在当前分支)

8
我可以使用git checkout branchname filename将一个特定的文件从分支检出到当前分支。但我如何将branchname中的所有文件都检出到当前分支呢? git checkout branchname并不适合我的需求,因为那会导致我离开当前分支。 git merge branchname也不适合我的需求,因为我不想立即创建一个提交。
谢谢!
2个回答

13
git reset --hard branchname

请注意,这将消除当前分支中未在另一个分支中的任何更改以及可能存在的未提交更改。它将使您保持在当前分支上,但将其更改为指向branchname引用的提交。

如果您希望不更改指向的提交,请检出整个树:

cd `git rev-parse --show-toplevel`
git checkout branchname .

这相当于针对整个代码库运行 git checkout branchname filename


另一种不更改指向提交的方法是在操作后将其放回原处:在 git reset --hard $branchname(甚至 git checkout $branchname)之后,执行 git reset --soft HEAD@{1};或者完全跳过这两个步骤,直接使用低级别的 git read-tree -um HEAD $branchname - jthill
1
请注意,如果您想使您的状态与目标分支匹配,但不更改当前分支的历史记录(这就是我试图做的),您还需要担心在完成git checkout branchname .步骤后在目标分支中删除的文件。我通过接下来使用git diff branchname --name-only | xargs git rm解决了这个问题。 - Giftiger Wunsch

3

从另一个分支检出所有已更改但未提交的文件的最简单解决方案是:

git checkout branchname .

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接