2008-08-22 7 views
98

この質問をするには複数の方法があるかもしれませんので、ここではその問題を説明します。私はマスターに取り組んでいたし、いくつかのものをコミットし、私はその仕事を保留にしたいと決めた。私はいくつかのコミットをバックアップし、私は自分の仕事を始める前から分岐した。実際にはこれはうまくいきますが、今は主な開発ブランチとは異なるブランチを持っています。どのように私は周りのものを変更することができますので、私は再びマスターで働いているが、私のジャンクワークを持っていないと、仕事が別の支店にあると思っています。ブランチ名をgitに変更してください

いくつかの方法があります: マスターブランチの名前を変更し、他の名前をマスターに変更するにはどうすればよいですか? masterをバックアップして、以前にバックアップしたすべてのコミットが別のブランチ上にあるようにするにはどうすればよいですか?

すべての(迅速な)回答ありがとう!彼らはすべて良いです。

答えて

140

他のコメントに加えて、git-branchに役立つ-m(move)スイッチが役立つかもしれません。あなたは、マスターに新しいブランチの名前を変更し、何か他のものにあなたの古いマスターの名前を変更できます。

git branch -m master crap_work 
git branch -m previous_master master 
+1

これは現在のブランチの名前を変更するときにも機能します! :) – Tarrasch

+0

ワークフローによっては、.git/config内のブランチ参照を変更することもできます。私は '[branch" crap_work "]'を '[branch master ']'に変更して、マスターが 'origin/master'と同期しているようにしました。もちろん、2つのレポの状態はまだこれが意味をなさないようなものでした。 – Eponymous

+1

これは、リモートリポジトリ上のブランチの名前を変更するのではなく、ローカルリポジトリ上のブランチの名前を変更します。 – smohadjer

8

これは比較的簡単です:master

git checkout -b fake_master master # fake_master now points to the same commit as master 
git branch -D master    # get rid of incorrect master 
git checkout -b master real_master # master now points to your actual master 
git checkout master    # optional -- switch on to your master branch 
+1

Yeap、最後は完全に任意である - 作成-b' 'gitのチェックアウトブランチ**と**をアクティブにします。 – incarnate

15

スタート、以前のコミットにmasterをリセットし、その後、in-progressと呼ばれるブランチを作成します。

$ git branch in-progress 
$ git reset --hard HEAD^ 
+1

これが投票された理由はありません。私は支店のことを学ぶ前に、私はそれを数回しました。そして、支店が枝の永遠の名前として結ばれていないことに気付きました。 – skiphoppy

32

私はあなたがこのような問題を防ぐために、異なる開発戦略を検討すべきだと思います。私のために一番うまくいくように見えるのは、私のmasterブランチで直接開発することではないということです。

 
git push pu topic/topic_name 

または最終的にはちょうどマージ:私は公共のリポジトリに変更を押し出すことができ、そこから

 
git checkout -b topic/topic_name master 

:関係なく、私が作ってるんだが変化の、私は常に新しいコードのための新しいブランチを作成します戻って私のマスターブランチでのIT:

 
git checkout master && git merge topic/topic_name 

あなたが本当にあなたのマスターとして、あなたが何か他のものに現在のブランチの名前を変更してからチェックアウトすることができる時間に戻って古いポイントに移動して、設定する必要がある場合

 
git branch -m master junk 
git co -b master old_sha1_value 
+0

これは良いポリシーです。そして、それを考えると、私はそれが他の場所で練習されているのを見ました。ありがとう。 – Rimian

0

これはワンステップで任意のポイントにあなたのマスターを設定します:古いバージョンは、あなたのマスターに

git checkout -B master new_point 
関連する問題