Zmiana szczegółów po ściągnięciu Git
Po wywołaniu Git pull, jego wynik daje podsumowanie ilości zmian.
Jak mogę zobaczyć wszystkie lub niektóre z plików szczegółowych zmian?
Oto moje pytanie do Jefromi:Skąd mam wiedzieć, czy ciągnąłem do mistrza? Wszystko co zrobiłem to "git pull".
Na co wskazuje master i jaka jest różnica między master i HEAD, dwoma domyślnymi głowami Git?
Jak zobaczyć szczegółową zmianę w konkretnym akta?
Jak mogę ponownie zobaczyć zmianę w podsumowaniu o ostatnią
git pull
?Jaka jest różnica między
git diff
Agit whatchanged
?
4 answers
Przypuśćmy, że dążysz do mistrza. Możesz odwoływać się do poprzedniej pozycji master
przez master@{1}
(lub nawet master@{10.minutes.ago}
; zobacz sekcję określanie wersji na stronie man git-rev-parse ), dzięki czemu możesz robić takie rzeczy jak
Zobacz wszystkie zmiany:
git diff master@{1} master
Zobacz zmiany w danym pliku:
git diff master@{1} master <file>
Zobacz wszystkie zmiany w danym katalogu:
git diff master@{1} master <dir>
Zobacz podsumowanie zmian jeszcze raz:
git diff --stat master@{1} master
git branch
. Bieżąca nazwa gałęzi jest również drukowana wraz z wyjściem git status
. Gorąco polecam przeglądanie stron man poleceń do użycia - to świetny sposób na powolne zdobywanie wiedzy.
I twoje ostatnie pytanie: HEAD
to nazwa aktualnie sprawdzanej gałęzi. Możesz również użyć HEAD
i HEAD@{1}
w tym kontekście, ale korzystanie z gałęzi jest nieco bardziej wytrzymałe, ponieważ jeśli pójdziesz i sprawdzisz inną gałąź. HEAD
to teraz druga gałąź, a HEAD@{1}
to teraz master
- nie to, czego chcesz!
Aby zaoszczędzić konieczności zadawania wielu małych pytań, powinieneś prawdopodobnie mieć spójrz na tutorial Gita. W sieci jest milion, na przykład:
- The Pro Git book
- Git Magic
- i 4,5 miliona wyświetleń w Google dla "Git tutorial"
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-12-31 19:35:01
Say You do a git pull like this:
$ git pull
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 4), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From [email protected]:reponame
a407564..9f52bed branchname -> origin/branchname
Updating a407564..9f52bed
Fast forward
.../folder/filename | 209 ++++++++-----
.../folder2/filename2 | 120 +++++++++++---------
2 files changed, 210 insertions(+), 119 deletions(-)
Możesz zobaczyć różnicę tego, co się zmieniło, używając numerów wersji:
$ git diff a407564..9f52bed
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
2009-09-01 15:12:23
1. Skąd mam wiedzieć, czy ciągnąłem do mistrza? Wszystko co zrobiłem to "git pull".
Samo polecenie działa tak:
git pull [options] [<repository> [<refspec>…]]
I domyślnie odnosi się do bieżącej gałęzi. Możesz sprawdzić swoje gałęzie za pomocą
git branch -a
Wyświetli listę lokalnych i zdalnych gałęzi, takich jak dla NP so (Dodano ---
jako dzielnik między lokalnym i zdalnym, aby było to bardziej jasne)
*master
foo
bar
baz
---
origin/HEAD -> origin/master
origin/deploy
origin/foo
origin/master
origin/bar
remote2/foo
remote2/baz
Kiedy spojrzysz na jeden zdalny repo, zobaczysz o czym mówisz:
git remote show origin
Będzie lista jak poniżej:
* remote origin
Fetch URL: ssh://[email protected]:12345/username/somerepo.git
Push URL: ssh://[email protected]:12345/username/somerepo.git
HEAD branch: master
Remote branches:
foo tracked
master tracked
Local refs configured for 'git push':
foo pushes to foo (up to date)
master pushes to master (fast-forwardable)
Więc dość łatwo jest być pewnym, gdzie wyciągnąć i popchnąć.
3. Jak zobaczyć zmianę szczegółów w konkretnym pliku?
4. Jak ponownie zobaczyć zmianę w podsumowaniu przez ostatni git pull?
Najprostszy i najbardziej elegancki sposób (imo) to:
git diff --stat master@{1}..master --dirstat=cumulative,files
To da ci dwa bloki informacji o zmianach pomiędzy ostatnim pociągnięciem a aktualnym stanem pracy. Przykładowe wyjście (dodałem ---
jako dzielnik pomiędzy wyjściem --stat
i --dirstat
aby było bardziej jasne):
mu-plugins/media_att_count.php | 0
mu-plugins/phpinfo.php | 0
mu-plugins/template_debug.php | 0
themes/dev/archive.php | 0
themes/dev/category.php | 42 ++++++++++++++++++
.../page_templates/foo_template.php | 0
themes/dev/style.css | 0
themes/dev/tag.php | 44 +++++++++++++++++++
themes/dev/taxonomy-post_format.php | 41 +++++++++++++++++
themes/dev/template_parts/bar_template.php | 0
themes/someproject/template_wrappers/loop_foo.php | 51 ++++++++++++++++++++++
---
11 files changed, 178 insertions(+)
71.3% themes/dev/
28.6% themes/someproject/template_wrappers/
100.0% themes/
27.2% mu-plugins/
9.0% themes/dev/page_templates/
9.0% themes/dev/template_parts/
63.6% themes/dev/
9.0% themes/someproject/template_wrappers/
72.7% themes/
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-09-19 01:43:24
Ten sposób jest trochę hakerski, ale pozwoli Ci korzystać z narzędzi graficznych, takich jak gitk
lub gitg
lub git-gui
:
git pull
git reset HEAD@{1}
gitg (or gitk or whatever tool you like)
Odpowiedź z największą liczbą głosów daje najlepszy sposób używając narzędzia git, ale używam tej metody, ponieważ mogę następnie wykorzystać narzędzia z GUI, aby zobaczyć zmiany: p
Miałem wtedy dodatkowy krok do zrobienia git checkout .
, a następnie do zrobienia git pull
Ponownie tak, że prawidłowo pociągnąć i połączyć, ale cenię możliwość zbadania różnic w GUI na tyle, aby poradzić sobie z dodatkowymi dwoma kroki.
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-03-05 22:22:55