我想看看上个月 gitlab 服务器端的 repo 变化了多少
cd /path/to/my/bare/repo.git/
git --git-dir . diff --shortstat "@{1 month ago}"
fatal: Unable to read log 'logs/refs/heads/master': No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是它在本地结帐工作分支中工作正常。
有没有办法在没有太多麻烦的情况下做到这一点?
为了避免 XY 问题:我想通过 Gitlab 服务器上的数百个存储库运行统计数据
git 似乎发生了变化,这使得 gvim 作为 diff 工具不再正常工作。具体来说,我总是使用 gvim -geometry 标志来最大化窗口。现在,我最终得到一个空白窗口(空/零行文件)。
我正在处理的脚本需要从 git diff 中遍历每个文件。但是,我不知道如何处理文件名中的空格。任何有空格的文件都被分成“2 个文件”。我知道它们需要被包裹," "但我不知道如何在它进入@参数之前实现它。
当文件名中有空格时,我应该如何遍历文件
git diff --name-only $1
Run Code Online (Sandbox Code Playgroud)
?
这是一个重现错误的简单测试:
copyfiles()
{
echo "Copying added files"
for file in $@; do
new_file=$(echo ${file##*/})
directory=$(echo ${file%/*})
echo "Full Path is is $file"
echo "File is $new_file"
echo "Directory is $directory"
cp $file $COPY_TO
done
}
COPY_TO="testDir"
DIFF_FILES=$( git diff --name-only $1)
copyfiles $DIFF_FILES
Run Code Online (Sandbox Code Playgroud)
该脚本目前运行如下:
test.sh <git commit id>
Run Code Online (Sandbox Code Playgroud) 我在Mac中使用Atom。每当我按下alt+g up/down它时,它只会插入©符号,而不显示下一个差异。我做错了什么吗?
git diff commit_A commit_B向我展示了A和之间的所有差异B
在提交范围内A..B有提交--author=me和--author=someone else
有没有办法让git diff对我之间变动累计A和B,不包括其他的变化?
我想一个潜在的解决方案是解析git log --author=me和“求和”每次提交的差异。另一个潜在的想法可能是采用git blameat 点B并按在A和之间更改的行进行过滤B。
语境:
假设我在很长一段时间内正在处理一个大型功能。在这项工作中,我提交了许多子功能。为了跟上最新的代码库,git pull创建与其他贡献者的贡献的合并提交。我希望能够看到我迄今为止所做的累积更改,而不会看到其他人的更改。假设没有合并冲突(我们接触不同的代码区域,但可能在同一个文件中。
我一直在关注本指南,了解如何区分 Microsoft Word 文档,但我遇到了这个错误:
Usage: /usr/bin/docx2txt.pl [infile.docx|-|-h] [outfile.txt|-]
/usr/bin/docx2txt.pl < infile.docx
/usr/bin/docx2txt.pl < infile.docx > outfile.txt
In second usage, output is dumped on STDOUT.
Use '-h' as the first argument to get this usage information.
Use '-' as the infile name to read the docx file from STDIN.
Use '-' as the outfile name to dump the text on STDOUT.
Output is saved in infile.txt if second argument is omitted.
Note: infile.docx can also be a directory name …Run Code Online (Sandbox Code Playgroud) 我犯了一个巨大的错误。
我已经配置git difftool为使用vimdiff,然后我执行了一个比较整个存储库的命令:
git difftool tag1 tag2
现在 difftool 以 diff 模式为每个已更改的文件启动 vim。当我关闭 vim 时,它会用下一对文件再次启动。一般来说,这就是我想要的,但是如果队列中的文件太多,我可以以某种方式中止这个过程吗?我知道我可以关闭终端,但是有更好的方法吗?
我正在使用 circleCI 版本 2,我config.yml喜欢这样:
version: 2
jobs:
a:
steps:...
b:
steps:...
workflows:
version: 2
main_pipeline:
jobs:
- a
- b
Run Code Online (Sandbox Code Playgroud)
我只想在目录中发生更改时构建。
job a对于文件夹 a
job b对于文件夹 b
当folder a改变,只能建job a。
Git版本:2.14.2.2
每当我git diff在存储库上运行时,我都会收到响应No tags file.我已经尝试在多个存储库,多个控制台(Cmd,PowerShell,MINGW64,Visual Studio命令提示符)上运行该命令,并且所有控制台都具有相同的响应.
奇怪的是,git log命令也失败了.许多其他命令的工作,然而,如git status,git pull等这似乎是唯一的log和diff.
我完全卸载了Git并重新安装.重启我的系统.尝试git.exe直接引用(产生完全相同的响应).没有什么工作,我没有在其他地方看到这个错误.我将用户配置与同事的配置进行了比较,它们完全相同.
命令的某些部分正确执行,因为如果我提供两个提交哈希,并且我故意破坏一个,我收到的响应是:
似乎另一个程序可能正在劫持git diff命令.我相信这是因为我不确定"没有标签文件"甚至是可能的Git响应.不确定它会是什么.
为了让事情变得更加混乱 - 我的最终目标是git diff在一个环境中运行msbuild并且它执行得非常正确.现在,我对此感到满意,但我需要diff稍微修改命令,每次运行完整的构建都没有效率,也不容易排除故障.构建脚本中有一个运行Exec命令的任务,它没有执行任何问题diff.我也能够Diff Against Current在SourceTree中执行,据我所知,它git diff在幕后运行.
任何帮助将非常感谢.
::编辑::
各种命令:
git diff HEAD~1 HEAD
git diff master~1 master
git diff <commit-hash-1> <commit-hash-2>
git log HEAD~1..HEAD
git log master~1..master
git log <commit-hash-1>..<commit-hash-2>
Run Code Online (Sandbox Code Playgroud)
输出: …
我想比较 GitHub 存储库的两个分支的“仅文件内容”。例如,当我将默认比较视图用于拉取请求时,它仍然会向我显示一些差异,即使文件是相同的。
您可以像这样重现这种情况:
README。README并将提交推送到新分支duplicate。README该的master分支。README来自两个分支的两个文件现在具有相同的内容,但https://github.com/user/repo/compare/duplicate显示duplicate和之间的差异master。我知道显示这个差异是因为对两个文件的更改是由不同的提交引入的,但有时只查看不同的文件内容更有用,即合并后真正会改变的内容。在上面的例子中,master根本不会改变。
据我了解,gitCLI 命令通过其--no-index选项为本地文件夹提供了此功能。因此,我可以将这两个分支克隆到我的本地文件系统并将它们与git diff --no-index. 如何在不必先克隆它们的情况下实现这一目标?我想在GitHub上在线查看差异。
更新:我认为这个问题与该--no-index选项无关。如果我下载存储库并git diff在本地使用,我注意到以下内容:(git diff master..duplicate两个点)不会显示差异,git diff master...duplicate(三个点)将显示与 GitHub 在线比较相同。
因此,这个问题类似于这个问题:2个分支的Github比较视图不正确?
简而言之:目前,GitHub 的比较视图始终使用git diff三个点。有关两个点和三个点之间差异的更多信息,请访问https://git-scm.com/docs/git-diff