如何通过git-config配置统一上下文,以便我不必总是为-U或--unified选项提供值?
git diff HEAD^ HEADorgit diff HEAD~ HEAD和 this git diff HEAD^1or 有git diff HEAD~1什么区别?
我明白那些git diff HEAD^ HEAD= git diff HEAD~ HEAD。
等是git diff HEAD^1= git diff HEAD~1..
在任何情况下,所有这些差异都会产生相同的输出吗?
我创建了一个git repo,我希望将所有提交的整个git repo作为单个补丁文件.
我尝试过很多SO帖子,但在任何地方都找不到合适的解决方案.
单击gitk中的文件时,会将其与该文件的先前版本进行比较。看起来文件已与git diff进行了比较,并且可以配置很少的参数(基本上,每个diff周围要查看的行数,即“上下文行”)。
是否可以通过某种方式进一步配置gitk的差异?当我单击文件时,我希望它运行git diff --word-diff = color而不是git diff。这样的事情可能吗?
如果是的话,该设置就很好隐藏了。
我有2个不同的文件foo和bar。
每个都在同一分支上的2个不同提交上,分别使用SHA1 SHA1-foo和SHA1-bar。我想看看这两个文件之间的区别。
我可以签出其中一个文件并将其复制,但也许有更好的方法。
我正在尝试将一些更改从一个分支合并到我的存储库中的另一个分支.我使用以下内容来找出差异:
git diff branchA...branchB path/to/files > diff.patch
Run Code Online (Sandbox Code Playgroud)
这很有效,并展示了我所有的变化.然后我去手动更新了我想要的branchA中的文件并提交了它们.Git状态显示一切都是最新的.现在我想再次运行差异以确保我没有错过任何东西.
然而,当我运行差异时,它显示了我第一次运行它时所有相同的差异.例如,它显示我在branchB中添加的行,即使branchA中现在存在确切的行.
我猜这是因为我手工完成合并,但我现在又如何获得正确的差异?
我在 OSX 机器上有一个相当默认的 git 设置,但我想将-j.5添加到less,以便搜索匹配发生在屏幕中间。
我尝试这样做export LESS=-j.5,但这导致内容喜欢ESC[1mdiff --git a/app/images/bluecog-icon.png b/app/images/bluecog-icon.pngESC[m出现,即使事先echo $LESS给出了一个空的结果。我查了一下,git help diff但它没有提到“pager”,也没有提到“less”指的是 unix 工具(而不是“greater”的反义词)。
修改环境变量或传递参数git diff都是可以接受的。我知道我可以-j.5在 git diff 本身内输入。
我在 git 版本控制系统下有一个 iOS/Swift 项目。层次结构如下,
home/user/git_root/docs
home/user/git_root/project
home/user/git_root/project/project.xcodeproj
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我的git_root目录包含文件夹中的一些其他文档docs以及实际的项目目录。
我已经使用自制软件安装swiftlint在我的Mac上,
brew install swiftlint
Run Code Online (Sandbox Code Playgroud)
swiftlint 当前安装的位置是,
which swiftlint
/usr/local/bin/swiftlint
Run Code Online (Sandbox Code Playgroud)
当我运行下面添加的脚本时Build phase -> Run scripts,发生了奇怪的事情,
if which swiftlint >/dev/null; then
echo "swiftlint already installed in machine";
git diff --cached --name-only | grep "\.swift" | while read filename; do
echo "swiftlinting file $filename";
swiftlint lint --path "$filename";
done
fi
Run Code Online (Sandbox Code Playgroud)
一些 swift 文件通过 echo 打印,但swiftlint找不到文件并产生以下错误,
在路径中找不到 lintable 文件:''
例如,下面是构建日志的输出,
swiftlinting 文件项目/a.swift
在路径中找不到 …
我似乎不知道如何在我的 ~/.gitconfig 中指定它,这样每当我运行它时,git diff <filename>它都会默认自动包含-U<line number>,这样我就不必每次都输入它。
我在网上读到,一旦合并中的文件超过某个阈值,git 会自动执行二进制差异而不是文本差异。结果,我们失去了逐行解析的功能,即使差异本身非常小。
我有一个 ~1.3 GB 的 CSV 文件,应该代表一个数据库,根据此链接,这似乎刚刚超过了这个大文件阈值。我目前正在尝试对 Git 的冲突检测算法进行基准测试,因此我需要文本差异算法来在此文件上运行。
有没有一种方法可以增加自动执行二进制差异而不是文本差异的大小阈值?我已经尝试过了
git config --global --add core.bigFileThreshold 2g
Run Code Online (Sandbox Code Playgroud)
但这似乎没有帮助。我认为这没有帮助,因为根据我的理解,这只设置了符合文本差异的文件大小的上限,但文件大小小于并core.bigFileThreshold不能保证它不会将其视为二进制文件。