programing

현재 Git 브랜치를 삭제하려면 어떻게 해야 합니까?

starjava 2023. 5. 2. 22:13
반응형

현재 Git 브랜치를 삭제하려면 어떻게 해야 합니까?

는 라는지있습다니이점▁called라는 있습니다.Test_Branch권장 방법을 사용하여 삭제하려고 하면 다음 오류가 발생합니다.

'[디렉토리 위치]'에서 체크아웃한 'Test_Branch' 분기를 삭제할 수 없습니다.

저는 그것 외에는 다른 정보를 얻지 못합니다.원격지는 쉽게 날려버릴 수 있지만 로컬지는 사라지지 않습니다.

하여 삭제합니다.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그래도 삭제하려는 경우 다음과 같이 대신 를 사용하여 강제로 삭제할 수 있습니다.

$ git branch -D Test_Branch

Test_Branch원격에서도 다음을 실행합니다.

git push origin --delete Test_Branch

오늘 우연히 이 문제를 만났지만 다른 지점으로 전환하는 것은 도움이 되지 않았습니다.작업 트리 정보가 손상되었고 작업 디렉터리와 동일한 폴더 경로를 가진 작업 트리가 있습니다.HEAD가지를 가리키며(git worktree list). 을.git/worktree/ 폴더와 을참있던폴더와고하조.git branch -d일했다.

아마도 Test_Branch가 체크아웃되어 있을 것이며 현재 분기인 동안에는 삭제할 수 없습니다.다른 분기를 체크아웃한 다음 Test_Branch를 삭제해 보십시오.

git 작업 트리로 여러 개의 작업 트리를 만든 경우에는git worktree prune

저의 경우 이전 지점에서 커밋되지 않은 변경 사항이 남아 있습니다.저는 다음 명령을 사용한 후 작업을 삭제했습니다.

git checkout *    
git checkout master
git branch -D <branch name>

불량 브랜치가 리베이스 중이라는 점을 제외하고는 비슷한 문제가 있었습니다.
git checkout bad_branch && git rebase --abort제 문제를 해결했습니다.

상대한 대부분의 주니어 프로그래머들은

Cannot delete branch 'my-branch-name'

왜냐하면 그들은 이미 그 지점에 있기 때문입니다.

이미 작업 중인 분기를 삭제하는 것은 논리적이지 않습니다.

그냥 다음과 같은 다른 지점으로 전환합니다.master또는dev그런 다음 원하는 분기를 삭제합니다.

git checkout dev

git branch -d my-branch-name

없이force delete은 그 할 수 .

체크아웃한 지점을 삭제할 수 없는 이 문제가 발생하여 이 오류 메시지가 표시되는 경우

"오류: 체크아웃된 'issue-123' 분기를 삭제할 수 없습니다..."

그런 다음 git branch를 사용하여 현재 있는 branch를 확인합니다.

삭제하려는 분기가 현재 분기인 경우 동일한 분기를 삭제할 수 없습니다.기본 또는 마스터 또는 다른 분기로 전환한 다음 삭제를 시도하십시오.

git 체크아웃 메인 또는 마스터

git branch -d branchname git branch -D branchname git branch -D branchname --force

다른 답변이 사용자에게 적용되지 않는 경우, 기본 재배치 중인 경우에도 이 문제가 발생할 수 있습니다.기본 재배치를 완료하거나 중단합니다.

git rebase --abort

그런 다음 분기를 제거할 수 있습니다.

저의 경우, 저는 리셋을 하지 않은 것 같습니다.가 되는 분기로 , " " " " " " 를 실행합니다.git bisect reset그런 다음 다른 분기로 전환하면 문제가 되는 분기를 삭제할 수 있습니다.

이건 나한테 효과가 있었어요
. " delete git/worktree "git delete -D branch-name"을 사용해.

▁by▁에서 보고한 지점에 대해 오늘 이 문제가 했습니다.git branch -a것을 : 고다음과같보입다니이그리보다.remotes/coolsnake/dev즉의 "원격" .git remote add ...원격의

시도할 때

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) 에 따라)

