问题标签 [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 --hard”之后恢复更改
我意识到我们的分支 dev 不是很稳定,并恢复了一些更改以进行调试。
这在 dev 之上添加了一个新的提交:270329c
从那时起,另一个人向 dev 添加了一些安全提交,我调试了 staged_dev 并添加了一些提交。如何270329c
从 dev 撤消并将 staged_dev 的其他提交添加到 dev ?
参考 stackoverflow 问题:Revert to a commit by a SHA hash in Git?
git - 如何撤消分支推送到主控
好的,所以我在 GitHub 上有一个 fork 的 repo,并且上游 repo 自从我 fork 以来还没有更新。昨天,我从几个月前 fork 回购之前所做的最后一次上游提交创建了一个分支。
我在分支上做了一个错误的提交,所以我试图通过git push -f origin HEAD^:master
在我的本地分支实例上使用来撤消它,但是正如你所看到的,我忘记更改master
为分支的名称。所以它最终覆盖了我迄今为止在主人身上所做的一切。
我的问题是,有没有办法消除这个混乱,这样我就可以让主人回到这个特殊推动之前的状态?
我经常使用 TortoiseGit 和 TortoiseSVN,在 Git 的任何组件中我都看不到我之前在 master 上所做的任何事情的剩余部分,但是我仍然可以在 SVN 主干的历史日志中看到我之前的所有提交。在以前的状态下,我没有干净的 master 本地实例。
我试过类似git reset --hard <last good commit hash>
or的东西git push -f origin <last good commit hash>:master
,但它说不存在这种哈希的提交。我仍然可以从浏览器历史记录中访问 GitHub 上的所有先前提交。
下游没有任何东西,所以不用担心。
有小费吗?
git - 将 git 中的早期版本设为最新版本?
如果我发现自己想回到我历史上的早期版本,并从那里开始编辑,我应该在 git 中做什么?(即,将一些早期版本放在最前沿并开始提交/推送)?这样做git reset --hard HEAD~1
会让我及时回到以前的版本,但是一旦我找到了我想要的版本,我该怎么办?如果我尝试git push
从这个位置做一个,它会告诉我
但我不想拉远程更改——除了我现在拥有的版本,我什么都不想要。
git - Git revert 正在覆盖我的文件
假设我在本地对文件进行了一堆更改,然后将这些更改添加到暂存索引中,然后提交它们。然后我意识到,实际上,我犯了一些错误,我想快速撤消整个提交并回到我提交之前的位置(即,我的更改从存储库中取出并返回到索引中)。
我试图做一个git revert SHA
,这确实撤消了我最近的提交,但它也完全覆盖了我的所有文件并将它们恢复到原来的状态。
如何在不覆盖我更改的情况下恢复提交?
git - 如何在`git merge --no-commit --no-ff`之后`git reset`
我是 git 的新手。我正在研究一个涉及大量代码移动的分支,包括删除旧文件和添加新文件。因此,我决定在实际合并之前先对 git merge 进行一次空运行:
我跑了git merge --no-commit --no-ff <myBranchName>
。在我运行这个之后,它向我展示了一些冲突。然后我做了 git status ,结果是:
然后撤消git add
(由于git merge
空运行而发生),我运行了git reset HEAD
. 但后来我意识到/了解到,为了回到 master 分支在合并之前所处的阶段(即与提交给 master 的内容完全相同),我需要在运行git reset --hard HEAD
硬重置后运行,git status
显示以下内容:
上述文件 F1、F2、F3 和 upgrade.php 已添加到我正在处理的分支中。我希望这git reset --hard HEAD
将使master
分支忘记与我试图合并的分支相关的任何内容(试运行)。
这是可能的吗?我在这个概念中有什么遗漏吗?我是否只有手动删除文件的唯一选择?任何让我了解更多的帮助都会很棒!谢谢!
git - 我的 git repo 有多糟糕?
我的项目在服务器上有一个裸仓库设置。我目前在分支0.9/develop
。我0.9/develop
与另一个开发人员正在开发的分支合并。事实证明,修复他的代码比完全消除他的更改要多得多。不幸的是,我git push origin 0.9/develop
在提交合并后已经运行了一个,并且我将这些更改拉到了我的开发和登台服务器(是的,我很愚蠢)。
我一直在经历一些关于 SO 的类似问题,但似乎没有一个能完全涵盖我的确切情况。这个特别有用:How to revert Git repository to a previous commit?
使用来自该问题的信息,我能够成功消除项目的最后一次提交。具体来说,我做了一个git reset --hard f6c84a0
,在我将其他开发人员的 n00bery 合并到我的诗歌中之前,它成功地将我的本地存储库重置为提交。
好,太棒了。现在我只需要修复裸回购。所以我尝试了git push --force origin 0.9/develop
。不幸的是,我丢失了服务器发回的特定消息,但它类似于“成功”,它表明远程 repo 已更新为提交 f6c84a0。
当我尝试 ssh 进入服务器然后进入我的暂存环境并运行 agit pull
时,响应是:
但是,当我git log
从登台服务器运行 a 时,合并中的所有提交仍在0.9/develop
分支上。我尝试了几件事,比如git pull --force
,但我无法让错误的提交消失。
好的。给猫剥皮的方法不止一种。我将登台服务器擦干净,然后重新git clone --recursive --no-hardlinks example.git stage.example.com
运行并运行了必要的设置脚本,该脚本执行了一些小的服务器维护工作。
现在我无法回到我的0.9/develop branch
. 过去,我只是简单地运行git checkout 0.9/develop
,但如果我现在尝试,我会得到:
等等……什么?0.9/develop
不是一个新的分支。使用来自这个问题的信息:如何在 Git 中克隆所有远程分支?我做了一个git branch -a
并得到以下结果:
然后我尝试git checkout origin/0.9/develop
了,但我收到以下消息:
好消息是登台服务器现在有正确的代码库,但我处于分离的 HEAD 状态。我意识到我可能在这里遗漏了一些非常小的东西,但这肯定会影响我的星期五晚上。如何让我的登台服务器 HEAD 指向返回的 HEAD 0.9/develop
?另外,我想在我的开发环境中做同样的事情,但我宁愿以正确的git
方式来做,而不是擦除整个服务器并重新开始。我可以这样做,还是我只需要通过从 repo 重建服务器来强制它?谢谢大家的帮助!
git - 运行 git reset --hard 时,分阶段的更改仍然存在。git checkout 和 git stash + git stash drop 也是如此。这是怎么回事?
所以这里有一些背景:我正在尝试使用hg-fast-export将存储库从 Mercurial 移动到 git,当我执行最后一步 ( ) 时,存储库中仍然存在更改。具体来说,它说有 4 个不应该删除的已删除文件。git checkout HEAD
当我尝试以下操作时,没有任何变化:
git reset --hard HEAD
, git checkout .
, git stash && git stash drop
.
我注意到的一件奇怪的事情是,当有人使用这个 Mercurial repo 时,他们在它的中间添加了一个 git repo T_T。所以有趣的是当我运行时git checkout HEAD
(但不是当我运行时git checkout .
),.git
子目录在索引中显示为已删除(奇怪)。每当我运行时,这些更改就会消失,git reset
但并非没有一堆关于无效路径的错误。
最后,这使存储库处于与我第一次运行时相同的状态git checkout HEAD
。(至少 git 是一致的!)。
肯定有一部分将 mercurial 转换为 git 的人经历过这种情况。任何人都可以分享他们在 git 中持续变化的经验吗?
merge - Git重置让我“仍在尝试合并”
我用很多不同的方式搜索了这个,找不到其他人在谈论它(至少据我所知)。
在我的办公室电脑上,我试图找到解决我遇到的问题的方法(所以我领先于我的远程 git repo,但没有提交)。那天晚上在家里,我想出了解决方案,并将其从我的家用电脑推送到我的远程仓库。
现在我回来工作了,我想在我的办公室电脑上重置我的本地仓库以匹配遥控器(并丢弃我所有的本地更改)。
我跑了:
我有:
这是什么意思?
' Still trying to merge
' 似乎表明它没有以某种方式完成,但我看不出是如何完成的(而且我没有运气在 git 文档中找到明确的答案)。
git - Git,如何将 origin/master 重置为提交?
我通过以下命令将本地主机重置为提交:
当我输入$ git status
命令时,终端说:
由于我也想重置原点/标头,我结帐到原点/主:
并通过以下命令重置标头:
然后我尝试将提交添加到我没有成功的原始/标题。
最后,我结帐给我当地的主人。
因为,我重置了 origin/master 的负责人,我希望 local 和 origin 应该在同一个方向,但是正如你所看到的,git 说我的 local/master 落后于 origin/master 7 次提交。
我该如何解决这个问题?我正在寻找的东西是本地/主控和原产地/主控的负责人指向相同的提交。下图显示了我所做的。谢谢。
git - 放弃向上游推送的 master 提交
在一个新项目中,我们有一个刚接触 git 的团队,我们开始直接在master上提交。我们不小心在 master 上做了一些错误的提交,这些提交被推送到中央仓库并被整个团队撤下。
意识到我们的错误,我们在错误提交之前创建了一个功能分支。我们的团队现在正在愉快地开发功能分支。
我们现在希望我们的主分支包含来自特性分支的确切代码,而不是重新引入错误的提交。
我看到该merge theirs
选项已从 git 的更高版本中删除。那么丢弃错误提交并使我们的 master 看起来与我们的功能分支完全一样的最佳方法是什么?
- 合并?
- 重置?
- 变基?