使用git我做了这样的东西

git clone
git checkout {a rev number tree rev before} (here I started to be in a detached head state)
//hacking
git commit
//hacking
git commit
(some commit where made on origin/master)
git pull (which does complete because there was some error due to the fact that I'm no more on master)

因为它告诉我,当我处于超然的头脑状态时,我仍然可以做出承诺,我这样做了。 但现在我想合并分离的head分支和本地master分支,然后将我的一堆更改推到origin/master。

所以我的问题是我如何将主分支与我的实际状态(分离头)合并


当前回答

在分离HEAD的情况下,除了没有更新已命名的分支外,提交工作正常。要用已提交的更改更新主分支,在您所在的位置创建一个临时分支(这样临时分支将拥有您在分离HEAD中所做的所有已提交的更改),然后切换到主分支并将临时分支与主分支合并。

git branch  temp
git checkout master
git merge temp

其他回答

如果你在这种情况下(提交被分离),我会给一个适当的步骤直到push。分离的意思是当你的提交不与任何分支相关联时,它只与“分离的头”状态相关联。

首先你必须创建一个新的分支,分离提交将自动与新分支相关联

git branch temporaryWork

然后转到结帐master,这样你就可以合并那个“temporaryWork”。请考虑核对一下分公司名称列表,以免出现错误

git checkout master
git merge temporaryWork

git会提示你的文件可能有冲突,然后去查看你的代码文本编辑器,删除你不需要的代码。

并提交变更

git add .
git commit -am "merging temporaryWork" 

然后删除"temporaryWork"

get branch -d temporaryWork

然后把它推到github。

git push origin master

也许不是最好的解决方案,(将重写历史),但你也可以做git重置——hard <散列的分离头提交>。

这就是我所做的:

基本上,可以将分离的HEAD看作一个没有名称的新分支。你可以像其他分支一样提交到这个分支。一旦你完成了提交,你想把它推到遥控器。

因此,您需要做的第一件事是为这个分离的HEAD命名。你可以很容易地做到这一点,就像在这个分离的头部:

git checkout -b some-new-branch

现在您可以像其他分支一样将其推到远程。

在我的例子中,我还想快进这个分支,并在分离的HEAD(现在是某个新分支)中进行提交。我所做的就是:

git checkout master

git pull # to make sure my local copy of master is up to date

git checkout some-new-branch

git merge master # this added the current state of master to my changes

当然,我后来把它合并了才掌握。

差不多就是这样。

你可以使用git merge <commit-number>或者git cherry-pick <commit> <commit>…

正如Ryan Stewart所建议的,你也可以从当前的HEAD创建一个分支:

git branch brand-name

或者只是一个标签:

git tag tag-name

在你所在的位置创建一个分支,然后切换到master并合并:

git branch my-temporary-work
git checkout master
git merge my-temporary-work