Git的优点之一是,因为它使用指针操作,所以撤消大量任务相对容易,包括删除提交或提交,或创建和删除远程分支.在许多情况下,您真正需要做的就是将当前分支的HEAD指针正确地重置为所需的位置,然后撤消.这涵盖了各种各样的案例.
除了删除整个存储库或错误推送之外,在标准Git存储库中,无法撤消或极难撤消的最不重要的操作是什么?
到目前为止,我在 git 新手中遇到的最常见的“难以撤消”错误是滥用git stash,因为git stash pop. 并不总是可逆的git stash。考虑:
git init /tmp/trash && cd /tmp/trash # make a new repo
echo A > A # create a file
git add A
git commit -m "Initial commit" # add and commit it
echo B > A # ... now change it
git stash # ... and stash it
echo C > A # and change it and commit it again
git add A
git commit -m "Another commit"
git stash pop # now pop the stash
Run Code Online (Sandbox Code Playgroud)
将pop尝试自动合并A并引发冲突,但您不能通过git stash再次点击来退出弹出窗口。这是一个相当简单的示例,但如果您经常存储大量更改,并频繁切换不同的分支,并一路弹出,那么很容易陷入困境。我相信git stash drop这也是永久性的,也就是说,如果你丢错了东西,就没有安全网。
一般来说,用于stash它的设计目的:存储脏工作索引以跳转到另一个分支,修复错误,提交,推送,然后跳回原始状态。如果您尝试使用它来管理多个分支的大量更改,那么如果您不小心的话,它不可避免地会咬您一口。
git clean删除未跟踪的文件。它们无法用 git 恢复。
与肮脏的工作树合并可能会导致难以恢复的结果。
所以简而言之,没有被git跟踪的东西是无法被git恢复的。其他一切都可以恢复。
| 归档时间: |
|
| 查看次数: |
598 次 |
| 最近记录: |