変更をコミットする前にローカル ファイルを git ソース管理と比較できる git の機能はありますか?
4 に答える
もちろんできます。
引数を指定せずにコマンドを使用
git diff
すると、ファイル システム内の変更された各ファイルが、現在チェックアウトされているブランチ (または) タグ内のファイルと比較されます。: を使用
git diff <tag(or)branch name>
すると、ファイル システム内の変更された各ファイルが、指定されたブランチ (または) タグ内のファイルと比較されます。: を使用
git diff <path/to/file_name (or) path/to/folder>
すると、ファイル システム内のフォルダー内の指定されたファイルが、現在チェックアウトされているブランチ (または) タグと比較されます。: を使用
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
ます。
私は使うのが好きです
git status
どのファイルが変更され、何を追跡しているかが表示されます。その後、使用できます
git diff
またはよりGUIフレンドリー
gitk
差分を見るには。
私はこの方法を使用することを好みます。
比較するスクリプト
#!/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 との比較のために開くことです。これにより、コミットする前に変更を確認できます。これがあなたの望むものであることを願っています。
コミットはプッシュされる前に簡単に修正/変更できるため、コミットしてからログで変更内容を確認する方が簡単だと思います。
それが私が期待していたものでない場合は、修正、リセット、リベース -i など...