标签: git-reset

GIT Pull 删除了我的提交

在 git pull 之后,我做了 git reset hard 以在合并之前撤消与提交 ID 的合并。不知何故,我的整个提交都消失了,我也看不到历史中的提交。但是我有提交 id ,在 git show 命令上我可以看到我的更改。

我怎样才能取回我的更改以及如何跟踪我犯了什么错误

git git-merge git-reset git-commit

4
推荐指数
1
解决办法
1553
查看次数

通用git重置为默认上游HEAD

是否有语法重置为当前分支的默认上游HEAD?

就像是:

git checkout mybranch
git reset --hard origin/mybranch
Run Code Online (Sandbox Code Playgroud)

哪个origin/mybranch可以是当前分支的上游HEAD的通用?

git git-reset

4
推荐指数
1
解决办法
851
查看次数

在git stash pop之后撤消git reset --hard

我在尝试使用恢复的藏匿处进行了一些更改git stash pop.有一些合并冲突,而不是解决它们,我决定重置它.不幸的是,在愚蠢的时刻,我做了一个git reset --hard,现在所有以前被隐藏的变化都消失了.

有没有办法恢复这些变化?我试过了git fsck --cache --no-reflogs --lost-found --unreachable HEAD,但列出的提交哈希都没有提到我需要的更改.我还可以做些什么?还是我失去了所有这些工作?

git git-stash git-reset

4
推荐指数
1
解决办法
3845
查看次数

Git重置-难以正常工作

我正在尝试检查存储库的历史记录。我停在要将存储库恢复为特定提交的位置。我搜索了,我做到了

git reset --hard 12345
Run Code Online (Sandbox Code Playgroud)

我收到消息HEAD现在位于12345。我打开了该文件夹以查看我想查看的文件,但是它没有改变!

我想回到2009年首次创建该文件时。但是,该文件为新版本(2010年对其进行了编辑)。

我检查了工作目录,但那里什么也没有。我也跑了

git clean -f -d
Run Code Online (Sandbox Code Playgroud)

但什么都没有改变。

我不知道该怎么办。我想回到过去,看看文件的样子,但是我想回到整个存储库。

git git-reset

4
推荐指数
1
解决办法
3805
查看次数

RStudio 恢复按钮似乎就像 Git 重置

我对 RStudio 和 Git 很陌生,所以我想确保我正确理解我在做什么。

Git 文档说这git revert会创建一个新的提交。当我按下 RStudio 恢复按钮时,没有创建新的提交,它只是回到上次提交。对我来说,这似乎是一个git reset --hard. 我做错了什么吗?

git git-revert git-checkout git-reset rstudio

4
推荐指数
1
解决办法
1564
查看次数

Git还原了几个提交

我已经向我的本地分支做了几次提交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-revert git-reset

4
推荐指数
1
解决办法
3510
查看次数

git在检查合并更改之前重置HEAD

如果我从另一个分支执行git合并会发生什么,一些冲突发生,合并不会被提交,然后我做

git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

我可以再次合并吗?还是git相信合并已经完成了?

git git-merge git-reset

3
推荐指数
1
解决办法
4038
查看次数

这是撤消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 revert git-revert git-reset

3
推荐指数
1
解决办法
263
查看次数

所有Git重置模式之间究竟有什么区别?

我正在尝试为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

3
推荐指数
1
解决办法
909
查看次数

"git checkout - "有什么区别?和"git reset HEAD --hard"?

这不是关于' - '的一般问题,如标记的副本.这是一个特定于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 git-checkout git-reset git-clean

3
推荐指数
1
解决办法
2221
查看次数