【问题标题】:How can I go go back to my master branch without losing all previous commits?我怎样才能回到我的主分支而不会丢失所有以前的提交?
【发布时间】:2017-12-26 19:50:18
【问题描述】:

我正在通过 Xcode 使用 git。几天前,我在我的项目中添加了一个远程存储库。当时我没有注意到它,但由于某种原因,Xcode 取消选择主分支作为我当前的分支,并且在过去的两天里,我所有的提交都是 (...)

我现在如何在不丢失进度的情况下选择 master 分支作为我的当前分支?

我尝试从最后一次主提交分支,但它仍然让我无处可去,因为无法保存最近的提交。

【问题讨论】:

  • 首先备份整个项目文件夹(里面会有一个.git文件夹,所以它也会备份你的git)。然后试试下面的:git checkout -b Temporary,@ 987654323@ 和 git push -u origin Temporary 。这将创建一个临时分支,将所有内容提交给它,然后将跟踪推送到远程临时分支。现在您可以签出 master 并与 Temporary 合并。如果一切都失败了,你有你的备份项目文件夹..再做一个备份,然后尝试别的..
  • 我不使用 Xcode(我碰过它一两次,但还不够坚持使用它:-))但我怀疑你处于“分离 HEAD”模式。在命令行中,运行 git branch 列出您的分支,这将列出 current 分支,旁边有一个 *。如果星号线显示* (HEAD detached ...),则表示您有这种分离的HEAD 模式。
  • 如果你一直在提交,那么它们就被提交了。你不会因为切换到另一个分支而失去工作。这就是 SCM 的全部意义所在。不过,您可能必须在命令行中做一些工作。
  • 谢谢@Brandon。当我通过终端创建一个临时分支时,我以前的所有提交都神奇地出现在那里,之后我只是将新分支合并到 master 中。将来我会在开始通过 Xcode 解决我的版本控制问题之前三思而后行 ^^
  • 有一些 Git GUI 比 Xcode 做得更好。有些是免费的。我自己使用 GitUp,它是开源的。

标签: git xcode9


【解决方案1】:

将我的评论移至答案:

一种解决方案是创建一个临时分支(通过命令行),其中包含您所有的提交,然后将其合并到 master.. XCode-9 与它所包含的新 git 工具有相当多的错误(并且它不再显示当前分支)..

要做到以上几点,你可以这样做:

git checkout -b "Temporary"

这会将您切换到一个名为“临时”的分支。

然后你做:

git commit -m "Your Changes".

将更改(如果有)提交到“临时”。

然后你做:

git push origin -u "Temporary"

这会将“临时”分支推送到上游并跟踪其更改。最后,您可以将该分支合并到 master 或 git pull origin master 将 master 合并到该分支。

由于它已经基于 master,因此可能不需要拉取,除非在您处理它时其他人将更改提交到 master。

在进行不熟悉的 git 操作之前,我总是对整个项目文件夹进行备份,其中包含一个 .git 隐藏文件夹。这将备份您的提交和项目。

不确定我是否应该提到这一点,但通常你总是想在 master 以外的另一个分支上工作。IE:Feature/BlahBlah 然后合并到 master。

【讨论】:

    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 2015-02-06
    • 2013-12-22
    相关资源
    最近更新 更多