Tôi đang cố viết một bí danh để xóa cả một nhánh cục bộ và từ xa cùng một lúc, nhưng tôi không thể hiểu tại sao cú pháp không hoạt động. Trong ~/.gitconfig
, tôi đã thử các bí danh sau đây, nhưng mỗi sản xuất cùng một kết quả, đó là bất ngờ:bí danh git để xóa địa phương và từ xa
[alias]
nuke = !sh -c 'git branch -D $1 && git push origin :$1'
và
[alias]
nuke = !git branch -D $1 && git push origin :$1
cả sản phẩm:
$> git branch
* master
mybranch
$> git nuke mybranch
Everything up-to-date
$> git branch
* master
mybranch
Switching thứ tự các lệnh tạo ra một kết quả khác, nhưng cũng không hoàn toàn là những gì tôi đang tìm kiếm:
[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 [email protected]:biegel/repo.git
- [deleted] mybranch
Khi tôi chạy lệnh đó trực tiếp trên vỏ, nó hoạt động độc đáo:
$> git branch
* master
mybranch
$> git branch -D mybranch && git push origin :mybranch
Deleted branch mybranch (was d719895
To [email protected]:biegel/repo.git
- [deleted] mybranch
$> git branch
* master
Tôi đã cố gắng tạo ra một bí danh trong ~/.bashrc
, sử dụng git push origin --delete $1
và sử dụng một chức năng vỏ với !f() { };
và không có gì dường như mất!
Tôi đã sẵn sàng từ bỏ. Bất kỳ suy nghĩ về những gì tôi đang thiếu ở đây?
Cảm ơn.
Ah, cảm ơn cho con trỏ. Tôi có thể sẽ đi với git-extras. – biegel
Vui lòng xem câu trả lời của [jszakmeister] (http://stackoverflow.com/a/16740731/456814), bạn ** có thể ** sử dụng '$ 1' trong một bí danh. –
Trong khi câu trả lời của jszakmeister là một giải pháp tốt đẹp thực sự, bạn vẫn không thể sử dụng '$ 1' trong một bí danh. 'sh' đang xử lý' $ 1' ở đó. Các đối số cho một bí danh luôn được nối thêm vào nó. – Chronial