2012-05-08 68 views
1

我有一個分離頭在git中。我不想做任何提交或保存任何更改,我只想去我的分支的頭部位置。我試過他的命令,但它不起作用:git中的分離頭

git checkout MyBranch 

任何幫助嗎?

----更新

當我試圖結帳

,我得到這個消息:

$ git checkout -f master 
Switched to branch 'master' 
Your branch is behind 'origin/master' by 6 commits, and can be fast-forwarded. 

---更新2 它說thetre有一些變化,我怎樣才能刪除它們?

$ git merge origin/master 
Updating fb5972a..28c2849 
error: The following untracked working tree files would be overwritten by merge: 
    --- 
Please move or remove them before you can merge. 
Aborting 

我該如何丟棄它們?

這些命令沒有工作:

$ git checkout -- . 


$ git stash save --keep-index 
No local changes to save 
+2

當你說「'git checkout MyBranch'不起作用時,」你是什麼意思?它是否失敗,如果是這樣,如何? –

+0

另請參閱[修復Git分離頭?](http://stackoverflow.com/q/10228760/456814)。 – 2014-05-30 05:16:40

回答

6

這可能是因爲你已經修改了分離的頭。
嘗試強制結帳,這會丟棄所做的更改,正如您所提及的,您並不關心這些更改。

git checkout -f MyBranch 

git help checkout手冊頁:

-f, --force 
     When switching branches, proceed even if the index or the working tree differs from HEAD. This is used to throw away local changes. 

     When checking out paths from the index, do not fail upon unmerged entries; instead, unmerged entries are ignored. 

Switched to branch 'master'

所以,你是主分支現在。

Your branch is behind 'origin/master' by 6 commits,

這意味着遠程主分支已更新,並且您可能想要更新本地分支以匹配遠程。您已經獲取了origin/master分支,因此git知道您的本地分支在遠程分支後面。

and can be fast-forwarded.

這意味着遠程分支對它進行了線性更改,並且在合併/更新本地分支時不會發生衝突。

要更新本地分支,只需將原始/主分支合併到它。

git merge origin/master 

error: The following untracked working tree files would be overwritten by merge:

,這意味着你有一些本地的文件,這是不被跟蹤(從未混帳add'ed和COMMITED)的新變化(合併)將要加入要觀看和跟蹤的git文件列表。因此,將要添加的新文件與回購站上的本地未跟蹤文件混雜在一起。

要解決該問題,請刪除這些本地文件或重命名它們,或將它們移動到其他位置並嘗試再次合併遠程分支。

0

您可以stash您的更改,這使您的工作目錄,相對於分離的頭,乾淨,所以你應該能夠檢查你想要的分支。

一旦在所需的分支上,您可以stash pop帶回這些更改。手冊中有很多選項;-)

0

執行git status以查看是否更改了任何文件。 然後一個git checkout .刪除任何更改的文件,那麼你應該能夠git checkout MyBranch傀儡頭。