我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。

我如何解除那些承诺?当地当地仓库?


当前回答

如果你们在本地做出你们不喜欢的事,而他们还没有被推倒,而你们却可以把事情重现为以往的善事。这好像坏事从未发生过。下面是这样的:

在您的终端中( 终端、 Git Bash 或 Windows 命令提示) , 浏览到您的 Git repo 的文件夹中。 运行 git 状态, 并确保您有干净的工作树。 每个承诺都有一个独特的散列( 看起来像 2f5451f ) 。 您需要找到最后一件好事的散列( 您想要返回到哪个地方 ) 。 这里有两个地方您可以看到要承诺的散列 : 在 GitHub 或 Bitbucket 网站或网站的承诺历史中 。 在您的终端中( 终端、 Git Bash 或 Windows 命令快递) 运行命令 git 日志 -- 在线, 一旦您知道最后一件好事的仓列( 您想要返回到哪个地方) , 请运行以下的命令( 将 2f5451f 与您的承诺重写 ) :

git reset 2f5451f
git reset --hard 2f5451f

注:如果您确实重置了承诺, 承诺将被删除, 但更改将显示为未承诺, 允许您访问代码 。 这是最安全的选项, 因为也许您想要一些代码, 现在您可以做出一些好的更改和新承诺 。 通常您会想要撤销承诺, 丢弃代码, 这正是 Git 重置 -- 硬键所做的 。

其他回答

仅使用git reset --hard <last good SHA>重新设置修改并给予新的承诺。您也可以使用git checkout -- <bad filename>.

(2015年等)

如果你在视觉工作室无法同步, 因为不允许你按到像“开发”那样的分支, 那么和我想的一样多, 在视觉工作室NEITHE莱弗特( REVERT)努尔战 地 方(硬的或软的)将有效。

答案是用数字标注的:

使用此命令命令 根 你的项目根 核武器 任何试图 被推推:

git reset --hard HEAD~1

备份或拉链你的文件 只是以防你不想失去任何工作,等等...

类型类型类型git log并发现最后的散列代码,然后输入:

git reset <the previous co>

如何修正上一个本地承诺

使用 git- gui (或类似) 执行git commit --amend。从 GUI 中,您可以从承诺中添加或删除单个文件。您也可以修改承诺信件。

如何撤销上一个本地任务

仅将分支重新设置为上一个位置(例如,使用gitkgit rebase) 。然后从保存的副本中重新应用您的更改。在您本地仓库的垃圾回收收集后,它会像没有发生不想要的操作一样。要用一个命令来完成所有这些,请使用git reset HEAD~1.

警告单词: 粗心使用git reset我建议基特新手们尽可能避免这样做。

如何撤销公开承诺

表演a逆向樱桃摘 (git- rever 反转)来撤销更改。

如果你还没有在你的分支上做其他的修改, 你可以简单地做。 。 。

git revert --no-edit HEAD

然后将更新的分支推至共享仓库 。

承诺历史将分别显示两个承诺.


高级:校正私立公共存储库分支

这可能很危险 -- -- 请确定您有该分支的本地副本要反射 。

备注:如果有其他人在为分支工作,您不想这样做。

git push --delete (branch_name) ## remove public version of branch

清理你的分行 在当地,然后冲...

git push origin (branch_name)

通常情况下,你可能不必担心你的私人部门 将历史变成原始历史。只是催促后续承诺(见上文“如何撤销公共承诺”),然后,做一个壁球- 合并隐藏历史。

典型基周期

在前几次答复中谈到与Git相关的命令时,我想向所有读者介绍我典型的Git周期,这可能是有益的。 这就是我如何与Git合作,

  1. 第一次从远程服务器克隆

    git clone $project

  2. 从远程拉动( 当我没有当地未完成的推动承诺) )

    git pull

  3. 将新的本地文件 1 添加到 $to_ be_ compent_ list (想象$to_ be_ compent_ list 意思是staged区域)

    git add $file1

  4. 删除从 $to_be_ composed_ list 错误添加的文件2( 假设文件2 与第 3 步一样添加, 我并不想这样做 )

    git reset $file2

  5. 正在提交 $to_ be_ compent_ list 中的文件1

    git commit -m "commit message description"

  6. 在推进前与远程仓库同步本地承诺

    git pull --rebase

  7. 冲突发生时的解决配置合并工具

    git mergetool #resolve merging here, also can manually merge

  8. 添加冲突解决文件file1:

    git add $file1

  9. 继续我先前的重新基地指挥

    git rebase --continue

  10. 启动已同步的本地最后一次任务已就绪

    git push origin head:refs/for/$branch # branch = master, dev, etc.