【问题标题】:SmartGit pull not acting like expectedSmartGit pull 的行为不像预期的那样
【发布时间】:2012-05-08 09:02:32
【问题描述】:

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

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

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

我按下 SmartGit 中的 Pull 按钮并在对话框中选择原始 repo。 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 不像我预期的那样拉?

【问题讨论】:

  • 我假设您使用的是 SmartGit 3.0.x。打开日志并使用图表|选择分支显示“所有分支”时,你能看到其他提交吗? Branch|Branch Manager 为本地分支“master”显示什么?
  • @mstrap 拉取后,日志会显示提交,但不会拉取更改。分公司经理长这样:postimage.org/image/qpp3mgu1x

标签: git smartgit


【解决方案1】:

Pull 时,SmartGit 将执行“git fetch”,然后分别合并。变基 跟踪的分支。在您的情况下,master 跟踪 origin/master,而不是 lm/master。你现在有以下选择,总是假设你在master

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

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

(3) 手动 rebase 到 lm/master:调用 Branch|Rebase,选择 HEAD to selected commits 并在图形页面上选择 lm/master

【讨论】:

  • 看起来非常详细的 SmartGit。 +1
【解决方案2】:

我最终在 SmartGit 中所做的是:

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

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

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

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

【讨论】:

    【解决方案3】:

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

    如果您想合并原始仓库中的文件,请使用 a 完成您的命令

    git merge lm/master
    

    或者,in SmartGit, mergelm/master 到您当前的分支。

    【讨论】:

    • 这不能回答我的问题。问题不是来自 Git Bash,而是来自 SmartGit。
    • @Repox 当然,我已经编辑了答案,但基本上你想要做的是在 SmartGit 拉取之后进行合并。 SmartGit 允许您这样做。我的意思是解释为什么您必须执行额外操作(通过 GUI 或 bash)才能查看文件。
    【解决方案4】:

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

    然后在应用程序的菜单栏或分支窗口中找到分支选项..

    然后

    瞧……享受吧

    【讨论】:

      猜你喜欢
      • 2017-04-11
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 2016-01-28
      • 2018-12-15
      • 2013-09-05
      相关资源
      最近更新 更多