我对git很新,我检查了几个类似的问题,但是,我看到的那些略有不同,我没有对它们有很强的把握,所以我发布了自己的问题。
我是我项目的唯一开发人员。我喜欢经常使用我的代码进行实验,所以我认为使用版本控制系统会有所帮助。我有一个主分支,以及一个我正在研究的新功能的分支。分支出来之后,我在功能分支上做了一些我想要保留的提交,还有其他我想要丢弃的功能。与此同时,如果相关,主人是完整的。我想找到一种方法来了解我应该返回功能分支的多少提交,并找到一种方法来进行该提交。我可以通过查看提交消息来理解它,但我不知道在哪里看到它们。
答案 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)
如果您可以删除不需要的提交
git merge-base featureBranch masterBranch
git checkout featureBranch
git rebase -i sha_from_step_1
或者您可以使用git rebase -i HEAD@{n}
,其中n是您想要的距离。git merge master
答案 3 :(得分:-1)
一个回复= HEAD ^
两次提交= HEAD ^^
阅读mapage“man gitrevisions”