我在GitHub上分叉了一个存储库。
然后我通过SmartGit将我的叉子克隆到我当地开发环境的一个文件夹中。 另外,我将原始存储库添加为远程存储库。
现在,原始存储库已添加并更改了一些文件。在继续开发之前,我想检索这些以便我能及时更新。
我按下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没有像我期望的那样拉动?
答案 0 :(得分:10)
在拉上,SmartGit将执行“git fetch”并在该合并后执行。重新定义跟踪的分支。在您的情况下,master
跟踪origin/master
,而不是lm/master
。您现在有以下选择,始终假设您在master
:
(1)配置master
以跟踪lm/master
而不是origin/master
:调用分支|分支机构管理器,选择master
,调用从上下文菜单中重置跟踪分支,然后将lm/master
添加到选择中并调用设置跟踪分支。现在,它是lm/master
,它将在每个拉上合并(或重新绑定)。
(2)手动合并lm/master
:调用分支|合并并选择lm/master
。
(3)手动变基于lm/master
:调用Branch|Rebase
,选择 HEAD到选定的提交,然后在图表页面上选择 lm / master
答案 1 :(得分:7)
我最终在SmartGit中做的是:
Remote > Add
(正如你所做的那样)。我打电话给我上游。Right click upstream > fetch more..
中选择分支。 (通常是主人)Double click upstream > master
中。这将要求您创建第二个分支(通常是master-2)。我还称之为上游。所以我有一个名为upstream的远程仓库和名为upstream的本地分支跟踪上游/主站。Double click Local Branches > Master
中,让您回到主分支。此时我会认为你刚刚刚刚分配了项目,所以下一步不会非常有用,但是如果稍后会有一些额外的提交,你需要这样做。 / p>
Remote > Pull
并选择上游。如果按下小向下箭头,您将看到仅执行“既不合并也不改变”。这很好。Click fetch
这将允许您查看所有日志和已更改的内容。Right click Local Branches > upstream > Merge
。Fast-Forward
如果你相信你可以。 (我的首选方式)。Create Merge-Commit.
从这一点开始,你只需要做最后5个步骤。 第一步就是设置。
答案 2 :(得分:3)
如果当前本地分支的 upstream branch 为“lm/master
”,您会看到新文件。
但是如果你在master
,它的上游分支肯定是默认的“origin/master
”(即叉子的master
)
如果要合并原始仓库中的文件,请使用
完成命令git merge lm/master
或者in SmartGit, merge从lm/master
到您当前的分支。
答案 3 :(得分:3)
如果SmartGit在您的每个 Pull 上执行获取,
然后在应用程序的菜单栏或分支窗口中找到分支选项。
然后
OR
Voila ...享受