2011-01-13 20 views
45
[email protected]:/media/dev/belgravia$ git branch 
* (no branch) 
    master 

私はこれがどう起こったのか分かりませんが、マスターにブランチをマージできない方法があります。私は2つのブランチが1つのブランチではない場合、どのように2つのブランチをマージできるかはわかりません。 no-branchのコミットは緩やかなようです。私はcheckout masterがデータ損失を引き起こすのではないかと恐れています。マスターにマージ(ブランチなし)

+0

私の場合、これはちょうど 'git rebase'の間に競合した後に起こりました。ちょうど 'git rebase --continue'を実行すると、前のブランチに戻ります。 – Frank

+0

関連:http://stackoverflow.com/questions/366093/git-commit-against-tag-with-no-branch – rogerdpack

答えて

69

git showを使用して、現在のHEADのSHA1コミットIDを取得します。その情報を使用すると、そのコミットを失うことはありません。

次に、マスターに切り替えて:abc123最初のステップからSHA1ある

git merge abc123 

+5

私がやったのは、「枝の一時」、「チェックアウトのマスター」、「マージの一時停止」でした。 。ブランチを実際のブランチに移動しないと、ブランチをマージできませんでした。しかし、あなたのソリューションはよりシンプルです。 – Keyo

+1

@Keyo:ブランチに「ブランチなし」を移動しませんでした。現在のHEAD(現在チェックアウトされているコミット)にブランチが作成されました。 gitブランチが "no branch"と言ったとき、それはちょうどそれを意味しました:あなたは現在ブランチをチェックアウトしていませんでした。これは分離ヘッドとも呼ばれます。 – Cascabel

+0

@Jefromi説明をありがとう。 – Keyo

3

あなたは(ノー支店)あなたが行っているされている理由:

git checkout REMOTE_BRANCH_NAME 
  • をあなたは、あなたがしなければならない、そのブランチ上でローカルに動作するためには:git branch - agit checkout -b local_branch_new_name
  • は今
  • あなたが表示されます。

local_branch_new_na私は

master 
  • ここからは、マスターに通常の方法をブランチをマージすることができます。マスターへの切り替えとん:

    のgitたぶん、あなたは現在のブランチに(無分岐)、それをコミットすることはできませんlocal_branch_new_name

4

をマージ

次に、あなたがしなければならない。

git reflog 

その後、あなたは1d84d08のようなこのコミットのIDを得ることができます

do:

git checkout master 
git merge 1d84d08 
+0

シンプルで最高です – onalbi

関連する問題