후 git clone
, 빌드 분기에 이루어졌다. 디렉토리를 트리 상단으로 변경하고 git branch 를 수행했을 때 아무것도 반환되지 않았습니다.
# git branch
* (no branch)
내가 찾을 수있는 역사를 살펴보면 다음을 보았습니다.
# git clone <repo>
# git checkout -f f4295f4c9e3226d50af3bba48f1a82cdde16ee7a
# get rev-list --no-walk f4295f4c9e3226d50af3bba48f1a82cdde16ee7a
위의 정보를 찾을 수 없다면 어떤 git 명령을 사용하여 브랜치 이름 을 추적 하거나 빌드를 위해 트리가 체크 아웃 된 해시 를 추적 할 수 있습니까?
내가 [ran] git branch 했을 때 아무것도 반환되지 않았습니다.
# git branch * (no branch)
이것은 정확히 아무것도 아닙니다 . 그러나 최신 버전의 Git은 다음과 같이 인쇄됩니다.
* (HEAD detached at f4295f4c)
[이 결과는 다음과 같습니다.]
# git checkout -f f4295f4c9e3226d50af3bba48f1a82cdde16ee7a
해시 ID로 특정 커밋을 확인하면 Git이 분리 된 HEAD 라고 부르는 것이 생성 됩니다. 이것이이 상태에 들어가는 유일한 방법은 아니지만 일반적인 방법입니다. 또 다른 일반적인 방법은 태그 이름 을 확인하는 것입니다. 예 :
$ git checkout v2.21.0
[messages]
Note: switching to 'v2.21.0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
[snip]
$ git branch
* (HEAD detached at v2.21.0)
위의 정보를 찾을 수 없다면 브랜치 이름 을 추적하는 데 어떤 git 명령을 사용할 수 있었 습니까 ?
지점 이름 이 없을 수도 있습니다 . 위와 같이 원시 해시 ID를 사용하고 태그 이름을 사용하는 경우입니다. Git에서 커밋은 브랜치 이름 과 무관합니다 . 어떤 브랜치 에도 커밋이 필요하지 않으며 모든 커밋은 동시에 여러 브랜치에 있을 수 있습니다 . 주어진 커밋에 대해 하나의 브랜치 이름이 있다고 가정하지 마십시오.
(예를 들어 Mercurial과는 대조적으로 주어진 커밋에 대해 정확히 하나의 브랜치 이름이 있습니다. 일단 만들어지면 커밋은 해당 브랜치에 영원히 또는 제거 될 때까지 (둘 중 먼저 발생하는 시점에) 발생합니다. Mercurial의 브랜치는 견고합니다. Git에서, 커밋은 영원히 커밋은 고체하지만 포함하는 지점 이름입니다있는 변화 시간이 지남에가. 지점은 고체, 액체되지 않습니다.)
... 또는 빌드를 위해 트리가 어떤 해시 에서 체크 아웃 되었습니까?
최신 Git은 git branch
위와 같이 출력 에 축약 된 해시 ID 를 표시합니다. 모든 버전의 Git에서 항상 다음을 사용하여 현재 커밋의 현재 해시 ID를 얻을 수 있습니다 git rev-parse HEAD
.
$ git checkout master
[messages snipped]
$ git rev-parse HEAD
c7a62075917b3340f908093f63f1161c44ed1475
현재 분기가있는 경우 다음을 사용하여 찾을 수 있습니다 git symbolic-ref
.
$ git symbolic-ref HEAD
refs/heads/master
HEAD가 분리되면 해시 ID 또는 태그 이름으로 특정 커밋을 확인할 때와 같이 symbolic-ref
명령 이 실패 하여 분기에 전혀 없음을 나타냅니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다