我开始理解git但是我仍然在抽象方面遇到一些麻烦。我查看了以前的版本,通过简单的方式进行了一些更改:
git checkout [commit id]
我收到消息HEAD被移动到新的这个新提交ID。我做了我需要的更改并添加并提交了它们。但是,当我尝试将更改推送到Heroku时,我收到的消息是所有内容都是最新的。我知道情况可能并非如此,所以当我回到之前的版本并提交更改时,我假设我做了一些替代分支。
所以我接着尝试了:
git merge master
当它尝试自动合并我一直在处理的文件时出错了。所以我清理了文件中出现的冲突,并添加并提交了更改并执行了操作:
git merge master
但是这次我得到的信息是“已经是最新的”。当我尝试将更改推送到Heroku时,当我跳回几个版本时,文件仍处于我离开的状态。我不太确定如何进行我所做的更改......
答案 0 :(得分:1)
你是一个“独立的头”。你不在任何分支上,这使得许多git操作变得困难。
首先要做的是git checkout -b <new branch name>
。这样,至少,您将有一个名称来引用您当前的状态。
接下来,我们必须弄清楚你实际上要做什么。您检查了“以前的版本进行了一些更改”?您对这些变化的期望是什么?你无法编辑过去。 (嗯,你可以,但这是非常不寻常的,你现在应该忽略它。)你可以在分支上添加新的东西,或者你可以建立一个新的分支来保存项目的替代版本。
很可能,你应该只是在主人的小费上做出改变,提交他们然后推送他们。
或者,如果你想建立一个分支,你应该做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..
来查找该提交。