2016-07-21 67 views
5

我使用IntelliJ(2016.1.3)和GIT集成插件(8.1)。 在我使用IntelliJ的過程中,我簽出了多個分支。現在這些分支從GIT中刪除(在每次請求我們刪除它們之後)。IntelliJ - GIT在GUI中刪除本地孤立分支

從現在起,每一個分支我檢查了一次從我的IntelliJ GIT的看法是存在(通過VCS>的Git>分行...),請參閱下:

enter image description here

有辦法刪除它們:做到這一點... 一個接一個!但是,如果有很多的分支(我們說一百個......),它肯定越來越乏味...

的問題是: 你知道,如果有刪除所有孤兒的簡單方法IntelliJ中的這個視圖中的本地分支?

謝謝:)

編輯:我已經找到一種方法將其刪除,但在其它工具:「混帳桂」。當你從那裏刪除它時,它也會在IntelliJ中被刪除。並且您可以一次刪除多個分支。

回答

0

打開在項目目錄的控制檯,然後運行:

git remote prune origin 

它消除了在遠程分支機構不存在任何更多命名origin遠程倉庫的任何地方引用。

如果不是origin,則在上面的命令中用origin替換遠程存儲庫的名稱(因爲它是本地存儲庫已知的)。

據我所知,使用IntelliJ Git插件無法實現此目標。

更多詳情:https://git-scm.com/docs/git-remote

+0

它在IntelliJ中沒有做任何事情:當地分支仍然存在。 –

+0

它確實沒有在IntelliJ IDEA中做任何事情。它在存儲庫中執行。 IntelliJ插件必須從底層的'git'庫中刷新它的信息,並且它可能不會自行刷新。您可以打開「版本控制」視圖(使用* Alt-9 *或* Cmd-9 *,取決於您的操作系統),轉至其「日誌」選項卡並按下「刷新」按鈕或重新啓動IntelliJ IDEA,然後它會在下次啓動時刷新信息。 – axiac

+0

問題是* pruning *只刪除*遠程跟蹤分支*(例如'remotes/origin/branch1'),而不是本地Git存儲庫中的真實分支'branch1'。你需要做'git branch -D branch1'來做到這一點。查看我的答案瞭解一些細節。 –

2

我想另一種方式來刪除本地的Git分支是波紋管,如果你執行上面這可能是helful給您根據您的要求,

git branch -d branch1 branch2 branch3 branch4

命令在終端從項目目錄然後它會刪除所有分支,你已經通過即分支1分支2 ... branch_n

我希望它會幫助你。 謝謝。

+0

謝謝你的回答。我不認爲這是一個好辦法,除非我能夠輕鬆地收集到我想刪除的分支的所有名稱。我只是想知道IntelliJ是否能夠通過GUI實現這一點。 –

+0

收集名字的簡單方法是運行'git branch --merged' –

4

遠程跟蹤分支很容易與普通的Git分支混淆。遠程跟蹤分支以remotes/開頭,如remotes/origin/branch1,儘管Git允許您省略remotes/作爲簡寫,所以您也可以簡單地將remotes/origin/branch1簡稱爲origin/branch1。但這些不是正常的分支。你不能承諾他們或直接檢查出來。如果您嘗試檢查它們,Git將檢出一個分離的HEAD,或者它會自動創建一個與遠程分支具有相同名稱的新本地分支,例如, branch1。除非告訴Git明確刪除它,否則這個新的本地分支將永遠不會被刪除。

正在發生的事情是兩方面的:

  1. 你需要確保Git是修剪遠程跟蹤分支(remotes/origin/branch1等)。默認情況下它沒有。請參閱this question on pruning remote tracking branches瞭解如何操作。基本上它是git fetch -p origingit remote prune origin

  2. 當您簽出分支來處理分支時,您創建了一個與遠程跟蹤分支同名的本地分支。即使遠程跟蹤分支remotes/origin/branch1已被修剪,如果在遠程服務器上刪除branch1,也不會刪除本地分支branch1

可以清理這些分支機構與git branch -d手動(或-D強迫它,這可能是必要的,如果分公司從未合併),或在回答看Remove old remote branches from Git一個自動化的方式來做到這一點。

+0

感謝您的解釋。然而,我只是試圖找到一種方法來刪除我的本地分支**直接在IntelliJ **中,而不是通過使用任何「命令行」工具:) –

+0

@GuillaumeM我看到了......聽起來你要麼必須做它在GUI中手動或使用命令行進行批量刪除。 –

+0

我使用'git fetch -p origin',起初它看起來不像命令做任何事情。但一旦清單刷新,舊的消失。我有64個掛在身邊,所以很高興一次性清理它們。另外,我不必引用遠程存儲庫以確保我沒有刪除任何活動的分支。 –