2009-09-01 3 views
78

После того, как Git pull, его вывод дает краткое изложение суммы изменения.Подробное изменение после Git pull

Как я могу увидеть, что все или некоторые из файлов детализированы?

Итак, вот мой вопрос Jefromi:

  1. Как я знаю, если я тянул освоить? Все, что я сделал, это «git pull».

  2. Что указывает мастер и в чем разница между мастером и HEAD, двумя стандартными головами Git?

  3. Как просмотреть подробные изменения в конкретном файле?

  4. Как я могу увидеть изменение итогового вывода на последний git pull?

  5. В чем разница между git diff и git whatchanged?

+3

Хорошо, это повторяется при добавлении новых вопросов с помощью редактирования не совсем так, как система предназначена для использования. Вы также можете легко ответить на многие ваши вопросы, взглянув на страницы руководства или просто попробовав вещи. Например, 'git diff' явно выводит diff, а' git whatchanged' явно выводит список данных фиксации, каждый из которых содержит список файлов, которые были изменены. – Cascabel

+0

Возможно, из-за вашей низкой репутации. –

+0

@ T.E.D. Для комментариев комментариев требуется всего 50 рецензий, а 15 - вверх. – Cascabel

ответ

128

Предположим, вы пытаетесь овладеть. Вы можете обратиться к предыдущей позиции master по [email protected]{1} (или даже [email protected]{10.minutes.ago}, смотрите раздел уточняющие пересмотров в git-rev-parse man page), так что вы можете сделать что-то вроде

  • Смотреть все изменения: git diff [email protected]{1} master

  • Смотрите изменения в данный файл: git diff [email protected]{1} master <file>

  • Смотреть все изменения в данном каталоге: git diff [email protected]{1} master <dir>

  • См сводки изменений снова: git diff --stat [email protected]{1} master

Что касается Вашего вопроса о том, «как я знаю, если я на хозяине» ... ну, с ветками является важной частью процесса Гита , Вы всегда должны знать, в какой ветке вы находитесь - если вы поменяли изменения, вы хотите вытащить их в нужную ветку! Вы можете увидеть список всех ветвей со звездочкой по текущей проверке с командой git branch. Также отображается текущее название ветки вместе с выходом git status. Я настоятельно рекомендую скинуть страницы man команд для использования - это отличный способ медленно получить некоторые знания.

И ваш последний вопрос: HEAD - это название текущей ветки. В этом контексте вы действительно можете использовать HEAD и [email protected]{1}, но это немного более надежно использовать ветви, так как если вы пойдете и проведете другую ветку. HEAD сейчас, что вторая ветка, и [email protected]{1} сейчас master - не то, что вы хотите!

Чтобы избавиться от необходимости задавать много вопросов, как это, вероятно, вам следует взглянуть на учебник Git.Есть миллион в Интернете, например:

+4

это лучше, чем мое решение :) –

+1

Git может это сделать ?! – Septagram

+1

Я знаю, что это старый, но ... Это должно быть наоборот: 'git diff master @ {1} master', в противном случае изменение отображается« назад », т.е. вставки становятся удалениями и т. Д. – ultracrepidarian

34

Say вы делаете GIT тянуть например:

$ 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(-) 

Вы можете увидеть, что изменилось с помощью номеров ревизий:

$ git diff a407564..9f52bed 
+4

И вы можете получить сводку, используя «' git diff --stat a407564..9f52bed' »или просто сводку« 'git diff --summary a407564..9f52bed'» –

+13

Для более новых версий git git больше не тянет выводит список файлов, которые были изменены. Чтобы получить это, вам нужно выполнить 'git pull --stat ' – user10

2

вида Таким образом, по Hacky, но это позволит вам использовать графические инструменты, такие как gitk или gitg или git-gui:

git pull 
git reset [email protected]{1} 
gitg (or gitk or whatever tool you like) 

Ответ с самым upvotes дает лучший способ, используя мерзавец но я использую этот метод, потому что я могу использовать инструменты с графическим интерфейсом, чтобы увидеть изменения: P

У меня был бы дополнительный шаг, сделав git checkout ., а затем снова сделав git pull, так что при правильном вытягивании и слиянии, но я ценю способность анализировать различия в графическом интерфейсе, чтобы справиться с дополнительными двумя шагами.

5

1. Как узнать, занимаюсь ли я мастером? Все, что я сделал, это «git pull».

Сама команда работает так:

git pull [options] [<repository> [<refspec>…]] 

и по умолчанию относится к текущей ветви. Вы можете проверить свои филиалы, используя

git branch -a 

Это будет список ваших локальных и удаленных филиалов, как для, например, так (Добавленный --- в качестве разделителя между локальным и удаленным, чтобы сделать его более ясным)

*master 
foo 
bar 
baz 
--- 
origin/HEAD -> origin/master 
origin/deploy 
origin/foo 
origin/master 
origin/bar 
remote2/foo 
remote2/baz 

When затем вы посмотрите на один удаленный репозиторий, вы увидите, что вы имеете в виду:

git remote show origin 

перечислит как следующее:

* 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) 

Таким образом, довольно легко быть уверенным, куда тянуть и толкать.

3. Как увидеть изменения деталей в определенном файле?

4. Как увидеть изменение итогового результата на последнем git pull again?

Самый простой и самый элегантный способ (IMO) является:

git diff --stat [email protected]{1}..master --dirstat=cumulative,files 

Это даст вам два блока информации об изменениях между вашим последним тянуть текущее состояние работы. Пример вывода (я добавил --- в качестве делителя между --stat и --dirstat выходом, чтобы сделать его более ясным):

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/