2016-03-27 14 views
6

ブランチfooを作成したいと思います(チェックアウトしました)。origin/barと同じコミットで開始しますが、現在はorigin/barがチェックアウトされていません。これを行う1つのライナーはありますか?Gitはトラッキングのない別のブランチからブランチを開始します

git branch foo origin/bar 
git checkout foo 

をそして、あなたはとしてonelineを主張する場合:

+0

技術的には「origin/bar」はチェックアウトできません(通常、ローカル)ブランチではありません。リモート追跡ブランチが指すコミットをチェックアウトすることができます。しかし、一般的にあなたは '--no-track'をhvdとして既に回答しています。 – torek

答えて

4

あなたにはそれを行うことができます単一コマンド:git checkoutは、git branch--no-trackオプションを直接指定することができます。

git checkout -b foo --no-track origin/bar 
0

これはトリックを行う必要があります

git checkout -b foo origin/bar 
+0

ちょうど1つのライナー;) – mwm314

0

それはあなたがあなたの新しいブランチがリモートorigin/barを追跡するかどうかによって決まります。リモートを追跡しない場合は

git checkout -b foo origin/bar 

:リモートを追跡するために

git checkout -b foo --no-track origin/bar 

(後でいつでも追跡関係を追加することができます。)

-1

は、Gitは、このようなブランチを作成するためのフラグがあります:

https://git-scm.com/docs/git-checkout/

--orphan
は、という名前の新しい孤児のブランチを、作成から開始し、それに切り替えます。この新しいブランチで行われる最初のコミットには親がなく、それは他のすべてのブランチとコミットから完全に切り離された新しいヒストリーのルートになります。

インデックスと作業ツリーは、あらかじめgit checkout <start_point>を実行したかのように調整されています。

これにより、git commit -aを簡単に実行してルートコミットを実行するのと同じような一連のパスを記録する新しい履歴を開始することができます。

これは、完全な履歴を表示せずにコミットからツリーをパブリッシュする場合に便利です。現在のツリーがcleanであるが、完全な履歴には独自のコードやその他のコードが含まれているプロジェクトのオープンソースブランチを公開することができます。

完全に異なるパスセットを記録する切断履歴を開始する場合は、上位レベルからgit rm -rf .を実行して、孤立したブランチを作成した直後にインデックスと作業ツリーをクリアする必要があります作業ツリーのその後、新しいファイルを準備したり、作業ツリーを再作成したり、他の場所からコピーしたり、タールボールを抽出したりする準備が整います。

+0

これは、OPが求めているようには思われません。私は歴史を切り離すという言葉には言及していません。彼らは最初にそれをチェックすることを気にせずに、既存のブランチからブランチしたいだけです。 –

+0

私は彼が歴史のないブランチを望んでいることを最初に理解しました:-) – CodeWizard

関連する問題