Как я могу проверить с помощью командной строки последний коммит хеша определенной ветки Git?
Команда для получения последнего хита Git commit из ветки
Ответ 1
Используйте 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^{}
Просто возьмите тот, который вам нужен, и вырежьте его:
:: 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
Примечание: это не должен быть URL git://
. Это может быть https://
или [email protected]:
тоже.
Первоначально это было направлено на выяснение самого последнего коммита удаленной ветки (не только из вашего последнего извлечения, но и самого последнего коммита в ветке в удаленном репозитории). Если вам нужен хеш коммитов для чего-то локально, лучший ответ:
git rev-parse branch-name
Это быстрая, простая и единая команда. Если вам нужен хеш коммита для текущей ветки, вы можете посмотреть на HEAD:
git rev-parse HEAD
Ответ 2
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
Ответ 3
Попробуйте использовать git log -n 1
после выполнения git checkout branchname
. Это показывает сообщение хеширования, автора, даты и фиксации для последней фиксации.
Сначала выполните git pull origin/branchname
, чтобы убедиться, что ваше местное репо совпадает с предыдущим.
Если возможно, вам просто хотелось бы увидеть список коммитов, на котором расположена ваша локальная ветка на удаленной ветке, выполните следующие действия:
git fetch origin
git cherry localbranch remotebranch
Здесь будут перечислены все хэши коммитов, которые вы еще не объединили в свою локальную ветвь.
Ответ 4
вы можете git fetch nameofremoterepo
, а затем git log
и лично я использую псевдоним gitlog
для git log --graph --oneline --pretty --decorate --all
. попробуйте и посмотрите, подходит ли он вам
Ответ 5
В комментарии вы написали
Я хочу показать, что есть разница в локальном и 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
Ответ 6
Обратите внимание, что при использовании параметра "git log -n 1 [имя_панели]". -n возвращает только одну строку журнала, но порядок, в котором это возвращается, не гарантируется. Ниже приведен пример из git -log man page
.....
.....
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>
.....
.....