我需要git
的一些帮助。我现在的“大师”有一些问题,所以我从一段时间后检查一个我知道有用的版本。
$ git checkout <hash>
我们称之为“上一个”。然后我对“previous”进行了编辑,并按照我想要的方式工作。然后我提交并将“previous”推到了git repo。当然,在回购时,“大师”仍然是老问题的“大师”。我想我要做的就是将计算机上的“previous”(使用新编辑)转换为“master”,然后将其推送到repo。我怎么做?我已经阅读rebase
并尝试过,但这不起作用。我收到错误消息“无法重新绑定:您有未分级的更改。”
答案 0 :(得分:3)
据推测,您使用git checkout <hash>
所做的就是获得一个新的独立头部。
(可选)保留错误主文件的引用(称为oldmaster
):
git branch oldmaster master
删除主参考:
git branch -D master
使您当前的工作分支(分离的HEAD)成为新的主分支。
git checkout -b master
然后,提交您的更改(可能在需要时添加新文件之后):
git commit ...
答案 1 :(得分:1)
我不确定你必须在“主人”中走多远,但你可以一直git revert <hash>
回到你分支的那一点。这将“撤消”所有提交,而不会丢失历史记录。
这篇文章可能会对您有所帮助:Revert multiple git commits
答案 2 :(得分:0)
也许尝试运行git checkout master; git status;
并查看您是否确实在主分支中有未分级的更改。如果是这种情况,只需在您的rebase之前提交或者隐藏这些更改。您还应验证是否已在上一个分支上成功提交了更改。
答案 3 :(得分:0)
回归主分支的一种简单方法是使用reset:
git checkout master
git reset --hard <hash>
然后你的分支将通过一些提交落后于原始主人。修复:
git push origin master -f
这将强制降低当前位置之前的提交。