问题标签 [git-reset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2466 浏览

git - 执行 `git commit` 后,git 告诉我没有什么可提交的

我在我的gh-pages树枝上,当我

我懂了

然后我会做,看看以下

我试图深入挖掘以找出问题所在

我不确定这里发生了什么,但在此之前我试图摆脱我最后一次提交尝试以下命令

也许我用这些让事情变得更糟。没有把握。我也试过

然后我立即取消,因为我不想再提交/添加了。

如何恢复/删除最后一次提交/添加并重新开始?

更新

好的,我首先关注的是 John Galt 的回答。我跑了

得到了这个

在这一点上,我真的不知道该怎么办。我只想回到我的gh-pages分支,不再让那个大坝d712282提交困扰我。所以那时我

愚蠢地我认为d712282提交与分离的头一起死了,所以我像以前一样继续

但是当我检查是否已经上演时,我得到了

在这一点上,似乎与以前没有任何变化,但我坚持只是为了彻底。当我尝试运行提交时,我得到了

然后我做了

我想看看正在运行的东西$ git log给了我什么

有同样的旧d712282提交。我也跑了$ git reflog,得到了

而这一点我尝试了杰弗里的建议,然后跑了

所以在这一点上我想做的就是摆脱 d712282 因为每次我尝试git push origin gh-pagesgit 开始推送 d712282 提交,它有 1156 个文件。太多了。我要它死。

0 投票
1 回答
112 浏览

git - 当我们有 git checkout 时,git reset 接受路径作为参数有什么意义?

我了解git reset更新索引,而git checkout更新工作副本。我不明白的是需要git reset接受引用和路径参数的用例?看来我总是想git checkout在这种情况下使用?

当人们问他们为什么不能时,这总是会出现git reset some-ref --hard -- some/path/to/file。真正的问题是为什么git reset我们git reset some-ref -- some/path/to/filegit checkout.

在教别人两者之间的区别之前,从来没有想过这一点。

0 投票
1 回答
202 浏览

git - 恢复已经推送的 git pull

我不确定这是否是重复的,因为它是一种一次性的场景:

我有一个“beta”分支,并开始了一个新的“重构”分支。

  1. 我在“重构”分支中做了一堆代码。
  2. 我将最新的更改从 beta 提取到重构 ( git checkout refactor && git pull origin beta)
  3. 我的更改已经准备好,所以我检查了 beta 版,并将更改从重构拉到了 beta 版。( git checkout beta && git pull origin refactor)
  4. 意识到我的 beta 分支不是最新的,所以不得不做一个git pull把最新的拉到 beta 中。
  5. 现在 beta 分支是最新的,做另一个git pull origin refactor以确保最新版本在那里(收到一条自动提交消息,表明重构正在合并到 beta 中)。
  6. 我推了我的代码:(

所以现在我意识到我做错了两件事:

  1. 在第 3 步中,我应该先执行 git pull,以便拥有最新的 beta 变更集
  2. 在第 3 步中,我意识到我应该打电话git merge refactor而不是git pull origin refactor(不要问我为什么这样做,现在是星期一,我只是想将我很棒的重构代码放入 beta 版开始测试)。我现在意识到,如果我已经完成了这两件事,则不需要后面的任何步骤。

所以我的问题是:从技术上讲,所有代码都在那里并且看起来不错,但是 github 上的网络图看起来超级时髦,而且我没有一个干净的“合并”提交,如果我的合并分支我可以轻松回滚需要还原,而 beta 版现在拥有我所有来自重构分支的个人提交。有没有一种简单的方法可以回滚我的愚蠢合并并以更清洁的方式进行?

我已经尝试过这样做git checkout beta && git reset --hard beta@{"1 hour ago"},但问题是这让我进入了过时的本地 beta 版本,而不是在我应该先完成 git pull 时发布合并之前的最新版本。我觉得应该有一种方法可以在 1 小时前git reset --hard origin/beta@{"1 hour ago"}重置到远程beta 分支,然后执行git merge refactor? 我是否能够推送这些更改并确保远程提交被覆盖?

提前感谢您的帮助!我对使用“git reset”做任何事情犹豫不决,因为重构非常重要,并且在 beta 中有很多我没有做的待定更改,所以我更担心搞砸重置并丢失代码比我担心必须从拉入的重构分支手动恢复提交。

0 投票
2 回答
2019 浏览

git - git checkout -f master VS git reset

我想恢复当前分支中所有未提交的更改说' master'。在以下情况中最好使用的是什么?为什么?:

  1. git checkout -f master
  2. git reset --hard <last commitID>
0 投票
1 回答
137 浏览

git - git reset --hard 后未提交和未暂存的文件会发生什么?

我正在尝试理解 git reset 命令。我有一个包含文件 file_1 的初始 commit_A。

  • 现在我在我没有暂存的工作目录中添加了 file_2。如果我git reset --hard现在运行,file_2 仍保留在工作目录中。

  • 但是,如果我暂存 file_2 然后运行git reset --hard,则 file_2 将被取消暂存并从工作目录中删除。

为什么在第二种情况下从工作目录中删除 file_2 而在第一种情况下没有删除?

0 投票
2 回答
188 浏览

git - 悬空的 git add blobs 是否被推送到主存储库?

我们可以恢复曾经添加(但未提交)然后使用 git reset --hard 删除的文件。请参阅执行 git reset --hard HEAD^ 后恢复添加的文件

当我们将更改推送到某个上游存储库时,这些 blob 是否也被推送了?

背景:在进行任何开发时,我偶尔会对更改的文件执行 git add 操作,但不要提交它们。这一次,我使用一些关键的 api 凭据进行了 git add,我想知道如果我要开源 repo/gem 是否可以从日志中恢复它们。

0 投票
1 回答
919 浏览

git - 通用 git 重置为默认上游 HEAD

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

就像是:

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

0 投票
3 回答
4712 浏览

git - 恢复 git 上次提交并将其保存在不同的分支中

有没有办法回滚最后一次提交并将其放入单独的分支以供以后测试?我做了一些我不想完全丢弃的更改,我只想将它们放在不同的分支中以供进一步测试。

谁能帮我这个?

0 投票
1 回答
81 浏览

wordpress - 如何使用 git 子模块摆脱这种混乱?

我有一个带有 Wordpress 作为子模块的 git repo。我试图更新 Wordpress 并且真的把事情搞砸了。我只想从远程存储库中的 3.7.1 标记中获取所有代码,但这不起作用;

留下一堆“未跟踪的文件”或“未提交的更改”。我不知道我做错了什么。我已经尝试了很多方法来将此子模块添加到 3.7.1 标签上,但似乎没有任何效果。如果有的话,我觉得我只是让问题变得更糟。从我想要的标签中重置代码并丢弃其他所有内容应该不难。有什么帮助吗?

0 投票
1 回答
798 浏览

git - 重置后 git rebase a blob 丢失了更改

我使用 GitHub for Windows 创建了一个 Git 存储库,并在提交文件之前进行了重置,现在我丢失了所有项目/文件。

我找到了文件

我的文件在里面.git\lost-found\other,我可以查看它们,$ git show SHA但是当我这样做时,$ git rebase SHA我得到了:

错误:对象 SHA 是一个 blob,而不是致命的提交
:需要一个
无效的上游 SHA修订

我可以做些什么来恢复我的文件?

或者,可以用其他程序或语言读取文件吗?