git回到几个提交在树枝上

时间:2011-08-12 16:19:58

标签: git git-branch

我对git很新,我检查了几个类似的问题,但是,我看到的那些略有不同,我没有对它们有很强的把握,所以我发布了自己的问题。

我是我项目的唯一开发人员。我喜欢经常使用我的代码进行实验,所以我认为使用版本控制系统会有所帮助。我有一个主分支,以及一个我正在研究的新功能的分支。分支出来之后,我在功能分支上做了一些我想要保留的提交,还有其他我想要丢弃的功能。与此同时,如果相关,主人是完整的。我想找到一种方法来了解我应该返回功能分支的多少提交,并找到一种方法来进行该提交。我可以通过查看提交消息来理解它,但我不知道在哪里看到它们。

4 个答案:

答案 0 :(得分:1)

你有几个选择。如果您要放弃更改,我建议您git revert。恢复有点像撤消工作;它基本上执行撤消现有提交的提交。关于这一点的好处是,如果你以后再次改变主意,你可以恢复还原!

如果你想恢复多个提交,听起来像你想要的那样,语法看起来像这样:

git revert branchname~5..branchname~3

这会将最后一次提交恢复到最后一次提交。 git revert将立即提交恢复。如果你想在提交之前看到它会做出的改变;然后你可以指定--no-commit,然后使用git commit稍后自己提交。

您还可以像这样还原单个提交:

git revert branchname~5

如果您想查看到目前为止所做的所有提交,可以使用git log

最后,使用git log您可以看到提交哈希。 git-revert也可以接受哈希,因此你不必计算它的修改数量。

git revert sha1hashhere

答案 1 :(得分:1)

由于你是独自工作,最简单的方法(并保持你的历史清洁)将是:

git reset --hard <commit hash of the commit before the commits you want to discard>

要获取哈希使用git log(或git log --pretty=oneline)如果您不想使用哈希,但知道它是HEAD的四次提交,则使用HEAD~4之类的符号

或者执行git rebase -i <hash as above>并删除代表您要删除的提交的行并执行rebase。

如果您想保留历史记录(以及如果您正在与他人合作,推送到远程等),git revert是更安全的解决方案。

答案 2 :(得分:0)

如果您可以删除不需要的提交

  1. 找到两个人的共同父母。 如果你知道你想要去的远方,你可以跳过这一步。
    git merge-base featureBranch masterBranch
  2. 查看您的featureBranch
    git checkout featureBranch
  3. 重新启动该分支,删除您不想要的提交(在编辑器弹出时删除包含您不需要的提交的行。
    git rebase -i sha_from_step_1或者您可以使用git rebase -i HEAD@{n},其中n是您想要的距离。
  4. 合并为主人 git merge master

答案 3 :(得分:-1)

一个回复= HEAD ^

两次提交= HEAD ^^

阅读mapage“man gitrevisions”