我是git的新手,所以问题可能很容易,git reset --hard HEAD和之间的区别是什么git reset --hard?
通读了Mark Dominus 的文章和Scott Chanon 的文章后,我认为这git reset abcd --soft不会影响索引,但是,以下内容表明确实如此。
c1.txt, c2.txt,c3.txt在回购中,c4.txt在索引中。全部在工作目录中:
$ git log --oneline --decorate
b91d91b (HEAD, master) C3
231a5df C2
7e7b2d7 C1
Run Code Online (Sandbox Code Playgroud)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: c4.txt
Run Code Online (Sandbox Code Playgroud)
$ ls
c1.txt c2.txt c3.txt c4.txt
Run Code Online (Sandbox Code Playgroud)
$ git reset 231a --soft
$ git log --oneline --decorate
231a5df (HEAD, …Run Code Online (Sandbox Code Playgroud) 我知道有人已经问过这个问题,但没有人提供帮助我的解决方案。
我使用 GitKraken,它显然没有用于检查历史中较旧提交的集成功能(我必须测试一下,没有进行任何更改)。我现在知道我应该使用git checkout HEAD~n而是使用软重置。所以 GitKraken 仍然显示我的更改在那里并且在我重置的更改之后出现。但是我怎样才能回到我最近的提交呢?退房也不起作用。
我不确定 GitKraken 是否只是显示错误,但 Git 告诉我我重置的提交是当前的 HEAD。似乎是正确的。
有什么方法可以恢复以下提交或将它们设置为 HEAD?
编辑重复标签:引用的线程是关于通过检查以前的提交来返回它的预期方式(我没有这样做)。由于我进行了软重置,因此我的主分支的 HEAD 不再是实际的最新提交,而是我将本地存储库重置为的那个。git reflog与重置一起使用有助于撤消已完成的操作。
我在这里阅读 git 教程,其中提到:
\n\n\n\n\n不要\xe2\x80\x99t 在其他开发人员从中拉取的公开可见分支上使用 git Reset,因为这会强制其他开发人员进行不必要的合并来清理历史记录
\n
我不明白问题是什么。如果我有一个公共分支,有 4 个提交,A->B->C->D。D 是最新提交。如果我硬重置回 B。然后,对于已经获取此分支的其他开发人员,当他们再次执行 git fetch 时,他们会看到它们比远程提前了 2 个提交,因此他们重置回B和都好对吧?或者我错过了什么?
\n在我的一个存储库中,本地主服务器位于远程控制器/ origin/master之前
* - master (123)
* -
* - remotes/origin/master (456)
Run Code Online (Sandbox Code Playgroud)
我所有的其他本地存储库(基于相同的远程存储库)都具有相同提交哈希(123)的远程/ origin/master.如何重置本地仓库以使遥控器/原点/主机重新同步?
好的,所以我在GitHub上有一个分叉的回购,而且自从我分叉后,上游回购没有更新.昨天,我创建了一个基于最后一次上游提交的分支,这是在我几个月前分配回购之前做的.
我在分支上做了一个错误的提交,所以我尝试通过git push -f origin HEAD^:master在我的本地分支实例上使用它来撤消它,但正如你所看到的,我忘了改为master分支的名称.所以它最终覆盖了我在主人身上所做的一切.
我的问题是,有没有办法解决这个混乱,所以我可以让主人回到这个特定的推动之前的状态?
我经常使用TortoiseGit和TortoiseSVN,在Git的任何组件之前我都看不到我在主服务器上做过的任何事情,但是我仍然可以在SVN trunk的历史日志中看到我之前的所有提交.我之前没有一个干净的本地主实例.
我试过的东西一样git reset --hard <last good commit hash>或git push -f origin <last good commit hash>:master,但它说,任何犯了这样的哈希存在.我仍然可以从浏览器历史记录中访问GitHub上的所有先前提交.
下游没有任何东西,所以不用担心.
有小费吗?
我正在学习git并且遇到了git soft reset并修改了git中的提交.我看到他们两个都是为了同一个目的.两者之间有任何显着差异.请告诉我,因为我无法看到两者之间有任何区别.
我完成了一个项目,我得到了一个合并冲突,所以我愚蠢跑git reset HEAD^ --hard,现在我的所有文件都消失了,除了我的节点模块文件夹(这是在的.gitignore)。反正我有可以恢复我的文件?
我使用VScode
从git reset --hard HEAD留下未跟踪的文件:
当我跑步时
git reset --hard HEAD,它应该重置为你所拉的原始版本,据我所知.不幸的是,它留下了文件,git status显示了一个未跟踪文件的大列表.你怎么告诉git"只是把它带回到最后一次拉动中,没有更多,没有更少"?
要摆脱这些文件,我必须运行git clean -df.
有人可以解释为什么它以这种方式工作,哪些文件将成为未跟踪的?