1

我需要一些帮助git。我现在的“主人”有一些问题,所以我检查了一个我知道有效的版本。

$ git checkout <hash>

让我们称之为“以前”。然后我对“以前的”进行了编辑,让事情按照我想要的方式工作。然后我提交并将“previous”推送到 git repo。当然,在 repo 上,“master”仍然是有问题的旧“master”。我想我要做的就是将我计算机上的“以前的”(带有新编辑的)转换为“master”,然后将其推送到 repo。我怎么做?我已经阅读rebase并尝试过,但这不起作用。我收到“无法变基:您有未暂存的更改”的错误消息。

4

4 回答 4

3

大概,你所做的git checkout <hash>是得到一个新的分离的 HEAD。

(可选)保留不正确主控的参考(将被调用oldmaster):

git branch oldmaster master

删除主引用:

git branch -D master

使您当前的工作分支(分离的 HEAD)成为新的主分支。

git checkout -b master

然后,提交您的更改(如果需要,可能在添加新文件之后):

git commit ...
于 2012-10-16T00:21:59.140 回答
1

我不确定你必须在“master”中走多远,但你可以git revert <hash>一直回到你分支的点。这将“撤消”所有提交,而不会丢失历史记录。

这篇文章可能对您有所帮助:还原多个 git 提交

于 2012-10-16T00:16:36.373 回答
0

一个更简单的让你的主分支返回的方法是使用重置:

git checkout master
git reset --hard <hash>

然后,您的分支将落后于原始 master 一些提交。修理:

git push origin master -f

这将强制放弃在您当前位置之前的提交。

于 2012-10-16T04:07:23.557 回答
0

也许尝试运行git checkout master; git status;并查看您是否确实在主分支中进行了未暂存的更改。如果是这种情况,只需在 rebase 之前提交或存储这些更改。您还应该验证您是否已成功提交对前一个分支的更改。

于 2012-10-16T00:17:03.750 回答