问题标签 [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 reset”和“git checkout”有什么区别?
我一直认为git reset
和git checkout
相同,因为两者都将项目带回特定的提交。但是,我觉得它们不可能完全相同,因为那将是多余的。两者之间的实际区别是什么?我有点困惑,因为 svn 只svn co
需要恢复提交。
添加
VonC 和 Charles很好地解释了git reset
和之间的区别。git checkout
我目前的理解是,git reset
将所有更改还原回特定的提交,而git checkout
或多或少地为分支做准备。我发现以下两个图表对理解这一点非常有用:
添加 3
从http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html,结帐和重置可以模拟变基。
git - 使用 git 将提交从 master 移动到分支
我正在尝试学习如何有效地使用 Git,我想知道我应该如何(好的做法/坏的做法?)解决以下情况:
假设我在 master 中有以下提交链:
- 初始提交
- 提交 1
- 提交 2
- 提交 3
然后我意识到在最后两次提交中所做的事情是完全错误的,我需要再次从 Commit 1 开始。问题:
- 我该怎么做?
- 我可以将 Commit 2 和 3 移动到单独的分支以供将来参考(说它们毕竟不是那么糟糕)并继续从 Commit 1 在 master 上工作吗?
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
谢谢
git - 如何丢弃 Git 中的本地提交?
我一直在做一些事情,并决定它完全被搞砸了……在做了一些事情之后。所以我尝试了以下顺序:
在这一点上我得到了消息
我想丢弃我的本地提交,而不必清除我的本地目录并重新下载所有内容。我怎样才能做到这一点?
git - 有人将变基或重置推送到已发布的分支后,我如何恢复/重新同步?
我们都听说过永远不应该对已发布的作品进行变基,这很危险,等等。但是,我还没有看到任何有关如何处理变基发布的情况的食谱。
现在,请注意,只有当存储库仅由已知(最好是小)的一群人克隆时,这才是真正可行的,所以无论谁推送 rebase 或 reset 都可以通知其他人他们下次需要注意拿来(!)。
如果您没有本地提交foo
并且它被重新定位,我见过的一个明显的解决方案将起作用:
foo
根据远程存储库,这将简单地丢弃本地状态以支持其历史记录。
但是,如果一个人在该分支上进行了大量的本地更改,那么如何处理这种情况呢?
git - 如何将 Git 存储库恢复到以前的提交?
如何从当前状态恢复到某个提交时的快照?
如果我这样做git log
,那么我会得到以下输出:
我如何恢复到 11 月 3 日的提交,即 commit 0d1d7fc
?
git - 无法使用 Git 将文件重置为特定提交
我有一个修改过的文件,我想恢复到最新提交中的任何内容,但它“卡在”那里总是被标记为已修改。
然后我尝试:
但是 git status 的输出还是一样的。然后我尝试:
而且 git status 的输出还是一样的。
关于如何摆脱该文件的假定更改的任何想法?
git - 在 git 中最后一次提交后重置所有更改
如何撤消上次提交后对我的目录所做的每项更改,包括删除添加的文件、重置修改的文件以及重新添加已删除的文件?
git - 撤消“git添加”?
我错误地使用命令“git add dir”添加了文件。我还没有运行“git commit”。有没有办法从提交中删除这个目录以及其中包含的所有内容?
我试过git reset dir
了,但是没有用。显然git reset file
是撤消它的方法。但我有这么多文件和这么少的时间。
git - 如何删除git中的中间合并?
我想删除中间合并(删除,而不是 squash),然后将最后 2 个提交移动到新分支。
这是我目前的git log --graph
:
我想结束这个:
我想用git rebase -i
tade 删除与分支的合并,然后执行 agit branch newone
并将git reset --hard HEAD^2
最后 2 个提交移动到新分支。但是,当我进行 rebase 时,它向我显示了来自 tade 分支的所有提交,这些提交合并到了 master 和 | 不愿意删除它们。
有没有更好的方法或者我应该继续它?
编辑:我更新了预期的状态图以使其更加清晰。2个新的提交(aaaaaaa
和bbbbbbb
)只是为了更好地说明状态(我希望)