Przeglądanie Nieupoważnionych Commitów Git
W Jaki Sposób mogę wyświetlić wprowadzone przez siebie zmiany lokalne, które nie zostały jeszcze wysłane do zdalnego repozytorium? Od czasu do czasu git status
wypisuje, że moja gałąź jest commitem X przed origin/master
, ale nie zawsze.
Czy to błąd z moją instalacją Gita, czy coś mi umyka?
24 answers
git log origin/master..HEAD
Można również wyświetlić diff używając tej samej składni
git diff origin/master..HEAD
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-21 12:03:50
Jeśli chcesz zobaczyć wszystkie commity na wszystkich gałęziach, które nie są jeszcze wypchnięte, możesz szukać czegoś takiego:
git log --branches --not --remotes
I jeśli chcesz zobaczyć tylko najnowszy commit na każdej gałęzi i nazwy gałęzi, to:
git log --branches --not --remotes --simplify-by-decoration --decorate --oneline
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-24 01:14:16
Możesz pokazać wszystkie commity, które masz lokalnie, ale nie pod prąd za pomocą
git log @{u}..
@{u}
lub @{upstream}
oznacza gałąź nadrzędną bieżącej gałęzi (patrz git rev-parse --help
lub git help revisions
po szczegóły).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-06 14:20:28
To mi pomogło:
git cherry -v
Jak wskazano w Git: Zobacz wszystkie nieużywane commity lub commity, które nie znajdują się w innej gałęzi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-01 00:55:45
Możesz to zrobić z git log
:
git log origin..
Zakładając, że {[2] } jest nazwą Twojego źródła, pomijając nazwę rewizji po ..
implikuje HEAD
, która wymienia nowe commity, które nie zostały wypchnięte.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-06 22:46:35
Handy Git alias do szukania nieużywanych commitów w current branch:
alias unpushed = !GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && git log origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline
Co to w zasadzie robi:
git log origin/branch..branch
Ale również określa bieżącą nazwę gałęzi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-27 12:41:55
Możesz spróbować....
gitk
Wiem, że nie jest to czysta opcja wiersza poleceń, ale jeśli masz ją zainstalowaną i jesteś w systemie GUI, jest to świetny sposób, aby zobaczyć dokładnie to, czego szukasz plus dużo więcej.
(Jestem trochę zaskoczony, że nikt o tym nie wspomniał.)Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-27 21:04:33
Wszystkie inne odpowiedzi mówią o "upstream" (gałąź, z której wyciągasz).
Ale lokalna gałąź może wcisnąć do innej gałęzi niż ta, z której wyciąga.
master
może nie przesunąć do gałęzi zdalnego śledzenia " origin/master
".
Może to być gałąź upstream dla master
, ale może przesunąć się do gałęzi zdalnego śledzenia origin/xxx
lub nawet anotherUpstreamRepo/yyy
.
Są one ustawiane przez branch.*.pushremote
dla bieżącej gałęzi wraz z global remote.pushDefault
wartość.
Jest to gałąź zdalnego śledzenia, która liczy się przy wyszukiwaniu nieprzepuszczonych commitów: ta, która śledzi branch at the remote
, gdzie lokalna gałąź zostanie pchnięta.branch at the remote
może być ponownie origin/xxx
lub nawet anotherUpstreamRepo/yyy
.
Git 2.5 + (Q2 2015) wprowadza nowy skrót do tego: <branch>@{push}
Zobacz commit 29bc885, commit 3dbe9db, commit adfe5d0, / align = "left" / 485847, commit a1ad0eb , commit e291c75, / align = "left" / 979cb24, / align = "left" / 1ca41a1, / align = "left" / 3a429d0, commit a9f9f8c, / align = "left" / 8770e6f, commit da66b27, / align = "left" / f052154, / align = "left" / 9e3751d, commit ee2499f [Wszystkie od 21 maja 2015] i commit e41bf35 [01 maja 2015] by Jeff King (peff
).
(dodane przez Junio C Hamano -- gitster
-- in commit c4a8354, 05 Jun 2015)
Commit adfe5d0 wyjaśnia:
sha1_name
:@{push}
SkrótW trójkątnym przepływie pracy, każda gałąź może mieć dwa różne punkty zainteresowania:
@{upstream}
, z którego normalnie się ciągnie, i miejsce docelowe, do którego zwykle się pcha. Nie ma skrótu dla tego drugiego, ale warto go mieć.Na przykład, możesz chcieć wiedzieć, których commitów nie posiadasz popchnięty jeszcze :
git log @{push}..
Lub jako bardziej skomplikowany przykład, wyobraź sobie, że zwykle wyciągasz zmiany z
origin/master
(które ustawiasz jako@{upstream}
) i przesuwasz zmiany do własnego widelca (np. jakomyfork/topic
).
Można naciskać na widelec z wielu maszyn, wymagających zintegrować zmiany z miejsca docelowego push, a nie przed.
Z tym patchem możesz po prostu zrobić: {]}
git rebase @{push}
Zamiast wypisywać pełną nazwisko.
Commit 29bc885 dodaje:
for-each-ref
: accept "%(push)
" formatTak jak mamy "
%(upstream)
"do zgłoszenia"@{upstream}
"dla każdego ref, ta łatka dodaje"%(push)
" do dopasowania "@{push}
".
Obsługuje te same modyfikatory formatu śledzenia, co w upstream (ponieważ możesz chcieć wiedzieć, na przykład, które gałęzie mają commity do wypchnięcia ).
Jeśli chcesz zobaczyć ile commitów jest Twoich lokalnych gałęzi przed/za w porównaniu do gałęzi, do której pcha się:
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-03 11:13:20
git branch -v
pokaże, dla każdego oddziału lokalnego, czy jest "przed", czy nie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-20 11:08:11
Używam następującego aliasu, aby uzyskać tylko listę plików (i status), które zostały zatwierdzone, ale nie zostały wypchnięte (dla bieżącej gałęzi)
git config --global alias.unpushed \
"diff origin/$(git name-rev --name-only HEAD)..HEAD --name-status"
To po prostu zrób:
git unpushed
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-01 00:55:06
Uważam, że najbardziej typowym sposobem jest prowadzenie czegoś takiego jak:
git cherry --abbrev=7 -v @{upstream}
Jednak ja osobiście wolę biegać:
git log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..
, który pokazuje commity zwszystkich gałęzi , które nie są scalane pod prąd, plus ostatni commit w pod prąd (który pokazuje się jako węzeł główny dla wszystkich pozostałych commitów). Używam go tak często, że stworzyłem dla niego alias noup
.
git config --global alias.noup \
'log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-01 00:56:23
Proponuję zapoznać się ze skryptem https://github.com/badele/gitcheck , zakodowałem ten skrypt, aby sprawdzić w jednym przejściu wszystkie repozytoria git, i pokazuje on, kto nie zlecił, a kto nie pchnął / pociągnął.
Tutaj przykładowy wynik
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-27 12:27:41
git cherry -v
To wyświetli lokalną historię komentarzy (jeszcze nie wypchniętą) z odpowiednią wiadomością
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-11 18:48:11
To nie jest błąd. Prawdopodobnie widzisz git status po nieudanym Auto-merge, gdzie zmiany z pilota są pobierane, ale nie są jeszcze scalane.
Aby zobaczyć commity pomiędzy lokalnym repo a zdalnym, wykonaj następujące czynności:
git fetch
To jest w 100% bezpieczne i nie będzie makiety kopii roboczej. Jeśli nastąpiły zmiany git status
wil Pokaż X commits ahead of origin/master
.
Możesz teraz wyświetlać log commitów, które znajdują się w zdalnym, ale nie w lokalnym:
git log HEAD..origin
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-06 22:47:11
Istnieje narzędzie o nazwie unpushed, które skanuje wszystkie repozytoria Git, Mercurial i Subversion w podanym katalogu roboczym i wyświetla listę ucommited plików i unpushed commitów. Instalacja jest prosta pod Linuksem:
$ easy_install --user unpushed
Lub
$ sudo easy_install unpushed
Do instalacji w całym systemie.
Użycie jest również proste:
$ unpushed ~/workspace
* /home/nailgun/workspace/unpushed uncommitted (Git)
* /home/nailgun/workspace/unpushed:master unpushed (Git)
* /home/nailgun/workspace/python:new-syntax unpushed (Git)
Zobacz unpushed --help
lub oficjalny opis aby uzyskać więcej informacji. Posiada również skrypt cronjob unpushed-notify
do powiadamiania na ekranie o niezatwierdzonych i nieużywanych zmiany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-26 18:12:52
Dla mnie to działało lepiej:
git log --oneline @{upstream}..
Lub:
git log --oneline origin/(remotebranch)..
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-17 18:20:09
Aby wyświetlić listę wszystkich nieprzepisanych commitów we wszystkich gałęziach , możesz użyć polecenia:
git log --branches @{u}..
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-20 08:59:54
Miałem commit zrobiony wcześniej, nie wypchnięty do żadnej gałęzi, ani odległy, ani lokalny. Tylko zobowiązanie. Nic z innych odpowiedzi mi nie wyszło, ale z:
git reflog
Tam znalazłem mój commit.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 06:32:08
Jeśli liczba commitów, które nie zostały wypchnięte jest liczbą jednocyfrową, którą często jest, najprostszym sposobem jest:
$ git checkout
Git odpowiada mówiąc, że jesteś "przed N commits" w stosunku do swojego pochodzenia. Więc teraz po prostu pamiętaj o tym numerze podczas przeglądania dzienników. Jeśli "wyprzedzasz o 3 commity", 3 ostatnie commity w historii są nadal prywatne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-01 19:49:42
Podobne: aby wyświetlić unmerged branches:
git branch --all --no-merged
Te mogą być podejrzane, ale polecam odpowiedź przez cxreg
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-31 14:01:28
Jednym ze sposobów działania jest lista commitów, które są dostępne w jednej gałęzi, ale nie w innej.
git log ^origin/master master
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-04 13:18:17
Oto moje przenośne rozwiązanie (skrypt powłoki, który działa również na Windows bez dodatkowej instalacji), które pokazuje różnice od pochodzenia dla wszystkich gałęzi: git-fetch-log
Przykładowe wyjście:
==== branch [behind 1]
> commit 652b883 (origin/branch)
| Author: BimbaLaszlo <[email protected]>
| Date: 2016-03-10 09:11:11 +0100
|
| Commit on remote
|
o commit 2304667 (branch)
Author: BimbaLaszlo <[email protected]>
Date: 2015-08-28 13:21:13 +0200
Commit on local
==== master [ahead 1]
< commit 280ccf8 (master)
| Author: BimbaLaszlo <[email protected]>
| Date: 2016-03-25 21:42:55 +0100
|
| Commit on local
|
o commit 2369465 (origin/master, origin/HEAD)
Author: BimbaLaszlo <[email protected]>
Date: 2016-03-10 09:02:52 +0100
Commit on remote
==== test [ahead 1, behind 1]
< commit 83a3161 (test)
| Author: BimbaLaszlo <[email protected]>
| Date: 2016-03-25 22:50:00 +0100
|
| Diverged from remote
|
| > commit 4aafec7 (origin/test)
|/ Author: BimbaLaszlo <[email protected]>
| Date: 2016-03-14 10:34:28 +0100
|
| Pushed remote
|
o commit 0fccef3
Author: BimbaLaszlo <[email protected]>
Date: 2015-09-03 10:33:39 +0200
Last common commit
Mogą być użyte parametry przekazywane do logu, np. --oneline
lub --patch
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-25 06:51:40
git show
Pokaże wszystkie diffy w Twoich lokalnych commitach.
git show --name-only
Wyświetli lokalny identyfikator zatwierdzenia i nazwę zatwierdzenia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-30 21:13:18
git diff origin
Zakładając, że Twoja gałąź jest ustawiona do śledzenia pochodzenia, to powinno to pokazać różnice.
git log origin
Da ci podsumowanie commitów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-06 22:46:17