从git分支恢复更改子集

时间:2016-04-19 20:45:49

标签: git

我有两个不同的git分支: master experimental 。两个分支都有自己的更改和提交。在实验分支中,我尝试了各种不同的东西(通过不同的文件和提交)。

现在,我想恢复实验分支中的所有更改,只保留一个功能。我想保留(修剪过的)实验分支,并继续努力,直到它准备好合并到

到目前为止,我在两个分支之间做了一个差异(看到变化)然后做了'' git checkout master''对于实验中的文件,我想恢复为 master

有更有效的方法吗?

实验分支中除少数文件以外的所有文件中的更改还原为的最简单方法是什么?

4 个答案:

答案 0 :(得分:3)

  

将实验分支中除少数文件以外的所有文件中的更改还原为主要内容的最简单方法是什么?

master创建一个新分支,并从experimental签出您想要的几个文件:

git checkout -b exp2 master
git checkout experimental -- path/to/file/or/dir

此时,您处于新分支exp2,与master大致相同,但checkoutexperimental的少数特定文件/目录除外。< / p>

答案 1 :(得分:0)

如果所有&#34;各种不同的东西&#34;你在实验中尝试过的是他们自己的单独提交,那么这只是git rebase -i的一个简单问题,只是删除那些你不想要的提交。

答案 2 :(得分:0)

首先使用当前的主人来修改你的实验。

gir rebase master

在此之后,所有来自实验的提交都将在主提交之上。

现在,您可以在git reset master之后将所有提交重置为当前主数据,之后实验中的所有提交都将被删除,但您的工作文件不会被触及。 现在,您可以创建包含所需更改的新提交,并在上次运行git reset --hard以清除未经注释的更改。

答案 3 :(得分:0)

非常类似于janos建议但确保您首先添加提交 实验性分支上的所有更改,然后结帐即可。一旦在主服务器上检出您希望从实验分支进行更改的所有文件。然后,您将拥有master上的所有内容,您可以再次添加 commit 更改。 git流程如下所示:

branch: experimental >$ git add .
branch: experimental >$ git commit -m "including ALL of my changes"
branch: experimental >$ git checkout master
branch: master       >$ git checkout experimental fileWanted1.py fileWanted2.py
branch: master       >$ git add .
branch: master       >$ git commit -m "master now includes all my desired changes from experimental"