2012-05-08 3 views
1

私はgitのデタッチヘッドを持っています。私はコミットや変更を保存することに興味はない、私はちょうど私の支店の頭の位置に行きたい。私は彼のコマンドを試しましたが、うまくいきません:gitのデタッチドヘッド

git checkout MyBranch 

何か助けてください?

----更新

私がチェックアウトしようと、私はこのメッセージを取得しています:それはいくつかの変更がthetreあると言う

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

---アップデート2 を、どのように私はそれらを削除することができます?

$ 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

[Fix a Git detached head?](http://stackoverflow.com/q/10228760/456814)も参照してください。 –

答えて

6

これはおそらく起こります。
チェックアウトを強制しようとすると、変更を破棄しますが、そのことは気にしません。 git help checkout manページから

git checkout -f MyBranch 

-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'

だから、あなたは今masterブランチです。

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

これは、リモート・マスター・ブランチは、アップデートがあり、リモートに合わせて、お近くの支店を更新することを意味します。 origin/masterブランチをすでに取得しているので、gitはローカルブランチがリモートブランチの背後にあることを認識しています。

and can be fast-forwarded.

これは、リモートブランチに線形変更が加えられていること、およびローカルブランチのマージ/アップデートに競合がないことを意味します。

ローカルブランチを更新するには、origin/masterブランチをマージしてください。


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

この

git merge origin/master 
は、あなたが新しい変更(マージ)に追加しようとしていることに追跡されていません(gitのadd'edを行ったことがないとコミット)は、ローカルにいくつかのファイルを持っていることを意味し監視して追跡するファイルのgitリスト。したがって、追加される新しいファイルは、リポジトリ上のローカルの未追跡ファイルを混乱させます。

解決するには、これらのローカルファイルを削除するか名前を変更するか、別の場所に移動してリモートブランチを再度マージしようとします。

0

stash変更を加えると、分離されたヘッドに対して作業ディレクトリがきれいになるので、必要なブランチをチェックアウトすることができます。

希望のブランチに移動したら、stash popに変更を戻すことができます。マニュアルには多くのオプションがあります;-)

0

git statusを実行して、ファイルを変更したかどうかを確認してください。 変更されたファイルを削除するにはgit checkout .を入力してください。git checkout MyBranchを頭に付けることができます。