git中是否有一项功能可以在提交更改之前将我的本地文件与git源代码控件进行比较?
答案 0 :(得分:51)
当然可以。
使用不带任何参数的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>
:
将比较两个分支/标签之间的所有修改文件。
有很多选项,您可以传递给'git diff'命令来格式化输出。这里我列举了一些:
git diff --name-only
:仅显示已更改文件的名称,而不显示内容。 git diff --name-status
:仅显示已更改文件的名称和状态。git diff --cached (or --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
。
答案 1 :(得分:11)
我喜欢用
git status
它会显示哪些文件已更改以及您要跟踪的内容。 然后你可以使用
git diff
或更友好的GUI
gitk
要查看差异。
答案 2 :(得分: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
上面的脚本肯定是 _not_由我写的。我从网上拿走了它,但不确定消息来源。将其作为compare.sh保存在您的仓库中。确保为bcompare文件指定正确的路径。
用于提交前的比较。
./compare.sh <branch_you_want_to_compare>
这个脚本基本上做的是,它将你作为参数提供的分支签出到临时目录,然后打开以与你的pwd进行比较。 有了这个,您可以在提交之前查看您的更改。我希望这就是你想要的。
答案 3 :(得分:-2)
由于提交在推送之前很容易修改/更改,因此我发现提交更容易,然后在日志中查看我更改的内容。
如果不是我期望的那样,修改,重置,改造-i等......