签出一个完整的提交,而不是一个接一个地签出git文件



我有一种情况,我提交了一个分支B1。在提交中,我有几个文件。现在,我希望将这些文件复制到分支B2。

事实上,我正在对我当前分支B2上提交的每个文件使用以下命令:

$ git checkout B1 path/to/file1
$ git checkout B1 path/to/file2
......
$ git checkout B1 path/to/fileN

我想应该有一个语法允许我直接签出从分支B1到分支B2的特定提交。我尝试了几种解决方案,但它们正在重写我不想要的整个分支,也不想要所有文件的历史记录。我只想要特定提交中文件的状态。重写不是问题。

如何做到这一点?

git checkout B1 .

您必须指定一个路径才能获得所需内容,因此.是一个指定当前目录的路径。

要获得提交xyz中修改的文件列表,请运行:

# get only the names for the diff between xyz's parent and xyz :
git diff --name-only xyz^ xyz

如果你只想签出这些文件:

git checkout B1 -- $(git diff --name-only xyz^ xyz)
# for example : the files modified in the last commit on B2 :
git checkout B1 -- $(git diff --name-only B2^ B2)

相关内容

  • 没有找到相关文章

最新更新