不要逐个签出git签出文件,而是签出整个提交
我有一个情况,我致力于一个分支B1。在提交中,我有几个文件。现在我想把这些文件复制到分支B2 实际上,我正在对当前分支B2上的提交中的每个文件使用以下命令:不要逐个签出git签出文件,而是签出整个提交,git,bitbucket,git-commit,git-checkout,Git,Bitbucket,Git Commit,Git Checkout,我有一个情况,我致力于一个分支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 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)
要获取在提交
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)
我忘了提到所有文件不在同一目录下,也不一定具有相同的扩展名我忘了提到所有文件不在同一目录下,也不一定具有相同的扩展名您想获得“B1中的完整repo”吗?或者“仅在B1上的上次提交中修改的文件”?是否要获得“B1中的完整回购”?或者“只有在B1上的上次提交中修改的文件”将尝试,如果works将其标记为最佳答案,则将尝试,如果works将其标记为最佳答案