繁体   English   中英

Git:重置原始/主分支

[英]Git: reset the original/master branch

我对Git完全陌生。 我提交了一些错误的代码,然后对其进行纠正,我将当前分支重置为上一个分支。 但是不知何故,这没有做我想要的! 现在,我的主人有了一个额外的分支名称previous_master(这是我希望分支指向的位置)。 我错误提交的代码的分支名称为original / master! 我不确定如何纠正我的错误。 我希望主服务器也具有分支名称original / master。

如果您知道要母版指向的提交的阴影,请执行以下操作:

$ git checkout master
$ git reset <sha>

如果执行

$ git reflog

您将获得所做工作的历史记录。 左列中的字符串是shas。 这些信息起初可能有些吓人,但是应该很容易找出想要的信息。 实验!

基本知识

首先请记住,git中的所有内容都由哈希标识。 您在历史记录中提交的所有内容都可以通过此哈希访问( git checkout $hash可以将应用程序状态更改为它, git show $hash可以显示该提交中的更改,等等。)。

分支名称的工作方式类似于标记-它们使您的工作树易于组织,但它们全都只是哈希指针。 您可以根据需要使用git checkout <hash id>在分支中“回到过去”。

起源/*

看起来像something/something分支(例如origin/master )是远程分支。 因此, origin/master意味着在“ origin”远程站点上的分支“ master”。

您可以通过以下方式显示本地分支机构:

git branch

并通过:

git branch -r

您可以通过以下方式将master发送到名为origin的远程回购中:

git push origin master

如果推送中两个分支的历史记录之间存在冲突,则git将不允许对其进行推送,它会提示您手动解决冲突,然后再允许推送。


在您的情况下,您需要找到哪个提交(哪个哈希)是所需的应用程序状态,然后将分支重置为该提交。

您可以通过以下方式在终端中显示提交历史记录:

git log --graph --decorate --pretty=oneline --abbrev-commit --all

这看起来很疯狂,但是它是我最喜欢的git命令,我将它放在短别名上

您可以通过以下方式将应用程序状态切换为提交:

git checkout $hash

HEAD现在位于该哈希表中。

找到您想要的状态,并通过以下方式将您的主人重置为:

git checkout master
git reset --hard $hash

请小心,因为这将删除您所有未提交的更改。

所有提交的历史记录都将保留-简单地说,它将重置您当前的分支并将状态恢复为历史记录中的哈希值。

如果您随后要将其发送回购电话:

git push --force origin master
  • 这将最终将您的主状态反映到原始/主(将其发送到远程原点)。 除非绝对确定要更改该远程服务器上的历史记录, 否则不要使用--force ,并且如果另一个开发人员已经使用了从origin / master提取的历史记录, 则不要使用--force ,因为这会更改origin/master的历史记录。 它会做您想要的,但是您应该更详细地了解它:

    男人git push

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM