推送到git后还原提交

时间:2019-10-17 07:08:24

标签: git

我犯了很多我不想使用的东西,并且已经使用

git checkout“”

回到我想要的位置。如何删除其他?以及如何摆脱超然的HEAD?我已经推送了所有提交,我想这对于我已经看到的解决方案更加困难。

4 个答案:

答案 0 :(得分:0)

您可以推送所有提交的内容, 然后返回到您想要的任何版本, git branch一个新的分支, 最后,您可以将版本推送到新分支。

答案 1 :(得分:0)

当然这是一种可选方式。 完成现在所需的版本后,您可以合并新的分支代码以与其他提交进行母版化。

答案 2 :(得分:0)

如果您按下主分支: 您可以通过添加新的提交(包含更改的反向差异)来恢复更改,即使用git revert <unwanted_commit_number>

如果您按下“正在进行的工作”分支:

  • 您可以如上所述使用还原(历史记录安全)
  • 您可以使用git commit --amend 修改最后一次提交,以添加/删除一些更改并强制推送(/!\重写历史记录)
  • 您可以删除您的提交,即使用交互式变基git rebase -i <base_commit_number>^。在交互式窗口中删除不需要的提交并强制推送(/!\重写历史记录)
  • 您可以使用git reset ---hard <commit_number>返回到先前的状态并强行推送(/!\重写历史记录)

退出分离的HEAD状态:

  • 如果您来自git checkout <commit_number>git checkout remote/some_branch之类的结帐帐户,则可以使用git branch <branch_name>

  • 新建一个分支
  • 否则,您可能正在进行 merge rebase 。使用git merge --abortgit rebase --abort移回到上一个分支

答案 3 :(得分:0)

这里是一个选择:

// tell those impacted not use name_of_old_branch 
git checkout -b feature/yeah1 // create a new branch from where you are
git push // push new branch
// tell those impacted to use new branch
// you can stop here and enjoy life
git push -d origin name_of_old_branch // delete remote branch
git branch -d name_of_old_branch  // delete local
//enjoy life

请注意,确实删除git中的内容需要做更多的工作。

相关问题