[英]Revert subset of changes from git branch
我有两个不同的git分支: master和experimental 。 两个分支都有自己的更改和提交。 在实验分支中,我尝试了各种不同的东西(通过不同的文件和提交)。
现在,我想恢复实验分支中的所有更改,只保留一个功能。 我想保留(修剪过的)实验分支,并继续努力,直到它准备好合并为主 。
到目前为止,我在两个分支之间做了一个差异(看到变化)然后在实验中的文件中做了''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.