问题标签 [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.
git - git 撤消所有未提交或未保存的更改
我正在尝试撤消自上次提交以来的所有更改。我试过了git reset --hard
,git reset --hard HEAD
看了这篇文章后。我的回应是 head 现在是 18c3773... 但是当我查看我的本地源时,所有文件仍然存在。我错过了什么?
git - git reset 上的双破折号 [--] 选项有什么作用?
我见过这样的命令:
我了解此命令将来自提交 e542 的文件 readme.txt 的内容放入索引中。但是--
那里有什么选择呢?
git reset 手册页将它列为前两种形式的可选,但我找不到它的含义。
git - 这是撤消 git 东西的好策略吗?
到现在为止,如果我曾经提交并将错误推送到主分支,我的解决方法是,假设 git 日志看起来像
我过去“解决”这种情况的方式是:
是的,这会起作用......但看起来不是很优雅,因为它有效地删除了提交历史。
因此,在破坏了我的自我的情况之后,我检查了更好的方法,并提出了 git revert 方法,基本上我现在使用
git revert 将创建三个提交(每个恢复的哈希一个),之后,需要推送来更新远程。
现在,问题是,这种策略是否正确?对我来说看起来比重置要好得多——硬,因为回购的历史没有被中继,如果最终有人想检查为什么会出现问题,他们总是可以做一个
这个推理是正确的还是我仍然缺少基本概念。
谢谢
git - 如何在“git-pull”自动合并后更改提交消息?
有时,当作为结果 a 生成自动合并时,我的合作者会“惊慌” git-pull
,并且只接受默认的提交消息。在推送此提交之前,我想确保消息得到修复,但--amend
似乎不起作用。修复在这种情况下生成的消息的最佳方法是什么。我能为他们想出的最好的指示是
但这似乎有点吓人(reset
)并且容易出错(必须明确输入远程跟踪的分支)。
有没有一种简单的方法来更改刚刚通过与远程跟踪 repo 合并生成的提交消息?为什么不起作用--amend
?
git - 撤消我的工作目录保留我的提交
这可能是一个非常简单的问题。我提交了我的工作,然后我启动了一个查找和替换脚本,但我想撤消它,以便让我的工作进入实际提交。什么是正确的命令:我知道 git reset soft/hard 或 git amend 但它不合适
git - 如何 git reset --hard 一个子目录?
更新²:使用 Git 2.23(2019 年 8 月),有一个新命令
git restore
可以执行此操作,请参阅接受的答案。更新:从 Git 1.8.3 开始,这将更直观地工作,请参阅我自己的答案。
想象以下用例:我想删除 Git 工作树的特定子目录中的所有更改,而保留所有其他子目录不变。
我可以
git checkout .
,但是git checkout 。添加稀疏结帐排除的目录有
git reset --hard
,但它不会让我为子目录这样做:我可以使用 反向修补当前状态
git diff subdir | patch -p1 -R
,但这是一种相当奇怪的方法。
此操作的正确 Git 命令是什么?
下面的脚本说明了这个问题。在注释下方插入正确的命令How to make files
——当前命令将恢复a/c/ac
应该被稀疏检出排除的文件。请注意,我不想显式恢复a/a
and a/b
,我只“知道”a
并想恢复下面的所有内容。编辑:而且我也不“知道” b
,或者哪些其他目录与a
.
git - git reset --hard origin/master 是什么意思?
我做了一个git pull
并得到了一个错误:
以下工作树文件将被合并覆盖... 请在合并之前移动或删除它们。
为了解决这个问题,我做了以下事情:
现在,当我这样做时git pull
,它会说一切都是最新的。我想知道当我运行这些命令时到底发生了什么。我知道git fetch
从远程存储库中获取更改而不将它们合并到我的本地存储库中。
是什么意思git reset --hard origin/master
?它是如何工作的?
netbeans - 如何在 netbeans 中使用 git reset?
我想撤消我在 NetBeans 中的最后一次提交。
我发现命令是“$ git reset --soft HEAD~”,但我怎样才能在 NetBeans7 IDE 中做到这一点?
git - 重置后 Git 提交丢失 --hard。fsck 未找到,不在 reflog 中
我想清除一些未提交文件的工作目录,但不小心运行了git reset --hard
.
我意识到我丢失了之前的(未推送的)提交,所以我运行了git reset --hard ORIG_HEAD
. 这并没有让我失去承诺。
我跑了git reflog
,但那里没有列出提交。我也跑了git fsck --lost-found
,但列表中没有提交,只有一些不相关的 blob 和树。
由于我找不到丢失提交的任何参考(除了.git/COMMIT_EDITMSG
仍然有相关的提交消息和更改列表),我不确定如何恢复提交。
有什么办法可以找回丢失的提交,还是我应该为通宵做准备?
git - Git重置不起作用
我进行了一次提交,提取并合并了一些更改,然后进行了第二次提交。当我想回到第一个提交时,我运行了命令
虽然响应是“HEAD 现在位于 <sha hash>”,但我的代码看起来与运行该命令之前一样。通常,它会更改为我以前的内容,但看起来有些东西无法正常工作。在重置头部之前,我是否需要运行不同的命令来取消合并?
额外信息
当我运行git status
它说:
app/assets/images/.DS_Store.orig 未追踪
我可以添加它。
根据git reflog
,我在提交 hash1 之前拉了(我认为是“在合并之前”)。拉动有一个 sha hash2(git log
未显示)。当我挖掘 hash1 和 hash2 时,我看到了我所做的更改,并且可以从中重建我的原始代码。不过,这似乎很奇怪。如果我尝试git reset
使用其中任何一个,我将无法从合并之前获取我的代码。