我有一个名为app.js的主分支。我在一个实验分支上对这个文件进行了更改。

我只想将实验中对app.js所做的更改应用到master分支。


当前回答

对于所有喜欢避免未知的git命令或害怕破坏某些东西的人,还有一个简单的解决方案:

检查文件所在的分支将该文件复制到计算机上的其他位置签出到文件需要到达的分支将文件粘贴到位

可能需要比相应的git命令更长的时间。。。但它有效且易于理解

其他回答

git checkout branch_name file_name

例子:

git checkout master App.java

如果分支名称中有句点,则此操作将不起作用。

git checkout "fix.june" alive.html
error: pathspec 'fix.june' did not match any file(s) known to git.

如果您想要来自特定提交(任何分支)的文件,请说06f8251f

git checkout 06f8251f path_to_file

例如,在Windows上:

git checkout 06f8251f C:\A\B\C\D\file.h

另一种方法是创建具有差异的补丁,并将其应用于主分支例如。假设您开始使用app.js之前的最后一次提交是00000aaaa,而包含所需版本的提交是00000bbbbb

你在实验分支上运行这个:

git diff 00000aaaaa 00000bbbbb app.js > ~/app_changes.git

这将为app.js创建一个包含这两个提交之间所有差异的文件,您可以在任何地方应用该文件。您可以将该文件保存在项目之外的任何位置

然后,在master中,您只需运行:

git apply ~/app_changes.git

现在,您将看到项目中的更改,就像您手动进行了更改一样。

对于所有喜欢避免未知的git命令或害怕破坏某些东西的人,还有一个简单的解决方案:

检查文件所在的分支将该文件复制到计算机上的其他位置签出到文件需要到达的分支将文件粘贴到位

可能需要比相应的git命令更长的时间。。。但它有效且易于理解

或者,如果您想要其他分支的所有文件:

git checkout <branch name> -- .