gitでブランチ名を切り替える


103

この質問をする方法は複数ある可能性があるため、ここに問題の説明を示します。私はマスターに取り組んでいて、いくつかのことをコミットしてから、その作業を保留にしたいと思いました。いくつかのコミットをバックアップし、がらくたの仕事を始める前から分岐しました。実際にはこれで問題なく動作します。現在、メインの開発ブランチとして別のブランチがあります。どうすれば状況を変えることができるのか疑問に思っているので、もう一度masterに取り組んでいますが、ジャンク作業はなく、別のブランチにあると言っていました。

これを質問/解決できるいくつかの方法:マスターブランチの名前を別の名前に変更してから、別の名前をマスターに変更するにはどうすればよいですか?マスターをバックアップしてから、過去にバックアップしたすべてのコミットを別のブランチに置くにはどうすればよいですか?

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

回答:


144

他のコメントに加えて、git-branchへの-m(移動)スイッチが役立つことがあります。古いマスターの名前を別の名前に変更してから、新しいブランチの名前をマスターに変更できます。

git branch -m master crap_work
git branch -m previous_master master

ワークフローによっては、.git / configのブランチ参照を変更することもできます。マスターが引き続きと同期するように、[branch "crap_work"]読み取りに変更し[branch "master"]ましたorigin/master。もちろん、2つのリポジトリの状態は、これがまだ理にかなっているようなものでした。
代名詞

3
これは、リモートリポジトリのブランチの名前を変更せず、ローカルリポジトリのみで変更します。
smohadjer 2014

1
@smohadjerリモートの名前を変更するには、git push -uf origin masterおよびを使用しgit push -u origin crap_workます。
zyy

31

このような問題を回避するには、別の開発戦略を検討する必要があると思います。私に最適と思われるのは、私のmasterブランチで直接開発を行わないことです。私が行っている変更に関係なく、私は常に新しいコードの新しいブランチを作成します。

git checkout -b topic / topic_name master

そこから、変更をパブリックリポジトリにプッシュできます。

git push pu topic / topic_name

または最終的にそれを私のマスターブランチにマージして戻します:

git checkout master && git merge topic / topic_name

本当に古い時点に戻ってそれをマスターとして設定する必要がある場合は、現在のブランチの名前を別のものに変更してから、古いバージョンをマスターにチェックアウトできます。

 gitブランチ-mマスタージャンク
 git co -bマスターold_sha1_value

それは良い方針です。考えてみると、他で練習しているのを見てきました。ありがとう。
リミアン

14

で開始しmaster、というブランチを作成してから、以前のコミットにin-progressリセットmasterします。

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

1
これが否決された理由は私にはわかりません。ブランチ-mについて学び、マスターがブランチの永続的な名前として不変に結び付けられていないことに気づく前に、私は何度か自分でやりました。
skiphoppy 2008年

7

これは比較的簡単です:

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
うん、最後は完全にオプションです- git checkout -bブランチ作成してアクティブにします。
BorisOkunskiy 2010

0

これにより、1ステップでマスターが任意のポイントに設定されます。

git checkout -B master new_point
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.