簡體   English   中英

使用 Git 刪除本地分支

[英]Deleting a local branch with Git

我有一個名為Test_Branch的分支。 當我嘗試使用推薦方法刪除它時,出現以下錯誤:

無法刪除在“[目錄位置]”檢出的分支“Test_Branch”。

除此之外我沒有得到其他信息。 我可以輕松地吹走遠程分支,但本地分支不會 go 消失。

切換到其他一些分支並刪除Test_Branch ,如下所示:

$ git checkout master
$ git branch -d Test_Branch

如果上述命令給您錯誤 - The branch 'Test_Branch' is not fully merged. If you are sure you want to delete it The branch 'Test_Branch' is not fully merged. If you are sure you want to delete it仍然想刪除它,那么您可以使用-D而不是-d強制刪除它,如下所示:

$ git branch -D Test_Branch

要從遠程刪除Test_Branch ,請執行:

git push origin --delete Test_Branch

您可能已簽出 Test_Branch,並且當它是您的當前分支時,您可能無法將其刪除。 簽出不同的分支,然后嘗試刪除 Test_Branch。

今天遇到了這個問題,切換到另一個分支沒有幫助。 事實證明,不知何故我的工作樹信息已損壞,並且有一個與我的工作目錄具有相同文件夾路徑的工作樹,其中HEAD指向分支( git worktree list )。 我刪除了引用它的.git/worktree/文件夾並且git branch -d工作。

如果您使用git worktree創建了多個工作,則需要先運行git prune才能刪除分支

就我而言,前一個分支中有未提交的更改。 我使用了以下命令,然后刪除工作。

git 結帳 *

git結帳大師

git 分支 -D

這對我有用...
我已經刪除了 .git/worktrees 文件夾中的文件夾,然后嘗試了“git delete -D branch-name”。

像其他人提到的那樣,您不能刪除您正在工作的當前分支。

就我而言,我在Visual Studio 中選擇了“Test_Branch”,並試圖從 Sourcetree(Git GUI)中刪除“Test_Branch”。 並收到以下錯誤消息。

無法刪除在“[目錄位置]”簽出的分支“Test_Branch”。

切換到Visual Studio 中的不同分支,並能夠從 Sourcetree 中刪除“Test_Branch”。

我希望這對使用Visual StudioSourcetree 的人有所幫助。

今天為git branch -a報告的git branch -a remotes/coolsnake/dev了這個問題,看起來像這樣一個: remotes/coolsnake/dev ,即在注冊的git remote add ... remotes 中對“遠程”分支的本地引用。

當你嘗試

git branch -d remotes/coolsnake/dev

你會得到error: branch 'remotes/coolsnake/dev' not found

神奇的是在這里記住這些是引用並且必須通過以下方式刪除

git update-ref -d remotes/coolsnake/dev

(根據https://superuser.com/questions/283309/how-to-delete-the-git-reference-refs-original-refs-heads-master/351085#351085

花了一段時間才發現我的錯誤,只有 TortoiseGit 可以做到這一點,當我陷入困境時才使我走上了正確的道路。 盡管有幾種不同的方法,谷歌沒有提供任何有用的東西。 (不,我已經找到了我需要的東西,還有git: How to delete a local ref branch? ,它沒有出現,因為我忘記了關於這些分支是引用的“ref”位。)

希望這可以幫助其他人在與我在同一條船上時擺脫困境,嘗試過濾/選擇性刪除倉庫中的分支,其中一些分支由於以前的git remote add命令而存在。


在 shell 腳本中,這可能如下所示:

#! /bin/bash
#
# Remove GNU/cesanta branches so we cannot accidentally merge or cherrypick from them!
# 

# commit hash is first GNU commit
R=218428662e6f8d30a83cf8a89f531553f1156d25

for f in $( git tag -l ; git branch -a ) ; do 
    echo "$f"
    X=$(git merge-base $R "$f" ) 
    #echo "X=[$X]" 
    if test "$X" = "$R" ; then 
        echo GNU 
        git branch -D "$f" 
        git update-ref -d "refs/$f" 
        git tag -d "$f" 
        #git push origin --delete "$f" 
    else 
        echo CIVETWEB 
    fi
done

大多數初級程序員面臨

Cannot delete branch 'my-branch-name'

因為他們已經在那個分支上。

刪除您已經在處理的分支是不合邏輯的。

只需切換到另一個分支,如masterdev ,然后刪除您想要的分支:

git checkout dev

git branch -d my-branch-name

沒有force delete ,你可以刪除那個分支

如果您在已簽出但無法刪除分支並收到此錯誤消息的情況下遇到此問題

“錯誤:無法刪除在 ..... 檢出的分支 'issue-123'”

然后使用 git branch 檢查您當前所在的分支

如果您嘗試刪除的分支是您當前的分支,則不能刪除相同的分支。 只需切換到主或主或任何其他分支,然后嘗試刪除

git checkout main 或 master

git 分支 -d 分支名稱 git 分支 -D 分支名稱 git 分支 -D 分支名稱 --force

遇到同樣的問題,檢查到不同的分支並使用git branch -D branch_name為我工作

我有一個類似的問題,除了變基中間的壞分支。
git checkout bad_branch && git rebase --abort解決了我的問題。

如果任何其他答案對您不起作用,那么如果您處於變基過程中,也會發生這種情況。 所以要么完成 rebase 要么中止它:

git rebase --abort

之后,您可以刪除該分支。

git branch --D branch-name

請運行此代碼刪除

暫無
暫無

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

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