如何使旧的提交对象成为最新的?

时间:2012-07-13 08:54:50

标签: git github

这是我的Git状态。

enter image description here

由于一些奇怪的原因,mastertask-e分支被打破。他们现在无法建立 只有6f374ed94ad7f04b1f7a2ca2019374bb7785d9e6提交才有效。 enter image description here

我想将此提交作为master分支的最新提交。我该怎么办?

2 个答案:

答案 0 :(得分:1)

您的问题并不完全清楚,但我认为您想要的是添加一个新提交,其源代码与旧提交6f374ed9完全相同。 (换句话说,您希望避免重写历史记录,因为显然mastertask-e已被推送到GitHub。)这需要在git中执行几个步骤,这在this question中有所描述。总而言之,首先要确保没有未提交的更改(即git status是干净的)。然后你需要这样做:

# Switch to the branch you want to add the commit to:
git checkout master
# (... you can merge the result to the other branch later)

# Move the master branch back to the earlier, good commit, forcing the
# working tree and the index to match:
git reset --hard 6f374ed

# Use git reset --soft to point the master branch back to where it was
# originally, but leave the working tree and index as they were at 6f374ed
git reset --soft HEAD@{1}

# Commit the result:
git commit -m "Reverting state back to 6f374ed9"

然后,要更新task-e,您可以执行以下操作:

git checkout task-e
git merge master

答案 1 :(得分:0)

您可以使用git reset,但它会重写已公开推送的历史记录,因此不建议这样做。我使用git revert:它允许你恢复提交,即。它创建一个与提交相反的提交。这样,您可以取消提交并返回到您想要的状态,而无需重写历史记录。