Git 显示分支上的重置以及谁做的

Git show reset on a branch and who did it

我们在分支上工作时遇到了问题。有人做了 git 重置让我们失去了一切...... 有什么办法可以知道分支机构是否进行了重置以及是谁进行的重置? 我保证他不会出事:)

谢谢, 萨维里奥

对于你所有的git activity...我会进入你担心的任何项目目录并且运行

git log --author=yourName

查看您最近的更改。

git reflog

对于您的存储库的所有日志

在你的本地机器上也许这可以帮助完整

以下两个 link 提供了您需要的信息参考:

http://gitready.com/advanced/2009/01/17/restoring-lost-commits.html

http://www.programblings.com/2008/06/07/the-illustrated-guide-to-recovering-lost-commits-with-git/

现在让我们了解一下这个过程:

  1. 运行git reflog,正在从您的更新中复制数据:
74a33f7f (HEAD -> env/svis, origin/env/svis) refs/remotes/origin/env/svis@{0}: update by push 
b8d160aa refs/remotes/origin/env/svis@{1}: update by push 
2bbd8d56 (tag: v1.0.0-prc-svis-snapshot1, tag: PTES) refs/remotes/origin/env/svis@{2}: fetch origin --recurse-submodules=no --progress --prune: fast-forward 
54f5e0d2 refs/remotes/origin/env/svis@{3}: fetch origin --recurse-submodules
  • 最上面的行是分支的当前头部,向下移动时它显示较早的头部,如此处的编号所示 {0} is current head, {1} is one before, {2} is one before them

Now what you can do with this information

第一组 8 个字符是唯一的哈希提交

  1. git show <Hash-Commit>(显示有关提交的所有信息)
  2. git fsck --lost-found(如果重置为 运行 将显示悬空提交,当我们无法通过 reflog 看到提交时这很关键),这些是未引用的头
  3. git merge <Hash-Commit>,将恢复到丢失的提交

如果这是一个本地重置案例,我们可以完成 mergepull 来取回原始代码。其他选项是 git rebase <Hash-Commit>.

  1. 突出的选项仍然是 resetreset --hard,第一个是软 reset,还有一个命令 git revert,这很有趣,因为它创建了相反的提交,我发现这是一个首选选项,也请查看以下 link,因为它以更简单的方式解释了许多细节

https://opensource.com/article/18/6/git-reset-revert-rebase-commands

一旦您开始使用此信息,您可以根据 reflog 列出的哈希提交找到更多详细信息。您可以使用 HEAD~1 引用最后一次提交,之前使用 HEAD~2