git log --since="24 hours ago"我熟悉显示过去 24 小时内提交(到作者本地存储库)的更改的语法。
我们有一个开发团队,他们不断在本地做出承诺,然后每两天左右才推送这些更改。如果这是真的,那么git log --since="24 hours ago"将永远不会列出这些更改。(我们将其用于夜间摘要电子邮件)
我真正希望看到的是:在过去 24 小时内推送到 master 的更改,并且能够执行此操作,而无需手动记住上次运行摘要脚本的提交哈希值。
有没有一个工具可以显示特定分支已合并到哪些分支?例如,如果“A”已合并为“B”和“C”但没有合并为“D”,那么如何输出“B”和“C”?我只需要分支名称。
在阅读git的文档时,我似乎发现了一个矛盾。
在git 的这个官方教程中,git log -p据说会显示提交的历史以及完整的差异信息。但是,在git-log 的文档中,-p据说该选项会生成补丁文件而不是直接输出。此外,“他们不产生上述输出”的描述令人困惑,因为“上述描述”非常含糊,至少对我而言。
除了上面给出的部分,我只找到了一个提到该-p选项的地方,它与教程中的描述相匹配,而不是补丁部分。此外,当我git log -p在我的计算机上运行时,它显示提交历史和差异信息,并且我没有看到任何补丁文件生成。那么文档的两部分是矛盾的吗?还是我误解了“生成补丁文件”的过程?谢谢!
通过 git log,我可以使用 --since 和 --until 来显示 2 个日期之间的数据。使用 git Branch -r 我可以提取所有远程分支。
我如何显示两个日期之间合并到 master 的所有分支?
git log --since "DEC 1 2019" --until "JAN 1 2020" --pretty=format:"%h %an %ad"
Run Code Online (Sandbox Code Playgroud)
这将返回 2 个日期之间的所有提交,但我想返回这 2 个日期之间合并到 master 的分支名称?
提前致谢。
我有一个目录,里面有很多 Git repo 子目录,我想积累类似于
git shortlog -sne --no-merges
Run Code Online (Sandbox Code Playgroud)
对于其中的所有存储库,按用户的所有总提交对用户进行排序。
例如对于回购 1:
430 Author 1 <author1@email.com>
20 Author 2 <author2@email.com>
Run Code Online (Sandbox Code Playgroud)
例如对于回购 2:
123 Author 1 <author1@email.com>
92 Author 2 <author2@email.com>
Run Code Online (Sandbox Code Playgroud)
总结果:
453 Author 1 <author1@email.com>
112 Author 2 <author2@email.com>
Run Code Online (Sandbox Code Playgroud)
是否可以使用 git 内置工具来做到这一点?
我能够走出 repo 文件夹并为单个文件夹运行它:
git -C repoFolder shortlog -sne --no-merges
Run Code Online (Sandbox Code Playgroud) 假设我有以下 git 结构:
A - B - C - D - E - F master
\_ G - H - I branch
Run Code Online (Sandbox Code Playgroud)
git checkout branch; git log 不识别分支与主分支的点。
如果我想检查此分支中的所有更改怎么办?
我试过这个
git log -i --all --grep='/(?=.*fix)(?=.*a)(?=.*bug)/'
Run Code Online (Sandbox Code Playgroud)
但没有用。
为了比较项目中文件的两个修订版,我做了一个git log /path/to/file只返回最后一次提交的文件.
执行时,git blame /path/to/file我得到了每行的跟踪,其中包含正确的sha,date和authors.
因此提交存储但不知何故git log不显示它们.
有关如何解决此问题的任何想法?
我需要在 git log 中排除已删除的文件。我使用该命令git log -1 --name-only --pretty=format:eee6ce6在最后一次提交中获取更改的文件名。我使用pre-receive hook 来阻止特定的文件类型提交。上面的命令列出了所有修改过的文件。
但我想允许用户删除特定的文件类型。我怎样才能做到这一点?
git log -1 --name-only --pretty=format:eee6ce6-filter=d 命令,但它也列出了已删除的文件。git log -1 --diff-filter=d --name-only非常有效。但它commit ID, author name, date也给予。我只想要文件名。在涵盖相对提交引用的 Udacity 课程中,它说:
^ 表示父提交,~ 表示第一个父提交
^ 和 ~ 之间的主要区别在于何时从合并创建提交。合并提交有两个父项。对于合并提交,^ 引用用于指示提交的第一个父项,而 ^2 指示第二个父项。第一个父级是您运行 git merge 时所在的分支,而第二个父级是合并到的分支。
基于在git log --oneline --graph命令行上运行的以下输出:
使用 SHA 的提交f69811c是 HEAD~4^2 相对于(最顶层,带有头指针)提交9ec05ca。合并提交1a56a81的第二个父项是f69811c,课程解释了这一点“HEAD~4 引用了当前提交的第四个父项提交,然后 ^2 告诉我们它是合并提交的第二个父项(被合并到)”
根据以黄色引用的课程文本,它似乎e014d91是1a56a81的第一个父级,因为它是与合并提交具有相同分支的父级。
根据这些信息,e6c65a6的关系1a56a81是什么?
我不认为它也是第二个父母(如果可以有多个第一和第二个父母......),即使它也是合并到 master 的分支,因为该答案在课程测验中被拒绝。
另外,如果我是正确的,e014d91是1a56a81第一个母公司,是什么的关系2097521,并3772ab1以1a56a81(这似乎他们也第一次家长,再次,如果合并提交其实可以有多个父)?
git ×10
git-log ×10
bash ×2
branch ×1
delete-file ×1
git-branch ×1
git-commit ×1
git-diff ×1
git-grep ×1
grep ×1
merge ×1
regex ×1
shell ×1