2016-09-03 10 views
1

私は枝を削除する方法はいくつか見てきました:起源/ RCこれらの類似の削除コマンドの違いは何ですか?

-Dr

Gitのプッシュ起源--delete --force RC
Gitのブランチ-DのRC
Gitのブランチをblogでは、男はまだ別の種類の削除を行っています。

古い名前のリモートブランチを削除し、新しい名前のローカルブランチを押します。

git push origin :old-name new-name 

新しい名前ローカルブランチの上流分岐をリセットします。ブログの例えば

git push origin -u new-name 

彼が二度同じことをやっているように、それが見えます。彼は単に新しい名前を遠隔地に押し付けなかったのだろうか?私はここで2番目のコマンドの必要性を見ません。

私はstackoverflowでそれを行う一般的な方法を見てきました。私は確実にローカルとリモートの両方を削除するには、これらのコマンド(私は-dの代わりに-Dを使用)の両方を実行する必要があることがわかり

git branch -d branch_name 
git push origin --delete <branchName> 

:私が最もupvoted答えを試してみました。

rcというブランチのローカルブランチとリモートブランチの両方を確実に削除する必要があります。 2つの別々のコマンドを実行する必要がありますか?これらのコマンドの違いは何ですか?

答えて

2

はい、ローカルブランチを削除するコマンドとリモートコマンドを実行するコマンドの2つを実行する必要がありますが、これを頻繁にやりたい場合は簡単にエイリアスを作成できます。

git push origin --delete --force rc 

は、リモートブランチ

git branch -D rc 

は、ローカルブランチを削除削除し、関係なく、それがマージされていますかどうかの

git branch -dr origin/rc 

は、リモートの最寄りの追跡ブランチを削除します。これは、最初のコマンドで自動的に発生します。このコマンドは最も一般的ではなく、別のマシンからリモートブランチを削除した場合にのみ必要です。このローカルリポジトリでは、古いトラッキングブランチを削除する必要があります。

-d-Dの唯一の違いは、マージされていないローカルブランチを削除することです。 -Dは、マージされていないかどうか気にしません。これはローカルブランチにのみ適用されます。

プッシュREF仕様の使用は、あなたが空白のローカル名を残せば、それは結果的に削除そのリモート名には何もプッシュしていないので、だから、これは清潔で、私は覚えやすいです

git push <remote> <local name>:<remote name> 

です。ブログ

git push origin :old-name new-name 

については

git push origin :oldBranch 

これは、古い枝を削除し、新しい名前で再び同じブランチを押し上げます。あなたが必要とするので、実際には、彼は枝の名前を変更していますが、それは、次のような追跡されていない:

git push origin -u new-name 

それは同じブランチだとしても、それは技術的に異なるリモートブランチとして追跡されているので、-uフラグセットを追跡しますそれ。これらを背中合わせに実行すると、2回目のプッシュでは実際には何もプッシュされず、トラッキングが有効になります。

関連する問題