繁体   English   中英

从git分支恢复更改子集

[英]Revert subset of changes from git branch

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

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

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

有更有效的方法吗?

实验分支中的几个文件中的所有文件还原为master的最简单方法是什么?

将实验分支中的几个文件中的所有文件还原为master的最简单方法是什么?

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

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

此时,您在新分支exp2 ,除了您从experimental checkout的几个特定文件/目录外,它与master完全相同。

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

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

gir rebase master

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

现在你可以通过git reset master重置你对当前master的所有提交,之后你的所有实验提交都会被droped但你的工作文件不会被触及。 现在,您可以创建具有所需更改的新提交,并在上次运行git reset --hard以清除未经注释的更改。

与janos建议的非常相似,但要确保首先在实验分支上添加提交所有更改,然后结帐主服务器 一旦在主服务器上检出您希望从实验分支进行更改的所有文件。 然后,您将拥有master上的所有内容,您可以再次添加提交更改。 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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM