簡體   English   中英

使用`git merge --squash`后如何刪除git分支

[英]How can I delete a git branch after using `git merge --squash`

有一段時間,我以這種不同尋常的方式與Git合作:

  1. git checkout -b feature123
  2. 微小的編輯,提交,重復
  3. git checkout master
  4. git merge --squash feature123
  5. 使用git log --oneline輸出來填充提交消息,如下所示:
Implement feature 123, floobing the brob

Long, detailed description here.

         f5d1b77 REFACTOR: Extract Method
         1c1346e REFACTOR: Rename `A` to `B`
         63457de etc.
         884fga1 floob

我特別喜歡重構的工作模式,直到要創建的行為更改變得微不足道為止。 在任何時候,如果我被卡住,我都可以回滾到上一次的良好提交。 讀取我的提交歷史記錄很容易,因為行為更改和重構是分開的,並且行為更改簡單明了。

在Microsoft與Source Depot合作時,我養成了這個習慣。 我可以對分支進行一系列微小的提交,並將分支上游合並為一個提交。 我們有一個gui工具(類似於gitk),該工具顯示合並提交旁邊帶有+ 我可以擴展,並查看詳細信息。 非常好。 我試圖在Git中復制它。

如果我想深入了解細節,GitHub會將那些提交SHA集成到各個提交的鏈接中。 但是,它只對某些提交執行此操作,而其余的則不會成為鏈接。

enter image description here

這顯然是在Git中工作的一種不尋常的方式。 這些工具不太可能圍繞它進行改進,並且其他程序員在看到它時可能會感到困惑。

通常,在合並Git功能分支后,可以將其刪除-沒有太多理由保留它。 但是在這種情況下,如果我刪除分支,則單個提交將消失,並且您無法在GitHub中單擊它們。 因此,這些舊分支使事情雜亂無章,即使它們沒有用。 我該如何擺脫它們?

也許有一些變魔術的咒語?

據我了解您的意圖,您的意思是擁有簡單的歷史記錄並根據需要提供詳細信息。

如果您執行壓縮合並,那么(除非您添加一些顯式引用)將沒有直接方法來訪問原始提交,而git將(最終)清理所有那些無法訪問的提交。

因此,您需要一種存儲原始分支的引用的方法。 最自然的做法是合並提交本身,這恰好導致非取消合並。

因此,我的建議是在顯示歷史記錄時進行常規合並並過濾重要的提交,例如gitk --first-parent 這只會向您顯示主分支上的提交,而沒有任何側分支。 (即您在第一種方法中取消合並時會擺脫的那個。)

暫無
暫無

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

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