簡體   English   中英

批處理文件,它將刪除目錄的每個子文件夾中的所有本地分支(git)

[英]Batch file that will delete all local branches (git) in each subfolder of a directory

這是我的要求:

  1. 遍歷給定目錄的所有子文件夾。
  2. 在每個子文件夾中,刪除除master分支以外的所有本地分支。

對於第2項,以下語句在子文件夾中手動執行時有效。

git branch | grep -v " master" | xargs git branch -D

我想創建一個批處理文件,該文件將在每個子文件夾中執行上述語句。

我嘗試了以下操作,但無法使其正常工作。 請幫助我確定該語句出了什么問題。

FOR /D %%G in ("C:\parent\*") Do (echo Updating %%G ...) && (cd %%G) && git branch | grep -v " master" | xargs git branch -D

在每個子文件夾中,刪除除master分支以外的所有本地分支。

那不是Git的工作方式。 這對於Subversion而不是Git可能有意義。
刪除分支后,該分支將用於所有存儲庫,而不用於子文件夾。

唯一可以刪除Git repo子文件夾中的分支的情況是,如果該子文件夾是根文件夾,則為子模塊

另外,您可以考慮使用-d而不是-D ,以避免刪除未完全合並的分支。 請參閱“是否可以刪除除當前分支機構以外的所有本地分支機構? ”。

感謝您的所有幫助。

原來我遇到以下錯誤:

'grep' is not recognized as an internal or extenal command.

我沒有看到它,因為我通過雙擊它來執行批處理文件,然后將顯示命令提示符並立即關閉,因此我錯過了錯誤消息。

無論如何,當我使用Git bash執行它時,具有上述內容的批處理文件可以按預期工作。

請注意,這僅出於維護目的,假設我只需要master分支並且所有本地分支都已合並。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM