문제

나는 이것이 프로그래밍 질문이 아니라는 것을 알고 있지만 GIT와 관련이 있습니다. 실수로 Git에 지점을 만들었습니다 --track (원격 지점을 병합 할 때 옵션 순서가 잘못되었습니다)

일반 명령은 작동하지 않습니다.

git branch -D "--track"  

나는 인용문과 뒤로 슬래시로 탈출하려고 노력했지만 아무런 효과가 없었다.

어떤 아이디어?

도움이 되었습니까?

해결책

시도해 보았 니

git branch -D -- --track

? "--"일반적으로"다음은 옵션이 아니며, 그 이름이 무엇이든 간의 컨벤션 "입니다.


에서 "유닉스 프로그래밍의 예술", 부분 "명령 줄 옵션":

또한 이중 하이픈을 옵션 해석을 중지하고 문자 그대로 다음 인수를 처리하는 신호로 인식하는 것도 전통적입니다.

당신은 다른 (필요한 UNIX 관련) CLI (명령 줄 인터페이스)에서의 규칙을 알게 될 것입니다. ClearTool:

만약 옵션 논쟁 하이픈으로 시작합니다 () 캐릭터, 당신은 옵션으로 해석되는 것을 방지하기 위해 이중 하이픈 인수로 우선해야 할 수도 있습니다.

cleartool rmtype -lbtype -- -temporary_label- 

그만큼 P18 (매크로 처리 기능과 국제화에 대한 특별 지원을 갖춘 빠르고 유연한 파일 전 처리기)를 언급하고 그 컨벤션의 일반적인 아이디어에 대한 좋은 설명을 제공합니다.

명령에 전달 된 모든 옵션 인수는 단일 하이픈으로 시작합니다.
모든 옵션 인수 (있는 경우)는 모든 비 옵션 인수보다 우선해야합니다.
옵션 인수의 끝은 이중 하이픈, 이것은 비 옵션 인수가 하이픈으로 시작하는 경우에 유용합니다. 이중 하이픈으로 옵션 인수 목록을 종료하면 옵션 인수를받지 않는 모든 명령에 대해서도 모든 명령에 대해 작동합니다.

그만큼 옵션 파서 Ruby로 작성된 도구도 아주 분명하게 설명합니다.

옵션 구문 분석 종료

이중 하이픈은 옵션 해석을 중지하고 명령 줄에서 나머지 문자를 문자 그대로 읽는 신호라는 규칙입니다. 따라서 다음과 같은 명령.

 app -- -x -y -z

세 모드 플래그를 '볼'하지 않습니다. 대신, 그들은 응용 프로그램에 대한 논쟁으로 취급됩니다.

 #args = ["-x", "-y", "-z"]

참고 : 때로는 CLI가 GNU 옵션 스타일을 엄격하게 따를 때 두 가지가 아닌 3 개의 대시가 필요합니다.

GNU 스타일 명령 줄 옵션은 옵션 단어 (또는 키워드)를 지원하지만 여전히 UNIX 스타일 옵션과의 호환성을 유지합니다.
이 스타일의 옵션은 때때로 long_options 그리고 유닉스 스타일 옵션은 다음과 같습니다 short_options.
호환성은 Long_Options가 두 개의 대시로 앞서 유지됩니다.

Unix 스타일의 Double-Hyphen과 유사합니다.--', GNU 스타일은 트리플 하이핀을 가지고 있습니다.'---'옵션 구문 분석을 중단하고 나머지 텍스트를 인수로 취급하기 위해 (즉, 명령 줄에서 문자 그대로 읽으려면)

그래서 만약 ' -- '충분하지 않습니다 (git 명령이 있어야합니다), 시도해보십시오.' --- '

다른 팁

git branch -D -- --track

MSYSGIT 1.7.0.2를 사용하고 있으며 제안 된 솔루션은 작동하지 않습니다.

git branch -d--track #이 작동하지 않습니다

오류는보고되지 않았지만 분기는 여전히 남아 있습니다. 나는 다음을 통해 지점을 강제로 제거했다.

rm .git/refs/heads/-트랙

이중 하이픈은 이중 인용문과 암페인드가 포함 된 지점 이름이있는 리모컨에서 나에게 작동하지 않았습니다. 그러나 이름 인용문을 감싸고 포함 된 인용문을 피하는 것은 작업을 수행했습니다.

git push origin --delete "123-my-branch-&-some\"quoted-text\""

그리고 현지 :

git branch -D "123-my-branch-&-some\"quoted-text\""

실수로 "-r"브랜치로 끝나는 비슷한 문제가있었습니다. git 명령을 사용하여 제거하는 방법을 알 수 없었으므로 .git 폴더에서 제거합니다.

$ cd .git/refs/head $ ls *r -r $ rm "*r"

이 솔루션은 "R"로 끝나는 유일한 지점 이었지만 문제를 해결했습니다.

원하는 분기를 삭제할 수있는 소프트웨어 mamed sourcetree를 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top