web-dev-qa-db-ja.com

Gitプル後の詳細変更

Gitプルの後、その出力は変更量の要約を提供します。

各ファイルまたは一部の詳細な変更を確認するにはどうすればよいですか?

さて、ここからジェフロミへの私の質問です。

  1. マスターに引き寄せられたかどうかはどうすればわかりますか?私がやったのは「git pull」だけです。

  2. Masterは何を指し、masterとGitの2つのデフォルトヘッドであるHEADの違いは何ですか?

  3. 特定のファイルの詳細な変更を確認するにはどうすればよいですか?

  4. 最後のgit pullによるサマリー出力の変更を再度確認するにはどうすればよいですか?

  5. git diffgit whatchangedの違いは何ですか?

113
Tim

マスターに引き寄せているとします。 master@{1}masterの前の位置を参照できます(またはmaster@{10.minutes.ago} ;; git-rev-parse man page のリビジョンの指定セクションを参照してください) )、次のようなことができるように

  • すべての変更を見る:git diff master@{1} master

  • 指定されたファイルへの変更を確認します:git diff master@{1} master <file>

  • 特定のディレクトリ内のすべての変更を表示します:git diff master@{1} master <dir>

  • 変更の概要をもう一度参照してください:git diff --stat master@{1} master

「自分がマスターかどうかをどうやって知るのか」という質問については、ブランチを使用することはGitワークフローの重要な部分です。自分がどのブランチにいるかを常に認識しておく必要があります。変更をプルした場合は、それらを正しいブランチにプルする必要があります。コマンドgit branchを使用すると、現在チェックアウトされているブランチにアスタリスクが付いたすべてのブランチのリストを表示できます。現在のブランチ名も、git statusの出力とともに出力されます。使用するコマンドのマニュアルページをざっと読むことを強くお勧めします。これは、少し知識を習得するのに最適な方法です。

最後の質問:HEADは、現在チェックアウトされているブランチの名前です。このコンテキストでもHEADHEAD@{1}を実際に使用できますが、別のブランチをチェックアウトする場合、ブランチを使用する方が少し堅牢です。 HEADが2番目のブランチになり、HEAD@{1}masterになりました-あなたが望むものではありません!

このような小さな質問をたくさんする必要がないようにするには、Gitチュートリアルをご覧ください。 Webには数百万があります。たとえば:

175
Cascabel

次のようなgit pullをするとします:

$ 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
45

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

次に、1つのリモートリポジトリを見ると、参照しているものが表示されます。

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)

したがって、どこからプルしてプッシュするかを確認するのは非常に簡単です。

特定のファイルの詳細な変更を確認する方法

4。最後のgit pullによるサマリー出力の変更を再度確認する方法

最も簡単で最もエレガントな方法(imo):

git diff --stat master@{1}..master --dirstat=cumulative,files

これにより、最後のプルと現在の作業状態の間の変更に関する2ブロックの情報が得られます。出力例(-----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/
6
kaiser

この方法は一種のハッキングですが、gitkまたはgitgまたはgit-guiなどのグラフィカルツールを使用できます。

git pull
git reset HEAD@{1}
gitg (or gitk or whatever tool you like)

ほとんどの賛成票の答えはgitツールを使用する最良の方法を提供しますが、GUIでツールを使用して変更を確認できるため、この方法を使用します。

その後、git checkout .を実行してからgit pullを実行するという追加のステップがあり、適切にプルしてマージします。 2つのステップ。

2
Jack