问题标签 [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 投票
7 回答
148866 浏览

git - “git reset”和“git checkout”有什么区别?

我一直认为git resetgit checkout相同,因为两者都将项目带回特定的提交。但是,我觉得它们不可能完全相同,因为那将是多余的。两者之间的实际区别是什么?我有点困惑,因为 svn 只svn co需要恢复提交。

添加

VonC 和 Charles很好地解释了git reset和之间的区别。git checkout我目前的理解是,git reset将所有更改还原回特定的提交,而git checkout或多或少地为分支做准备。我发现以下两个图表对理解这一点非常有用:

http://a.imageshack.us/img651/1559/86421927.png http://a.imageshack.us/img801/1986/resetr.png

添加 3

http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html,结帐和重置可以模拟变基。

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
20014 浏览

git - 使用 git 将提交从 master 移动到分支

我正在尝试学习如何有效地使用 Git,我想知道我应该如何(好的做法/坏的做法?)解决以下情况:

假设我在 master 中有以下提交链:

  • 初始提交
  • 提交 1
  • 提交 2
  • 提交 3

然后我意识到在最后两次提交中所做的事情是完全错误的,我需要再次从 Commit 1 开始。问题:

  • 我该怎么做?
  • 我可以将 Commit 2 和 3 移动到单独的分支以供将来参考(说它们毕竟不是那么糟糕)并继续从 Commit 1 在 master 上工作吗?
0 投票
1 回答
216 浏览

git - 如果当前位于子目录下,是否需要在 GIT 中取消暂存文件的完整路径?

回购:合并测试

$密码

/gitvobs/mergetest/苹果

$git 状态

在分支 br1

已更改但未更新:

(使用“git add ...”来更新将要提交的内容)

(使用“git checkout -- ...”丢弃工作目录中的更改)

$git checkout 里面

错误:pathspec 'inside' 与 git 已知的任何文件都不匹配。

$git checkout apple/inside完美运行

所以每次,当我在子目录中时,我是否需要指定文件的完整路径以取消暂存更改?

add 不是这种情况(我可以在任何地方使用 'git add file-name' 添加文件)

这是 GIT 的行为方式还是在其他版本的 GIT 中发生了变化?

我正在使用 git 版本 1.6.6

谢谢

0 投票
6 回答
214254 浏览

git - 如何丢弃 Git 中的本地提交?

我一直在做一些事情,并决定它完全被搞砸了……在做了一些事情之后。所以我尝试了以下顺序:

在这一点上我得到了消息

我想丢弃我的本地提交,而不必清除我的本地目录并重新下载所有内容。我怎样才能做到这一点?

0 投票
3 回答
16434 浏览

git - 有人将变基或重置推送到已发布的分支后,我如何恢复/重新同步?

我们都听说过永远不应该对已发布的作品进行变基,这很危险,等等。但是,我还没有看到任何有关如何处理变基发布的情况的食谱

现在,请注意,只有当存储库仅由已知(最好是小)的一群人克隆时,这才是真正可行的,所以无论谁推送 rebase 或 reset 都可以通知其他人他们下次需要注意拿来(!)。

如果您没有本地提交foo并且它被重新定位,我见过的一个明显的解决方案将起作用:

foo根据远程存储库,这将简单地丢弃本地状态以支持其历史记录。

但是,如果一个人在该分支上进行了大量的本地更改,那么如何处理这种情况呢?

0 投票
41 回答
8160405 浏览

git - 如何将 Git 存储库恢复到以前的提交?

如何从当前状态恢复到某个提交时的快照?

如果我这样做git log,那么我会得到以下输出:

我如何恢复到 11 月 3 日的提交,即 commit 0d1d7fc

0 投票
6 回答
4192 浏览

git - 无法使用 Git 将文件重置为特定提交

我有一个修改过的文件,我想恢复到最新提交中的任何内容,但它“卡在”那里总是被标记为已修改。

然后我尝试:

但是 git status 的输出还是一样的。然后我尝试:

而且 git status 的输出还是一样的。

关于如何摆脱该文件的假定更改的任何想法?

0 投票
3 回答
209873 浏览

git - 在 git 中最后一次提交后重置所有更改

如何撤消上次提交后对我的目录所做的每项更改,包括删除添加的文件、重置修改的文件以及重新添加已删除的文件?

0 投票
5 回答
79412 浏览

git - 撤消“git添加”?

我错误地使用命令“git add dir”添加了文件。我还没有运行“git commit”。有没有办法从提交中删除这个目录以及其中包含的所有内容?

我试过git reset dir了,但是没有用。显然git reset file是撤消它的方法。但我有这么多文件和这么少的时间。

0 投票
1 回答
5324 浏览

git - 如何删除git中的中间合并?

我想删除中间合并(删除,而不是 squash),然后将最后 2 个提交移动到新分支。

这是我目前的git log --graph

我想结束这个:

我想用git rebase -itade 删除与分支的合并,然后执行 agit branch newone并将git reset --hard HEAD^2最后 2 个提交移动到新分支。但是,当我进行 rebase 时,它​​向我显示了来自 tade 分支的所有提交,这些提交合并到了 master 和 | 不愿意删除它们。

有没有更好的方法或者我应该继续它?

编辑:我更新了预期的状态图以使其更加清晰。2个新的提交(aaaaaaabbbbbbb)只是为了更好地说明状态(我希望)