在提交更改之前,Git 中是否有一种功能可以将本地文件与 Git 源代码进行比较?
在提交更改之前,Git 中是否有一种功能可以将本地文件与 Git 源代码进行比较?
当然可以。
使用没有参数的 git diff
命令:
将比较文件系统中每个修改过的文件与当前检出的分支(或标签)中的文件。
使用 git diff <tag(或)branch名称>
:
将比较文件系统中每个修改过的文件与指定的分支(或标签)中的文件。
使用 git diff <path/to/file_name(或)path/to/folder>
:
将比较文件系统中文件夹中指定的文件或文件与当前检出的分支(或标签)中的文件。
使用 git diff <tag1(或)branch1 名称><tag2(或)branch2 名称>
:
将比较两个分支/标签之间的所有修改过的文件。
有许多选项可以传递给 'git diff' 命令来格式化输出。这里我列出了一些:
git diff --name-only
:只显示更改文件的名称,而不是内容。git diff --name-status
:仅显示更改文件的名称和状态。git diff --cached(或--staged)
:仅比较已暂存/索引的文件。有关更多信息:在 git bash 中执行 git diff --help
。
FYI:git diff
将在命令行中生成输出。如果您想在一些可视化工具中查看输出,请使用 git difftool
。
使用git difftool
:您可以配置 Git 使用差异/合并工具来比较文件。
请查看此链接:use Winmerge inside of Git to file diff
您可以将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 <branch_you_want_to_compare>
git diff <branch_you_want_to_compare>
有什么不同吗? - kostix由于提交在推送之前很容易修改/更改,我发现先提交,然后在日志中查看我所做的更改更容易。
如果不是我期望的内容,则进行修改、重置、交互式变基等操作...