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/
现在让我们了解一下这个过程:
- 运行
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 个字符是唯一的哈希提交
git show <Hash-Commit>
(显示有关提交的所有信息)
git fsck --lost-found
(如果重置为 运行 将显示悬空提交,当我们无法通过 reflog 看到提交时这很关键),这些是未引用的头
git merge <Hash-Commit>
,将恢复到丢失的提交
如果这是一个本地重置案例,我们可以完成 merge
或 pull
来取回原始代码。其他选项是 git rebase <Hash-Commit>
.
- 突出的选项仍然是
reset
和 reset --hard
,第一个是软 reset
,还有一个命令 git revert
,这很有趣,因为它创建了相反的提交,我发现这是一个首选选项,也请查看以下 link,因为它以更简单的方式解释了许多细节
https://opensource.com/article/18/6/git-reset-revert-rebase-commands
一旦您开始使用此信息,您可以根据 reflog
列出的哈希提交找到更多详细信息。您可以使用 HEAD~1
引用最后一次提交,之前使用 HEAD~2
我们在分支上工作时遇到了问题。有人做了 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/
现在让我们了解一下这个过程:
- 运行
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 个字符是唯一的哈希提交
git show <Hash-Commit>
(显示有关提交的所有信息)git fsck --lost-found
(如果重置为 运行 将显示悬空提交,当我们无法通过 reflog 看到提交时这很关键),这些是未引用的头git merge <Hash-Commit>
,将恢复到丢失的提交
如果这是一个本地重置案例,我们可以完成 merge
或 pull
来取回原始代码。其他选项是 git rebase <Hash-Commit>
.
- 突出的选项仍然是
reset
和reset --hard
,第一个是软reset
,还有一个命令git revert
,这很有趣,因为它创建了相反的提交,我发现这是一个首选选项,也请查看以下 link,因为它以更简单的方式解释了许多细节
https://opensource.com/article/18/6/git-reset-revert-rebase-commands
一旦您开始使用此信息,您可以根据 reflog
列出的哈希提交找到更多详细信息。您可以使用 HEAD~1
引用最后一次提交,之前使用 HEAD~2