我想生成每周GIT报告,在那里我可以看到每个开发人员在特定时间范围内提交和删除了多少代码.
目的是在特定时间范围内概述开发人员活动
如果我可以将这些信息导出到csv中会很棒
[some-script/command] > weekly-git-log.csv
Run Code Online (Sandbox Code Playgroud) 如何git diff在 Atlassian SourceTree 桌面应用程序中以相反的方向执行?换句话说,我如何让 SourceTree 做git diff b a而不是git diff a b?
例如,如果我的提交在我的提交窗格中按以下顺序排列:
3333
2222
1111
Run Code Online (Sandbox Code Playgroud)
我选择 3333 和 1111,它会显示从 1111 到 3333(即git diff 1111 3333)的变化差异。
我如何让它git diff在另一个方向上做一个,以便它是从 3333 到 1111(即git diff 3333 1111)的不同变化?
(注意:这个问题具体是关于如何在 Atlassian SourceTree 桌面应用程序中执行此操作,而不是一般如何在 git 中执行此操作。)
如果我想看到<commit>和工作目录(WD)之间的差异,我运行
% git diff <commit>
Run Code Online (Sandbox Code Playgroud)
这通常做我想要的,但如果WD包含在<commit>创建时被跟踪的文件,但现在没有被跟踪(或在当前分支中),那么生成的差异会将WD中的这些文件视为如果他们是/dev/null.
我可以想象这将是适当行为的情况,但目前我希望能够看到<commit>当前目录之间的"真正"差异,使用当时正在跟踪的文件列表<commit>创建了.
有没有办法指示git diff这样做?
编辑:如果有一种方法可以隐藏(后来恢复)只是索引,也许git reset <commit>之前运行git diff <commit>会产生<commit>与WD 之间的完全比较,但我还没有想出如何有选择地隐藏(以后恢复)指数......哦!我想我可以像这样做一个"穷人藏匿":cp -a .git/index .git/index.bak!?
我对 git 很陌生,但已经很享受了。这是我目前的问题:
我有一些PowerPoint文档,使用git进行版本控制。我想知道文件版本之间的区别。文字是最重要的,图像和格式并没有那么重要(至少目前还不是)。
有没有办法在一次运行中获得运行git diff --numstat和git diff --name-status组合的输出?
我的问题是,如果我只使用,--numstat那么我不知道是否只是在文件中添加了一些新行,或者文件是否全新.使用时--name-status,如果文件是新的,则获取信息,但缺少关于行修改的统计信息.
目前我的解决方法是单独运行两个命令,然后通过PowerShell脚本合并该输出,但由于repo相当大,我希望首先获得所需的输出.在此先感谢您的帮助!
我的存储库中有两个分支,我想对某些文件进行区分.
我想仅列出这两个分支之间新添加的迁移
就像是:
git diff branch1 branch2 | grep /db/migrate
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏
目前我正在处理的基于 Git 的项目,我通常总是在一个子目录中。
下面是我git log --name-only从存储库根目录的子目录运行命令时的输出。
commit 678bd5ba6fc5474c4c61406768bf6cba5937c5d1
Author: thegreendroid
Date: Mon Mar 27 09:36:24 2017 +1300
Commit message
child_dir1_from_root/file1 | 184 +--
child_dir2_from_root/file2 | 2 +-
Run Code Online (Sandbox Code Playgroud)
我如何git log才能输出类似下面的内容?这使得比较列出的文件非常容易,只需复制文件路径并运行,git diff HEAD~ {copied_file_path}而不必手动修改文件路径然后运行命令。
commit 678bd5ba6fc5474c4c61406768bf6cba5937c5d1
Author: thegreendroid
Date: Mon Mar 27 09:36:24 2017 +1300
Commit message
file1 | 184 +--
../child_dir2_from_root/file2 | 2 +-
Run Code Online (Sandbox Code Playgroud)
我查看了git log文档,但没有任何突出之处。我可以编写一个脚本来做到这一点,但我很好奇 Git 是否有内置方式。
如何从 中排除文件和目录git diff --no-index?
例如,我想显示两个目录project1&之间的差异,project2同时忽略它们的顶级.git目录 ( project1/.git& project2/.git) 及其所有.DS_Store文件。
我已经阅读了几个关于这个问题的 QA,但没有一个提供答案。有一个变通方法,我在这里再次说明,但我想了解并解决问题。
问题
问题是git diff reva revb | Out-File mypatch.patch在 powershell中执行命令会产生“垃圾字符”来代替德语元音变音(?ñ 而不是 ä)。
调查
当我按照$Env:LESSCHARSET="utf8"某些 QA 中的建议执行时,我确实在终端中获得了正确的输出,但是一旦将其重定向到文件mypatch.patch,变音符号(和其他字符)就会被破坏。甚至git --no-pager diff reva revb会在终端中产生正确的输出。但是,一旦您想将其通过管道传输到文件,那就错了。你看到的不是你得到的!
在我看来,输入到Out-File已经被破坏,因此设置-Encoding参数不会改变任何东西。我不认为Out-File是这里的罪魁祸首。例如,该命令$mypatch = git diff reva revb(即使在 diff 之前添加了 --no-pager)会导致一个变量,例如欧元符号或变音符号在该变量被打印到终端时出现错位(Ôé¼ 而不是 €)。
我在 Windows 10 (1709) 上尝试了 powershell 5.1 和开源 powershell core 6.0.4。我使用 git 2.18.0.windows.1。它适用于 windows 命令行 (cmd),因此简单的解决方法是从 powershell 控制台调用:
解决方法
cmd /c "git diff reva revb > mypatch.patch"
题
这仅适用于 PowerShell …
git-diff ×10
git ×9
diff ×3
git-bash ×1
git-branch ×1
git-difftool ×1
git-log ×1
powerpoint ×1
powershell ×1
report ×1
windows ×1