Git软重置的后果

s3fp2yjn  于 2022-09-21  发布在  Git
关注(0)|答案(1)|浏览(212)

我希望有人能帮忙,因为我对GIT还很陌生。假设我在主分支机构上有以下合并的PR:A->B->C->D->E-F

我需要把它恢复到提交C时的状态,因为D E F有需要修复的问题。因此,我将C软重置回另一个分支(恢复D、E、F),然后将该分支合并回Main。现在我已经提交了恢复D、E和F.的G。A->B->C->D->E-F->G

两个问题:

1.其他人现在可以轻松地从Main分支,做他们的工作,然后毫无问题地融入进来吗?
1.我如何着手修复错误的提交?我应该像现在这样在主服务器上创建一个新的分支,然后重做所有更改吗?

如果有任何帮助,我很感激。

htzpubme

htzpubme1#

很多事情。首先,图表应该是A<-B<-C...,因为在git儿童修订中指向他们的父母,而不是反过来。然后,如果您执行了软重置(git checkout F; git reset --soft C; git commit -m "reverting"),则这是不正确的。C之后的修订版与F的内容相同,这不是您想要的,对吧?

也许你想要做的是:

git checkout C
git reset --soft F
git commit -m "Reverting to C" 

# this revision we just created has the content of C and its parent is F....

# in other words, it reverts changes introduced by D, E and F

# feel free to set a branch over here push and merge

重点问题。

1-是。一般规则是,如果您不重写分支的历史,人们应该能够继续在分支上工作。正是当人们开始重写共享分支时,事情才会变得疯狂。当然..。这意味着人们将不会在与D、E和F相关的事情上工作。如果它与这些修订相关,那么冲突预计会在以后发生,因为你正在收回这些更改。

2-让我们假设它们中的每一个都是它自己的一个功能,并且依赖于其他两个不完整的修订.你想从第一个版本开始工作……所以,假设我想要处理E:

git checkout -b branchE E # create a feature branch on E
git commit --amend --no-edit # make git believe that this is something that has not been merged yet
git rebase master # rebase on top of master

# now you can continue working so that you get the change working correctly on this branch

.
.

# when you are done with it, push and create a PR and merge.

相关问题