在 git pull 之后,我做了 git reset hard 以在合并之前撤消与提交 ID 的合并。不知何故,我的整个提交都消失了,我也看不到历史中的提交。但是我有提交 id ,在 git show 命令上我可以看到我的更改。
我怎样才能取回我的更改以及如何跟踪我犯了什么错误
是否有语法重置为当前分支的默认上游HEAD?
就像是:
git checkout mybranch
git reset --hard origin/mybranch
Run Code Online (Sandbox Code Playgroud)
哪个origin/mybranch可以是当前分支的上游HEAD的通用?
我在尝试使用恢复的藏匿处进行了一些更改git stash pop.有一些合并冲突,而不是解决它们,我决定重置它.不幸的是,在愚蠢的时刻,我做了一个git reset --hard,现在所有以前被隐藏的变化都消失了.
有没有办法恢复这些变化?我试过了git fsck --cache --no-reflogs --lost-found --unreachable HEAD,但列出的提交哈希都没有提到我需要的更改.我还可以做些什么?还是我失去了所有这些工作?
我正在尝试检查存储库的历史记录。我停在要将存储库恢复为特定提交的位置。我搜索了,我做到了
git reset --hard 12345
Run Code Online (Sandbox Code Playgroud)
我收到消息HEAD现在位于12345。我打开了该文件夹以查看我想查看的文件,但是它没有改变!
我想回到2009年首次创建该文件时。但是,该文件为新版本(2010年对其进行了编辑)。
我检查了工作目录,但那里什么也没有。我也跑了
git clean -f -d
Run Code Online (Sandbox Code Playgroud)
但什么都没有改变。
我不知道该怎么办。我想回到过去,看看文件的样子,但是我想回到整个存储库。
我对 RStudio 和 Git 很陌生,所以我想确保我正确理解我在做什么。
Git 文档说这git revert会创建一个新的提交。当我按下 RStudio 恢复按钮时,没有创建新的提交,它只是回到上次提交。对我来说,这似乎是一个git reset --hard. 我做错了什么吗?
我已经向我的本地分支做了几次提交estimation并将它们推送到远程分支estimation.
现在,我想完全删除最后3次提交.
我试着做git reset HEAD^,并git reset HEAD --hard3次,但是当我试图推动的变化,它抱怨不对齐头部尖.
我该怎么做?
编辑:
历史如下:
commit e572aab4e18
commit e21e7310bc4
commit 4f372a513da
commit 31a4ac607ae
commit a1a6e3f02dd
我想删除前4并返回commit a1a6e3f02dd并在同一HEAD上创建本地和远程分支.
如果我从另一个分支执行git合并会发生什么,一些冲突发生,合并不会被提交,然后我做
git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)
我可以再次合并吗?还是git相信合并已经完成了?
到现在为止,如果我曾经提交并将错误推送到主分支,我的解决方法是,假设git日志看起来像
commit bad_hash
commit another_bad_hash
commit yet_another_bad_hash
commit good_hash
Run Code Online (Sandbox Code Playgroud)
我'解决'过去的情况的方式是:
git reset --hard good_hash
git push -f origin master
Run Code Online (Sandbox Code Playgroud)
是的,这将有效...但似乎并不优雅,因为它有效地删除了提交历史.
所以在破坏了我的自我的情况之后,我检查了更好的方法,并且出来了git revert one,基本上我现在使用
git revert bad_hash another_bad_hash yet_another_bad_hash
git push origin master
Run Code Online (Sandbox Code Playgroud)
git revert将创建三个提交(每个恢复的哈希一个),之后,需要推送来更新远程.
现在,问题是,这种策略是否正确?对我来说看起来比重置更好 - 硬,因为回购的历史没有中断,如果最终有人想检查为什么有问题,他们总是可以做
git diff bad_hash
Run Code Online (Sandbox Code Playgroud)
这种推理是正确的还是我仍然缺少基本概念.
谢谢
我正在尝试为Git-Savvy Sublime扩展添加简洁的Git重置模式摘要.这个很难(硬!
我有这个:
mixed (default): update index
soft: move branch pointer only
hard: update index & working dir, discard local changes
merge: update index & working dir, keep local changes
keep: update index & working dir, abort if local changes
Run Code Online (Sandbox Code Playgroud)
(希望它暗示分支指针在所有模式下都会移动.)
reset模式周围的文档非常模糊,并使用短语"更新索引","触摸索引文件","重置索引"和"重置索引条目",无法知道它们是否是同义词.
是否有其他之间的细微差别--hard,--merge和--keep?
这不是关于' - '的一般问题,如标记的副本.这是一个特定于git的问题,要求明确所提到的命令之间的操作差异.
如果我想清除当前目录而不进行存储或提交,我通常会使用以下命令:
git reset HEAD --hard
git clean -fd
Run Code Online (Sandbox Code Playgroud)
一位同事还提到使用这个命令:
git checkout -- .
Run Code Online (Sandbox Code Playgroud)
对谷歌来说这是一个困难的命令,而且从git文档中我不清楚这个命令实际上做了什么.它似乎是手册中后面提到的用法之一.
猜测它会复制git reset HEAD --hard,但与我已经使用的命令相比,它究竟做了什么呢?
它是复制一个还是两个命令,还是相似但略有不同?
git ×10
git-reset ×10
git-revert ×3
git-checkout ×2
git-merge ×2
git-clean ×1
git-commit ×1
git-stash ×1
revert ×1
rstudio ×1