如何处理一个孤立的头做的承诺
使用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 (wich does complete because there was some error due to the fact that i'm no more on master) 因为git对我说,我仍然可以在脱离头脑的状态下犯下罪行,所以我这样做了。 但是现在我想合并我分离的头部分支到我的本地主分支,然后把我的改变推到origin / master。
所以我的问题是我怎么能合并主分支与我的实际状态(分离的头)
创build一个分支,然后切换到主并合并它:
 git branch my-temporary-work git checkout master git merge my-temporary-work 
你可以做这样的事情。
 # Create temporary branch for your detached head git branch tmp # Go to master git checkout master # Merge in commits from previously detached head git merge tmp # Delete temproary branch git branch -d tmp 
更简单的是
 git checkout master git merge HEAD@{1} 
但是这有一点小小的危险,就是如果你犯了一个错误,可能会更难以恢复在分离的头上做出的提交。
 你可以做git merge <commit-number>或者git cherry-pick <commit> <commit> ... 
正如Ryan Stewart所build议的那样,您也可以从当前的HEAD创build一个分支:
 git branch brand-name 
或者只是一个标签:
 git tag tag-name 
这就是我所做的:
 基本上,把detached HEAD想象成一个没有名字的新分支。 您可以像任何其他分支一样提交到这个分支。 一旦你完成提交,你想把它推到远程。 
 所以你需要做的第一件事就是给这个detached HEAD一个名字。 你可以很容易做到这一点,而在这个detached HEAD : 
 git checkout -b some-new-name 
现在,您可以像其他分支一样将其推送到远程。
 在我的情况下,我也想把这个分支快速的转移到我在detached HEAD (现在是some-new-branch )中所做的提交。 我所做的只是 
 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 current state of master to my changes 
 当然,我后来把它合并到了master 。 
就是这样。
在HEAD分离的情况下,提交工作正常,除非没有命名分支得到更新。 为了使主分支更新你提交的更改,在你所在的地方build立一个临时分支(这样临时分支将拥有在分离的HEAD中所做的所有提交的更改),然后切换到主分支并将临时分支与大师。
 git branch temp git checkout master git merge temp 
我也build立了一个文章,在那里解释如何处理。 我补充一点,因为它与提出的有点不同。 但是我认为所有的命题都是有效的
http://edspencer.net/2009/10/git-what-to-do-if-you-commit-to-no-branch.html
后来我会接受第一个答案作为好的一个
 也许不是最好的解决scheme,(将重写历史),但你也可以做git reset --hard <hash of detached head commit> 。 
- 切换git分支没有文件签出
- git:切换分支并忽略没有提交的任何更改
- 为什么Git在运行“git checkout origin / <branch>”后告诉我“目前不在任何分支上”?
- Git:如何更新/签出远程原始主文件中的单个文件?
- git checkout –track origin / branch和git checkout -b branch origin / branch之间的区别
- 如何将Git托pipe项目中的所有本地更改恢复到以前的状态?
- Visual Studio 2015 Git由于有未提交的更改,因此无法进行切换/切换
- 是否可以在同一个项目中同时查看多个git分支?
- 如何将HEAD移回到之前的位置? (分离头)