Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何从上游分行合并?_Windows_Git_Branching And Merging_Smartgit - Fatal编程技术网

Windows 如何从上游分行合并?

Windows 如何从上游分行合并?,windows,git,branching-and-merging,smartgit,Windows,Git,Branching And Merging,Smartgit,这是我的git设置(我们在公司网络中使用git+Atlassian存储): 我想做的是: 我想合并上游:主机->克隆:分支1。我知道此合并会有冲突(因为我更改了branch1中的文件,其他人在上游更改了这些文件)。完成后,我希望将我的更改推回到origin:branch1,其中将包括我从上游提交的1个提交+最新基础(我希望与主分支保持同步,因为这是我从中分支出来的分支)。除此之外,我希望它是一个重基,以便提交历史是干净的,不会到处都是蜘蛛网 另一个注意事项是,我没有直接使用git命令行。在Win

这是我的git设置(我们在公司网络中使用git+Atlassian存储):

我想做的是:

我想合并
上游:主机->克隆:分支1
。我知道此合并会有冲突(因为我更改了
branch1
中的文件,其他人在上游更改了这些文件)。完成后,我希望将我的更改推回到
origin:branch1
,其中将包括我从上游提交的1个提交+最新基础(我希望与
主分支保持同步,因为这是我从中分支出来的分支)。除此之外,我希望它是一个重基,以便提交历史是干净的,不会到处都是蜘蛛网

另一个注意事项是,我没有直接使用git命令行。在Windows上,我使用的是SmartGit,所以如果有人知道该工具的说明,那将是最理想的


如何像上面所述那样正确合并?

如果没有其他人克隆branch1或正在使用branch1,您可以在将master更新为upstream/master后,将其置于master之上

  • 首先,(SmartGit:Remote/Pull,选择“仅获取”)
  • 然后将
    master
    重置为
    上游/master
    (SmartGit:Local/reset)
  • 现在将branch1重设为master的基础(SmartGit:在
    Branchs
    视图中,您可以右键单击类似
    master
    的分支,然后选择
    重设标头的基础,将当前标头重设为所选分支
    master

    如果必要的话
  • 最后将
    branch1
    推(强制推)到
    origin
    (SmartGit:在
    branchs
    视图的上下文菜单中,您可以在本地分支上调用
    push
    push to

重基术语令人困惑,有些可怕。我看到“将基础重新设置到所选分支上”,由于
master
是我正在“选择”的分支,因此听起来好像我正在将
branch1
合并到
master
中。我是在倒读吗?可以将“rebase To”想象为“replay after”,例如,“replay commits from
branch1
after commits in
master
”@dahlbyk对我来说意味着“从
branch1
获取提交,并将其放入
master
”。这是正确的吗?我想做相反的事。。。我希望将
主控
中的最新更改放入
分支1
(以跟上原始主线中的最新进度)。不放入<代码>主控
保持不变
branch1
master
开始更改,然后从那里应用更改。@dahlbyk很抱歉把看起来很小的事情复杂化了,但他说“在
master
之上重新设置branch1
”。对我来说,这应该是“在
branch1
之上的rebase
master
”,这实际上是使
branch1
成为rebase的目标(它是)。我读它的方式让它听起来像“椅子跳到狗身上”(没有意义),而不是“狗跳到椅子上”(有意义)。
upstream:
  master

origin (my fork of 'upstream'):
  master
  branch1 (branch of master, with a few commits on top of it)

clone (local; clone of 'origin'):
  master
  branch1 (ahead of 'origin:branch1' by 1 commit)