7

我在 GitHub 上创建了一个仓库。

然后我通过 SmartGit 将我的 fork 克隆到本地开发环境的文件夹中。此外,我将原始存储库添加为远程。

现在,原始存储库已经添加和更改了一些文件。在继续开发之前,我想检索这些以便我了解最新情况。

我按下 SmartGit 中的 Pull 按钮并在对话框中选择原始存储库。SmartGit 将此返回给我:

remote: Counting objects: 24, done.
remote: Total 13 (delta 7), reused 12 (delta 6)
From github.com:Original/repo
 * [new branch]      master     -> lm/master

但是,添加的文件和更改不会添加到我的本地存储库中。使用 Git Bash 手动执行此操作 -git pull original master一切正常。

为什么 SmartGit 不像我预期的那样拉?

4

4 回答 4

11

Pull上,SmartGit 将执行“git fetch”,然后再合并。重新定位跟踪的分支。在您的情况下,master轨道origin/master,而不是lm/master。你现在有以下选择,总是假设你在master

(1) 配置master为跟踪lm/master而不是origin/master:调用Branch|Branch Manager,选择,从上下文菜单中master调用Reset Tracked Branchlm/master ,然后添加到选择并调用Set Tracked Branch。现在,它将lm/master在每个Pull上合并(或重新定位) 。

(2) 手动合并lm/master:调用Branch|Merge和 select lm/master

(3) 手动重新定位到lm/master:invoke Branch|Rebase,选择HEAD 到选定的提交,然后在图形页面上,选择lm/master

于 2012-05-08T10:11:09.780 回答
8

我最终在 SmartGit 中所做的是:

  • Remote > Add(就像你做的那样)。我打电话给我的上游
  • 在分支面板Right click upstream > fetch more..中选择分支。(通常是主人)
  • 在分支面板Double click upstream > master中。这将要求您创建第二个分支(通常是 master-2)。我也称它为upstream。所以我有一个名为 upstream 的远程仓库和一个名为 upstream 的本地分支,用于跟踪上游/master。
  • 在分支面板Double click Local Branches > Master中让您回到您的主分支。

在这一点上,我假设您只是在几分钟前才分叉了该项目,因此下一步不会很有用,但如果在稍后阶段有一些额外的提交,您将需要这样做。

  • Remote > Pull并选择上游。如果你按下小向下箭头,你会看到你只能做“既不合并也不变基”。这很好。
  • Click fetch这将允许您查看所有日志以及已更改的内容。
  • 在分支面板Right click Local Branches > upstream > Merge中。
  • Fast-Forward如果你相信你可以。(我的首选方式)。
  • 或者Create Merge-Commit.

从这一点开始,您只需要做最后 5 个步骤。第一步只是设置。

于 2013-05-29T09:41:50.167 回答
3

如果 SmartGit对您的每个Pull执行Fetch

然后在应用程序的菜单栏或分支窗口中找到分支选项。 在此处输入图像描述

然后

在此处输入图像描述

或者

在此处输入图像描述

瞧……享受吧

于 2014-03-05T06:32:18.130 回答
3

如果当前本地分支的上游分支是“ ”,您将看到新文件lm/master
但是如果你在master,它的上游分支肯定是默认的“ origin/master”(即master你的 fork 的)

如果要合并原始存储库中的文件,请使用

git merge lm/master

或者,在 SmartGit 中,合并fromlm/master到您当前的分支。

于 2012-05-08T09:45:40.213 回答