특정 Git 브랜치의 최신 커밋 해시를 명령 줄로 어떻게 확인할 수 있습니까?
git log -n 1 [branch_name]
branch_name (원격 또는 로컬 분기 일 수 있음)은 선택 사항입니다. branch_name이 없으면 현재 분기의 최신 커밋이 표시됩니다.
특정 Git 브랜치의 최신 커밋 해시를 명령 줄로 어떻게 확인할 수 있습니까?
git log -n 1 [branch_name]
branch_name (원격 또는 로컬 분기 일 수 있음)은 선택 사항입니다. branch_name이 없으면 현재 분기의 최신 커밋이 표시됩니다.
답변:
사용 git ls-remote git://github.com/<user>/<project>.git
. 예를 들어, 내 trac-backlog 프로젝트는 다음을 제공합니다.
:: git ls-remote git://github.com/jszakmeister/trac-backlog.git
5d6a3c973c254378738bdbc85d72f14aefa316a0 HEAD
4652257768acef90b9af560295b02d0ac6e7702c refs/heads/0.1.x
35af07bc99c7527b84e11a8632bfb396823326f3 refs/heads/0.2.x
5d6a3c973c254378738bdbc85d72f14aefa316a0 refs/heads/master
520dcebff52506682d6822ade0188d4622eb41d1 refs/pull/11/head
6b2c1ed650a7ff693ecd8ab1cb5c124ba32866a2 refs/pull/11/merge
51088b60d66b68a565080eb56dbbc5f8c97c1400 refs/pull/12/head
127c468826c0c77e26a5da4d40ae3a61e00c0726 refs/pull/12/merge
2401b5537224fe4176f2a134ee93005a6263cf24 refs/pull/15/head
8aa9aedc0e3a0d43ddfeaf0b971d0ae3a23d57b3 refs/pull/15/merge
d96aed93c94f97d328fc57588e61a7ec52a05c69 refs/pull/7/head
f7c1e8dabdbeca9f9060de24da4560abc76e77cd refs/pull/7/merge
aa8a935f084a6e1c66aa939b47b9a5567c4e25f5 refs/pull/8/head
cd258b82cc499d84165ea8d7a23faa46f0f2f125 refs/pull/8/merge
c10a73a8b0c1809fcb3a1f49bdc1a6487927483d refs/tags/0.1.0
a39dad9a1268f7df256ba78f1166308563544af1 refs/tags/0.2.0
2d559cf785816afd69c3cb768413c4f6ca574708 refs/tags/0.2.1
434170523d5f8aad05dc5cf86c2a326908cf3f57 refs/tags/0.2.2
d2dfe40cb78ddc66e6865dcd2e76d6bc2291d44c refs/tags/0.3.0
9db35263a15dcdfbc19ed0a1f7a9e29a40507070 refs/tags/0.3.0^{}
필요한 것을 grep하고 잘라내십시오.
:: git ls-remote git://github.com/jszakmeister/trac-backlog.git | \
grep refs/heads/master | cut -f 1
5d6a3c973c254378738bdbc85d72f14aefa316a0
또는 명령 줄에서 원하는 참조를 지정하고 다음을 사용하여 grep을 피할 수 있습니다.
:: git ls-remote git://github.com/jszakmeister/trac-backlog.git refs/heads/master | \
cut -f 1
5d6a3c973c254378738bdbc85d72f14aefa316a0
참고 : git://
URL 이 아니 어도됩니다. 이 수 https://
또는 git@github.com:
너무.
원래 이것은 원격 브랜치의 최신 커밋 (마지막 페치뿐만 아니라 원격 저장소의 브랜치에있는 실제 최신 커밋)을 찾는 데 맞춰졌습니다. 로컬에서 커밋 해시가 필요한 경우 가장 좋은 대답은 다음과 같습니다.
git rev-parse branch-name
빠르고 쉬우 며 단일 명령입니다. 현재 분기에 대한 커밋 해시를 원하면 HEAD를 볼 수 있습니다.
git rev-parse HEAD
git rev-parse my_branch_name
또는 git log -n 1 my_branch_name | grep commit | awk '{ print $2 }'
더 간단한 대답; 의지의 출력은 마지막이의 해시 커밋my_branch_name
refs/remotes
것이 아니라 실제 원격 저장소). git rev-parse branch-name
확실히 지역 지점으로가는 길입니다.
git svn
하기 때문에 필드에서만 작동 하므로 더 이상 마지막 원격 git 저장소 커밋 해시 를 얻는 데 사용할 수 없습니다 . git svn fetch
git log
git log
git log -n 1 [branch_name]
branch_name
(원격 또는 로컬 지점 일 수 있음)은 선택 사항입니다. 를 사용하지 않으면 branch_name
현재 브랜치의 최신 커밋이 표시됩니다.
예를 들면 :
git log -n 1
git log -n 1 origin/master
git log -n 1 some_local_branch
git log -n 1 --pretty=format:"%H" #To get only hash value of commit
git hash | pbcopy clip
```[alias] hash = "! f () {\ git log -n 1 --pretty = format :"% H "; \}; f "```
사용해보십시오 git log -n 1
을 수행 한 후 git checkout branchname
. 이것은 최근 커밋에 대한 커밋 해시, 작성자, 날짜 및 커밋 메시지를 보여줍니다.
수행 git pull origin/branchname
반드시 해당 지역의 repo 일치 상류하기 위해, 먼저.
로컬 브랜치가 원격 브랜치 뒤에있는 커밋 목록 만보고 싶다면 다음과 같이하십시오.
git fetch origin
git cherry localbranch remotebranch
이렇게하면 아직 로컬 브랜치에 병합하지 않은 커밋의 모든 해시가 나열됩니다.
할 수 있습니다 git fetch nameofremoterepo
.git log
개인적 gitlog
으로 git log --graph --oneline --pretty --decorate --all
. 시도해보고 그것이 당신에게 맞는지 확인하십시오
--online
는 --pretty=oneline --abbrev-commit
. 하지만 당신이 사용하고 --pretty
있는 되돌립니다뿐만 아니라 --pretty=oneline
... 내가 추천 할 것입니다 git log --graph --abbrev-commit --decorate --all
대신.
당신이 쓴 코멘트에서
로컬과 github repo에 차이가 있음을 보여주고 싶습니다.
다른 답변에서 이미 언급했듯이 git fetch origin
먼저 해야합니다 . 그런 다음 원격이 현재 분기보다 앞서 있으면 다음을 사용하여 로컬 분기와 원격 간의 모든 커밋을 나열 할 수 있습니다.
git log master..origin/master --stat
현지 지점이 앞서있는 경우 :
git log origin/master..master --stat
--stat
변경된 파일 목록도 표시됩니다.
추가 및 삭제를 명시 적으로 나열하려면 git diff
다음을 사용하십시오 .
git diff master origin/master
"git log -n 1 [branch_name]"옵션을 사용할 때 유의하십시오. -n은 한 줄의 로그 만 반환하지만 반환되는 순서는 보장되지 않습니다. 다음은 git-log man 페이지에서 발췌 한 것입니다.
.....
.....
Commit Limiting
Besides specifying a range of commits that should be listed using the special notations explained in the description, additional commit limiting may be applied.
Using more options generally further limits the output (e.g. --since=<date1> limits to commits newer than <date1>, and using it with --grep=<pattern> further limits to commits whose log message has a line that matches <pattern>), unless otherwise noted.
Note that these are applied before commit ordering and formatting options, such as --reverse.
-<number>
-n <number>
.....
.....