ローカル ブランチとリモート ブランチの両方を同時に削除するエイリアスを作成しようとしていますが、構文が機能しない理由がわかりません。では~/.gitconfig
、次のエイリアスを試しましたが、それぞれが同じ結果を生成しますが、これは予想外です。
[alias]
nuke = !sh -c 'git branch -D $1 && git push origin :$1'
と
[alias]
nuke = !git branch -D $1 && git push origin :$1
両方が生成します:
$> git branch
* master
mybranch
$> git nuke mybranch
Everything up-to-date
$> git branch
* master
mybranch
コマンドの順序を切り替えると、別の結果が生成されますが、探しているものとは完全には異なります。
[alias]
nuke = !git push origin :$1 && git branch -D $1
...
$> git branch
* master
mybranch
$> git nuke mybranch
Everything up-to-date
Deleted branch mybranch (was d719895)
$> git branch
* master
$> git push origin :mybranch
To git@github.com:biegel/repo.git
- [deleted] mybranch
そのコマンドをシェルで直接実行すると、うまく機能します。
$> git branch
* master
mybranch
$> git branch -D mybranch && git push origin :mybranch
Deleted branch mybranch (was d719895
To git@github.com:biegel/repo.git
- [deleted] mybranch
$> git branch
* master
でエイリアスを作成し、シェル関数を使用して~/.bashrc
使用しようとしましたが、何もかかりません!git push origin --delete $1
!f() { };
私はあきらめる準備ができています。私がここで見逃しているものについて何か考えはありますか?
ありがとう。