내 실수를 밝혀내는 데 시간이 걸렸고 거북이 깃이 할 수 있다는 사실만이 내가 곤경에 처했을 때 나를 올바른 길로 이끌었습니다.Google은 몇 가지 다른 접근 방식에도 불구하고 유용한 기능을 제공하지 않았습니다. (아뇨, 필요한 기능을 찾았습니다.) 로컬 참조 분기를 삭제하는 방법은 무엇입니까? 로컬 참조 분기에 대한 'ref' 비트를 잊어버려서 표시되지 않았습니다.)

저와 배에 때 데 이 되기를 . 의 이이다선사저때있람와같을처이지에은른필인이일지것있서제바되터지해전부로않고링도으사할점다저니을때다랍거으점적로하도이록를려택기지정되고이움이른람에는소장선▁in▁▁to▁hope▁of▁trying▁else▁helpsselect/▁as▁this▁themo▁someone▁branches▁aively▁remove▁are▁filter▁rep▁they▁some,▁to▁to이필▁where바▁due▁present되고▁getuck▁the않사도▁when'제다때할git remote add명령을 실행합니다.


셸 스크립트에서 이는 다음과 같습니다.

#! /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

언급된 다른 항목과 마찬가지로 현재 작업 중인 지점을 삭제할 수 없습니다.

저의 경우 Visual Studio에서 "Test_Branch"를 선택하고 소스 트리(Git GUI)에서 "Test_Branch"를 삭제하려고 했습니다.그리고 아래 오류 메시지를 받고 있었습니다.

'[디렉토리 위치]'에서 체크아웃한 'Test_Branch' 분기를 삭제할 수 없습니다.

Visual Studio의 다른 분기로 전환하여 소스 트리에서 "Test_Branch"를 삭제할 수 있었습니다.

이것이 Visual Studio & Source 트리를 사용하는 사람에게 도움이 되길 바랍니다.

동일한 문제가 발생하여 다른 지점으로 체크아웃하고 사용했습니다.git branch -D branch_name나를 위해 일했습니다.

나쁜 대사의 대답은 워크트리에 있는 인부의 경우를 언급합니다.

한가지 이유는git bisect작업 트리의 분기를 체크아웃해야 하는 커밋에 남아 있기 때문에 불완전한 상태로 남아 있을 수 있습니다.동일한 분기가 다른 작업 트리에서도 체크아웃됩니다.

이러한 시나리오를 방지하기 위해 Git 2.41(Q2 2023)과 함께 새로운 옵션을 사용할 수 있습니다. 이 옵션을 사용하면 git bisect reset(man)"" 지점이 동일한 저장소에 연결된 다른 워크트리에서 이미 체크아웃된 경우 원래 지점을 체크아웃할 수 있습니다.

루벤 쥐스토()rjusto의 커밋 7fb8904(2023년 1월 22일)를 참조하십시오.
(주니오 C 하마노에 의해 합병됨 -- commit c79786c, 2023년 3월 19일)

bisect수정 "reset 곳에서 때▁when때.

사인 오프 바이: 루벤 쥐스토

1d0fa89 이후("checkout을 더하다--ignore-other-wortrees2015-01-03, Git v2.5.0-rc0 -- 배치 #2에 나열된 병합) 동일한 분기가 여러 워크트리에서 동시에 체크아웃되지 않도록 하기 위해 체크아웃/스위치에 안전 밸브가 있습니다.

분기가 다른 작업 트리에서 체크아웃되는 동안 작업 트리에서 이등분된 경우, 이등분이 완료되면 현재 작업 트리에서 분기를 다시 체크아웃하지 못할 수 있습니다.

"를 사용하도록 이등분을 가르칩시다.--ignore-other-worktrees 깃발

이제 다음을 수행할 수 있습니다.git bisect reset --ignore-other-worktrees(현재 이등분 정리)를 선택한 다음 기본 리포지토리에서 현재 분기를 삭제할 수 있도록 분기를 변경합니다.

git branch --D branch-name

삭제하려면 이 코드를 실행하십시오.

언급URL : https://stackoverflow.com/questions/41492254/how-can-i-delete-the-current-git-branch

반응형