0

我开始理解 git,但我仍然在抽象方面遇到了一些麻烦。我检查了以前的版本,通过简单的方式进行了一些更改:

git checkout [commit id] 

我收到消息 HEAD 已移动到一个新的这个新的提交 ID。我进行了我需要的更改并添加并提交了它们。但是,当我尝试将更改推送到 Heroku 时,我收到了所有内容都是最新的消息。我知道这不可能,所以我假设当我回到以前的版本并提交更改时,我做了一些替代分支。

所以我然后尝试:

git merge master

当它尝试自动合并我一直在处理的文件时出错。所以我清理了文件中出现的冲突并添加并提交了更改并做了:

git merge master

然而,这一次我收到了“已经是最新的”消息。当我尝试将更改推送到 Heroku 时,当我跳回几个版本时,该文件仍处于我离开它的状态。我不太确定如何让我所做的更改出现......

4

1 回答 1

1

你在一个“分离的头”上。您不在任何分支上,这使得许多 git 操作变得困难。

首先要做的是git checkout -b <new branch name>。这样,至少,您将有一个名称来引用您当前的状态。

接下来我们必须弄清楚你实际上想要做什么。您检查了“以前的版本进行一些更改”?您希望如何处理这些更改?你不能编辑过去。(嗯,你可以,但这是非常不寻常的,你现在应该忽略它。)你可以在一个分支上添加新的东西,或者你可以创建一个新的分支来保存项目的另一个版本。

很可能,您应该在 master 的提示下进行更改,提交它们然后推送它们。

或者,如果你想创建一个分支,你应该已经完成​​了git checkout -b <new branch name> <id of commit to form base of new branch>. 然后,您可以使用类似git push origin <new branch name>. 建立一个分支将是为您的项目的旧版本发布错误修复。(实际上,根据您的工作流程,您可能应该进行分支以发布之前的版本,并且您的错误修复将在该预先存在的分支之上进行。)

我担心你所做的合并让你处于难以优雅恢复的状态。如果您所做的更改不大,您可能只是重新创建它们并折腾您当前的状态。或者,如果您可以找到包含更改的提交,您可以重置为master然后选择它。您可以使用git whatchanged master..来查找该提交。

于 2012-04-05T01:55:59.777 回答