使用 git 日志创建推送列表
Use git log to create a list of pushes
我最近从 svn 转移到 git,我现在想知道如何生成一个按提交到存储库的日期排序的提交列表.
假设您在给定日期克隆了 origin/master,使用此列表您将确切知道您提取了哪个提交。
我读过许多解释 git 育儿系统的帖子(例如 , or this, even this)。在某些时候,我认为我可以将 git log
与 -m --first-parent
选项一起使用。
但是看看我们现有的合并,第一个父级似乎混淆了很多次(即我们有 合并),因此无法遵循 origin/master 。
现在我想知道:我的请求是否可行?
我看到 Team Foundation Server/VSTS 显示的推送列表正是我想要的。合并将显示来自相应提交的消息。
他们甚至有 API for that. However, I'd like to avoid relying on them to generate my push-list.
VSTS 在服务器端记录额外的元数据。此元数据在您的本地存储库中不可用。除了标准的 Git-commit-data,它还记录:
- 推送者(执行推送的用户的用户帐户)
- 以及推送的确切时间
- 以及作为该推送的一部分添加到存储库的提交。
此信息在您的本地 git 存储库中不可用。从分布式版本控制的角度来看,依赖这个元数据也有点奇怪,因为它可能在许多不同的时间被推送到许多不同的存储库。它可能已从一个存储库推送到另一个存储库。
只有在受祝福的存储库设置中(TFS/VSTS 服务器在您的设置中扮演的角色),该服务器才能跟踪推送到该服务器的内容。
因此,您需要依赖 TFS/VSTS 提供的 REST API。
关于解开旧的狐步舞合并:
What should I do about the pre-existing foxtrot merges that have
infected my git repo? Nothing. Leave them. Unless you’re one of those
antisocial people that rewrites master. Then go nuts. Actually, please
don’t.
但如果你真的想理清头绪:
I accidentally created a foxtrot merge, but I haven’t pushed it. How
can I fix it? You have three possible remedies:
- Simple rebase:
- Reverse your earlier merge to make
origin/master the first-parent:
- Create a 2nd merge commit after the foxtrot merge to preserve origin/master’s –first-parent relation.
But please don’t do #3, because the
final result is called a “Portuguese man o’ war merge,” and those guys
are even worse than foxtrot merges.
Source: https://developer.atlassian.com/blog/2016/04/stop-foxtrots-now/
我最近从 svn 转移到 git,我现在想知道如何生成一个按提交到存储库的日期排序的提交列表.
假设您在给定日期克隆了 origin/master,使用此列表您将确切知道您提取了哪个提交。
我读过许多解释 git 育儿系统的帖子(例如 git log
与 -m --first-parent
选项一起使用。
但是看看我们现有的合并,第一个父级似乎混淆了很多次(即我们有
现在我想知道:我的请求是否可行?
我看到 Team Foundation Server/VSTS 显示的推送列表正是我想要的。合并将显示来自相应提交的消息。
他们甚至有 API for that. However, I'd like to avoid relying on them to generate my push-list.
VSTS 在服务器端记录额外的元数据。此元数据在您的本地存储库中不可用。除了标准的 Git-commit-data,它还记录:
- 推送者(执行推送的用户的用户帐户)
- 以及推送的确切时间
- 以及作为该推送的一部分添加到存储库的提交。
此信息在您的本地 git 存储库中不可用。从分布式版本控制的角度来看,依赖这个元数据也有点奇怪,因为它可能在许多不同的时间被推送到许多不同的存储库。它可能已从一个存储库推送到另一个存储库。
只有在受祝福的存储库设置中(TFS/VSTS 服务器在您的设置中扮演的角色),该服务器才能跟踪推送到该服务器的内容。
因此,您需要依赖 TFS/VSTS 提供的 REST API。
关于解开旧的狐步舞合并:
What should I do about the pre-existing foxtrot merges that have infected my git repo? Nothing. Leave them. Unless you’re one of those antisocial people that rewrites master. Then go nuts. Actually, please don’t.
但如果你真的想理清头绪:
I accidentally created a foxtrot merge, but I haven’t pushed it. How can I fix it? You have three possible remedies:
- Simple rebase:
- Reverse your earlier merge to make origin/master the first-parent:
- Create a 2nd merge commit after the foxtrot merge to preserve origin/master’s –first-parent relation.
But please don’t do #3, because the final result is called a “Portuguese man o’ war merge,” and those guys are even worse than foxtrot merges.
Source: https://developer.atlassian.com/blog/2016/04/stop-foxtrots-now/