分支 - 使用TortoiseGit从远程获取/拉取

时间:2014-07-16 03:38:04

标签: git tortoisegit

我使用TortoiseGit v 1.8.9.0作为我的客户端。

我有一个git存储库,目前有2个分支。 HEAD分支以及1.0.0-Enhancements分支。

enter image description here

1.0.0-Enhancements分支在我的本地存储库中不是最新的。因此,当我使用TortoiseGit在本地查看此分支的提交历史时,它不会显示我在GitWeb中可以在远程控制台上看到的这个分支上的提交。

以下是两个屏幕截图,说明我的1.0.0-Enhancements分支的本地副本缺少提交。

- >使用TortoiseGit 在我当地的历史记录 enter image description here

- > GitWeb上的远程历史记录 enter image description here

我的最终目标是将1.0.0-Enhancements分支合并到HEAD分支中,但在此之前我相信1.0.0-Enhancements分支应该是我本地的最新版本。

我现在已经尝试了几个小时试图找到一种方法从远程到我的本地获取1.0.0-Enhancements提交但是找不到办法。这就是我试过的......

  1. make tortoise Git切换到1.0.0-Enhancements分支。 enter image description here

  2. 使用tortoiseGit从远程分支获取。 enter image description here

  3. 但是在我查看1.0.0-Enhancements分支的历史记录之后,丢失的提交仍然缺失。有人可以帮我解决这个问题吗?

    - 更新@CupCake的答案 -

    TortoiseGit还带有一个bash提示符。我使用命令行尝试了你的建议,但它们没有用。结果如下。

    enter image description here enter image description here

    但是我似乎在试用TortoiseGit UI中的git pull时取得了一些进展。 enter image description here

    这似乎有效,除了它带来了错误:

      

    git.exe pull -v --progress“origin”1.0.0-ENHANCEMENTS

         

    来自ssh:// upredmine / cvs / repo / codeRepository / git / repo04 / EPOS / EPOSWeb   * branch 1.0.0-ENHANCEMENTS - > FETCH_HEAD正在更新67b6537..ee38b20   错误:以下未跟踪的工作树文件   将被合并覆盖:   .metadata / .plugins / org.eclipse.core.runtime / .settings / org.eclipse.core.resources.prefs   .metadata / .plugins / org.eclipse.core.runtime / .settings / org.eclipse.jdt.ui.prefs   .metadata / .plugins / org.eclipse.core.runtime / .settings / org.eclipse.m2e.discovery.prefs   .metadata / .plugins / org.eclipse.core.runtime / .settings / org.eclipse.mylyn.context.core.prefs

         

    .metadata / version.ini请在合并之前移动或删除它们。   中止

         

    git没有干净地退出(退出代码1)(1094 ms @ 16/07/2014 3:32:47   PM)

    你能给我一些反馈吗?我是否需要强制更新或同步?

1 个答案:

答案 0 :(得分:2)

您遇到的问题似乎是您只是将增强功能分支提取到本地仓库中,但实际上并未将远程跟踪分支origin/1.0.0-Enhancements合并到您的本地1.0.0-Enhancements中。 1}}分支。

基本上,你的分支是这样设置的(让X代表你的增强分支):

Branches

如上图所示,涉及3个分支:

  1. X的本地版本。
  2. X的远程版本。
  3. 本地远程跟踪分支origin/X,用于跟踪远程版本X的位置。
  4. 使用git fetch,您可以更新本地存储库中的本地远程跟踪分支origin/1.0.0-Enhancements,但这是与本地1.0.0-Enhancements分支的单独分支。

    所以,你想要做的是:

    1. git pull
    2. git merge远程跟踪分支。
    3. 请注意,git pull实际上只是git fetch后跟刚刚获取的分支git merge的组合。

      选项1:合并

      由于您已经提取,因此您只需将origin/1.0.0-Enhancements合并到本地1.0.0-Enhancements分支中。我不知道你是如何在TortoiseGit中做到这一点的(我多年前停止使用它),但是如果你想从命令行执行它,你只需要做

      git checkout 1.0.0-Enhancements
      git merge origin/1.0.0-Enhancements
      

      选项2:拉

      将来,如果您没有先获取,则可以从远程分支执行拉入本地分支。再一次,我不知道如何在TortoiseGit中做到这一点,但是如果你想从命令行中做到这一点,你只需要做

      git checkout 1.0.0-Enhancements
      git pull origin 1.0.0-Enhancements
      

      关于HEAD符号引用的注释

      因此符号引用origin/HEAD 不是分支。它只是一个特殊的引用,指向(裸)远程仓库中的默认分支...默认情况下由该仓库的任何克隆检出的相同分支。

      非裸回购中,HEAD仍然是符号引用,但它不是指向默认分支,而是指向当前已检出的分支,或者当前检出提交,如果您当前不在分支的尖端(例如“分离的HEAD”状态)。

      文档