web-dev-qa-db-ja.com

コミット前のGit Compareファイル

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

25
mallows98

もちろんできます。

  1. 引数なしで_git diff_ commandを使用すると、ファイルシステム内の変更された各ファイルを現在のチェックアウトブランチ(または)タグ内のファイルと比較します。

  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 bashで_git diff --help_を実行してください。

参考:_git diff_はコマンドラインで出力を生成します。ビジュアルツールで出力を表示する場合は、_git difftool_を使用します。

_git difftool_を使用:diff/mergeツールを使用してファイルを比較するようにgitを構成できます。このリンクをチェックアウトしてください: Git内でWinmergeを使用してファイルdiffを作成

すべての_git diff_引数とオプションを_git difftool_に渡すこともできます。

52
Karthik Bose

使用したい

git status

変更されたファイルと追跡しているものが表示されます。次に使用できます

git diff

またはよりGUIに優しい

gitk

差分を表示するには。

11
Frank Sposaro

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

比較のためのスクリプト

    #!/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

上記のスクリプトは間違いなく _not_によって書かれました。私はネットからそれを取りましたが、ソースはわかりません。これをレポジトリにcompare.shとして保存します。 bcompareファイルの正しいパスを指定してください。

コミット前の比較用。

./compare.sh <branch_you_want_to_compare>

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

1
positron