30

変更をコミットする前にローカル ファイルを git ソース管理と比較できる git の機能はありますか?

4

4 に答える 4

62

もちろんできます。

  1. 引数を指定せずにコマンドを使用git diffすると、ファイル システム内の変更された各ファイルが、現在チェックアウトされているブランチ (または) タグ内のファイルと比較されます。

  2. : を使用git diff <tag(or)branch name>すると、ファイル システム内の変更された各ファイルが、指定されたブランチ (または) タグ内のファイルと比較されます。

  3. : を使用git diff <path/to/file_name (or) path/to/folder>すると、ファイル システム内のフォルダー内の指定されたファイルが、現在チェックアウトされているブランチ (または) タグと比較されます。

  4. : を使用git diff <tag1(or)branch1 name> <tag2(or)branch2 name>すると、2 つのブランチ / タグ間で変更されたすべてのファイルが比較されます。

多くのオプションがあり、「git diff」コマンドに渡して出力をフォーマットできます。ここにいくつかリストしました:

  • git diff --name-only: 内容ではなく、変更されたファイルの名前のみを表示します。
  • git diff --name-status: 変更されたファイルの名前とステータスのみを表示します。
  • git diff --cached (or --staged): ステージング/索引付けされたファイルのみを比較します。

git diff --help詳細については、git bash で実行してください。

参考git diffまでに、コマンドラインで出力を生成します。いくつかのビジュアル ツールで出力を確認したい場合は、 を使用しますgit difftool

を使用git difftool: 差分/マージ ツールを使用してファイルを比較するように git を構成できます。このリンクを確認してください: Git 内で Winmerge を使用して差分をファイルする

git diffすべての引数とオプションを渡すこともできgit difftoolます。

于 2012-06-12T07:21:17.473 に答える
12

私は使うのが好きです

git status

どのファイルが変更され、何を追跡しているかが表示されます。その後、使用できます

git diff

またはよりGUIフレンドリー

gitk

差分を見るには。

于 2012-06-11T23:40:36.750 に答える
1

私はこの方法を使用することを好みます。

比較するスクリプト

    #!/bin/sh
(                              # execute in a subshell so you can continue
                               #   working in the current shell
    set -o xtrace              # bash setting that echos each command before it's executed
    > /tmp/auto_bcompare_log   # truncate existing log file
    BCOMP_PATH=/usr/bin/bcompare
    BRANCH="$1"                # get branch argument from command line
    TEMPDIR=`mktemp -d`        # get a temp directory
    CWD=`pwd`                  # remember the current directory
    git clone $CWD $TEMPDIR
    cd $TEMPDIR
    git checkout $BRANCH
    cd $CWD
    $BCOMP_PATH $CWD $TEMPDIR
    rm -rf $TEMPDIR
) >> /tmp/auto_bcompare_log 2>&1 < /dev/null & # background and redirect
                                               # stdout/stderr/stdin

上記のスクリプトは間違いなく私が書いたものではありません。ネットから拾ってきましたが、出典がわかりません。これをcompare.shとしてリポジトリに保存します。bcompare ファイルの正しいパスを指定していることを確認してください。

コミット前の比較用。

./compare.sh <branch_you_want_to_compare>

このスクリプトが基本的に行うことは、パラメーターとして一時ディレクトリに指定したブランチをチェックアウトし、pwd との比較のために開くことです。これにより、コミットする前に変更を確認できます。これがあなたの望むものであることを願っています。

于 2012-06-12T03:53:27.597 に答える
-3

コミットはプッシュされる前に簡単に修正/変更できるため、コミットしてからログで変更内容を確認する方が簡単だと思います。

それが私が期待していたものでない場合は、修正、リセット、リベース -i など...

于 2012-06-11T23:38:47.177 に答える