2012-01-26 12 views
3

私のコードに根本的な問題があるため、プロジェクトのディレクトリツリー全体を変更する必要がありました。だから私は大きな変化の前にコミットし、その後私が必要としなかった変更を行った後に実現しました。だから実行しましたgit復帰後のgitブランチへの復帰方法

git checkout ##SHA## 

私はプロジェクト全体をそれほどうまく動作させることができましたが、今は別の問題があります。私が働いていたブランチではもうチェックアウトされていません。私が今使っているコードをどのように保ち、ブランチ内で作業するのですか?

git branch -a 

は、私は、私はちょうど新しいブランチを作り、古いものを削除せずに何ができるかを知っている

* (no branch) 

誰もにいると言っていますか?

+0

'git checkout master'を試しましたか?またはあなたの支店の名前。 – jweyrich

答えて

6

実行しないgit checkout <hash>これは、コミットを一時的に調べることを意味します(したがって、あなたが見ているブランチはありません)。

git checkout the_branch 
git reset --hard <hash> 

注上記<hash>こと:回復するには(。あなたが作業ディレクトリに必要な変更がある場合--hardを除く)

git reset --hard <hash>、ブランチの間、あなたがやってみたかったこと、でした変更を元に戻そうとしている間にgit checkoutで使用したのと同じものになります。

+0

すばらしい答え!非常に有益です... 'git checkout 'が本当に何のためにあるのか教えてくれてありがとう! –

+0

これを完了してコミットした後、いくつかの編集を行う必要はありませんか?私は現在の ''が良いと知っています...なぜ、 'git checkout my_branch'だけでなく、' git merge <私が動作することを知っている現在のコミットのハッシュ> 'でなければなりませんか?それとも、私はそれをコミットして実験の前に保存したコミットにその新しいブランチをマージすることができるように私は新しいブランチを作ることを余儀なくされますか? –

+0

ありがとう、これは、私の頭のないコミットをgc'edから回復し、それらのトピックブランチをリセットするのに役立ちました。 – OnesimusUnbound

2

チェックアウト戻ってあなたのブランチに、あなたはヘッドレスブランチで行った変更をマージ:

git checkout my_branch 
git merge ##SHA## 

あなたは、最新の分岐my_branchはあなたが行ったコミットが必要です。

+0

私はこの問題を最も速く解決するので、この答えが本当に好きです。皆さん、これは本当に私の質問に直接答えていただければ幸いです。しかし、@ carleetoは将来の訪問者が-carleetoの教育上のポイントを理解する恩恵を受けることを希望しているので、私は「回答」を獲得すると信じている教育的ポイントを持っています。 –

+0

**これは本当にこの問題を解決するための最も速く最も直接的な方法です** –

+0

@JeremyIglehartありがとう –

0

あなたは枝になりたい場所があることを確信している場合は、次のことができます。

git branch -D my_branch 
git checkout -b my_branch 

これは、古い枝のポインタを削除し、あなたの現在のHEADを指して新しいものを作成します。

1
  1. は、ブランチを作成します。git branch -b branch_for_new_code
  2. は、変更内容を追加してコミットします。
  3. チェックアウトあなたが戻って取得したいブランチ:git checkout branch_i_was_on
  4. 古いと新しいブランチをマージ:それがマージされた後git merge branch_for_new_code
  5. は、新しいブランチを削除します。

親指の簡単なルールを覚えておいてください。わからないことをしているときは、最初にブランチを作成してください。最後に、あなたが何をしているのか本当に分かっていない限り、チェックアウトブランチの名前だけです。

+0

これは大きなポイントです。私はgitの慣行をよりよく理解するのを手伝ってくれてありがとう!乾杯のメイト、-J。 –

関連する問題