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>
: 将比较两个分支/标签之间的所有修改文件。
有很多选项,你可以传递给 '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 配置为使用 diff/merge 工具来比较文件。签出此链接:在 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>
该脚本的基本作用是,它检查您作为参数提供给临时目录的分支,并打开以与您的密码进行比较。有了这个,您可以在提交之前查看您的更改。我希望这是你想要的。
由于提交在推送之前很容易修改/更改,因此我发现提交更容易,然后在日志中查看我更改的内容。
如果这不是我所期望的,修改,重置,rebase -i 等......