问题标签 [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 Revert、Checkout 和 Reset for Dummies
抱歉,但这三个 git 命令正在消耗我的智慧。
是否可以为所有新手建立一个群组 wiki 来涵盖这三个 git 命令?我想学习的是如何将文件和项目恢复或回滚到以前的状态。
由于我没有使用 subversion 或其他集中式版本控制软件的经验,因此没有必要参考他们如何以不同的方式做事,而且常常令人困惑。
谢谢。
git - Git Revert、Checkout 和 Reset 有什么区别?
我正在尝试学习如何将文件和项目恢复或回滚到以前的状态,但不了解git revert
、checkout
和reset
. 为什么看似相同的目的有 3 个不同的命令,什么时候应该选择一个而不是另一个?
git - 'git reset --soft' 是无操作命令吗?
文档指出,利用--soft
选项“ ......根本不触及索引文件或工作树,但要求它们处于良好的顺序。这会使您所有更改的文件都“提交更改”,如 git status会放”。
它还解释了目标<commit>
默认为 HEAD,如果没有给出。
考虑到这些,以下命令是否会修改任何内容?
$ git reset --soft
git - 'git reset --hard' 多个变基分支
我有一个本地 ref,其中包含我最近执行的一些分支git rebase
:
这变成了:
通过使用以下命令集:
问题?
git rebase --no-ff
为了跟踪我以前合并的所有分支,我不小心忘记了做。现在,我无法轻松地告诉(通过使用gitk --all
)我的合并发生在哪里。我知道它们发生在HEAD@{E}
和之间的某个地方HEAD@{J}
,但是没有单独完成每个提交,我就迷路了。
我决定做什么:
所以,我想我会按照这里git reflog
的建议使用,并在两个变基发生之前恢复到原始状态,然后按照我的建议尝试。 git reset --hard HEAD@{#}
git rebase branchname --no-ff
我的最终问题是这个(还有一些额外的):
我可以简单地回到第一次提交之前的最后一次提交,rebase
还是需要单独回滚每个变基?每个顶部分支是否都与我以前拥有的完全一样(显示我正在寻找的非快速转发合并)?我是否让这太难了/有没有更简单的方法来做到这一点?有什么是我忽略的吗?
谢谢。
git - git reset 提交和推送问题
最近在我的团队中发生了一个新人试图做一个 git pull。系统上出现了一些冲突,之后开发人员只需执行 git reset (将索引带到最后一个 HEAD)。然后开发人员“提交”了一个文件更改并将其推送到远程。自然丢失了很多变化。
然而,我们花了相当长的时间来弄清楚谁做了错误的更改(以及哪个提交是错误的提交),并且恢复它是一大堆不同的努力。现在在 git 历史记录中(使用 gitk 或 git log)git 只显示已提交的文件,但这是覆盖先前文件的情况(我知道这个概念更多的是 CVS 而不是 git,在这种情况下文件已被移至先前的提交)。在这种情况下调试的最佳策略是什么?
一旦我们知道哪个分支有问题,一旦我在好提交和坏提交之间进行 git diff,我可以看到文件列表,但只查看特定提交,我们可以找出哪些文件已移至上一个提交。
如果问题没有完全澄清,我们深表歉意。
git - 如何在不覆盖当前更改的情况下将文件恢复到以前的版本?
我在尝试将文件还原到以前的提交时遇到问题,我知道我可以git checkout
用来还原单个文件,但问题是我想保留该文件中的更改,所以我想知道如何做一些单个文件的先前提交和当前 HEAD 之间的“合并”?我尝试使用git reset sha-of-my-commit path/to/my/file
,但它将以前的版本放在暂存区域,同时将最新版本保留在我的工作目录中,不确定如何在它之后合并两个文件。
我现在所做的git diff ..sha-of-my-commit path/to/my/file
只是复制/粘贴缺失的行,但我相信必须有更好的方法来做到这一点?
git - 为什么“git重置" 返回 1?
假设它foo.txt
在索引中。
为什么这样做:
返回 1:
?
git - 在检查合并更改之前 git reset HEAD
如果我从另一个分支进行 git 合并会发生什么,发生一些冲突,合并没有被提交,然后我做
我可以再次合并吗?还是 git 会相信合并已经完成?
git - 如何使用 'git reset --hard HEAD' 恢复到以前的提交?
我知道 Git 会跟踪我对应用程序所做的更改,它会一直保存到我提交更改之前,但这是我挂断的地方:
当我想恢复到以前的提交时,我使用:
Git 返回:
然后,我如何将硬盘驱动器上的文件恢复到之前的提交?
我接下来的步骤是:
但是我硬盘上的文件都没有改变...
我在做什么对/错?