我创建了一个GitHub存储库。然后我在我的叉子上做了一些改变。然后原始存储库合并了我的更改和其他一些更改。现在,我想合并那些我遗漏的更改。我尝试了一个简单的拉,然后推,但这导致我的提交副本。最好的方法是什么?
当前回答
每个存储库可能都有一个“遥控器”。你需要从一个遥控器拉,然后推到另一个遥控器。
如果你最初是从你的fork克隆的,这个远程将被称为“origin”。如果你还没有添加它,你需要添加另一个存储库作为另一个远程:
git remote add <shortname> git://github.com/<ownerName>/repo.git
在这一切都设置好之后,你应该确实能够(github更改默认分支从master到main,根据需要更改)
git pull <shortname> master
git push origin
记住,git pull不过是一个宏,它按此顺序执行git fetch和git merge。您只需要从其他存储库获取提交列表,然后将他的分支合并到您的树中。合并应该对两个分支上的提交做正确的事情。
当然,GitHub,在它所有的神奇之处,给了你一个捷径。在存储库的分支上有一个“快进”按钮,如果您完全合并到另一端,您可以使用它来赶上您的分支。
其他回答
每个存储库可能都有一个“遥控器”。你需要从一个遥控器拉,然后推到另一个遥控器。
如果你最初是从你的fork克隆的,这个远程将被称为“origin”。如果你还没有添加它,你需要添加另一个存储库作为另一个远程:
git remote add <shortname> git://github.com/<ownerName>/repo.git
在这一切都设置好之后,你应该确实能够(github更改默认分支从master到main,根据需要更改)
git pull <shortname> master
git push origin
记住,git pull不过是一个宏,它按此顺序执行git fetch和git merge。您只需要从其他存储库获取提交列表,然后将他的分支合并到您的树中。合并应该对两个分支上的提交做正确的事情。
当然,GitHub,在它所有的神奇之处,给了你一个捷径。在存储库的分支上有一个“快进”按钮,如果您完全合并到另一端,您可以使用它来赶上您的分支。
所以上面那个公认的答案并不完全适合我。也就是说,当它工作时,它似乎失去了到原始github作者的链接,然后在那之后似乎不再工作了。我认为问题在于答案遗漏了远程名称和分支之间的/。所以它会从远程获取一个名为master的分支,但不能对它做任何事情。不知道为什么。
以下是github网站推荐的方法。
一旦你克隆了你的fork回购,你需要添加一个远程指向原始的,就像前面的答案说的那样。他们喜欢称它为上游,但这无关紧要。
git remote add upstream git://github.com/octocat/Spoon-Knife.git
然后你去取
git fetch upstream
您将看到可用于合并的版本
From git://github.com/octocat/Spoon-Knife.git
* [new branch] gh-pages -> upstream/gh-pages
* [new branch] master -> upstream/main
然后你只需要选择你想要合并的分支。请注意,这些不是本地分支,它们存储在远程下。但如果你没有一个叫做upstream/master的本地分支(这是允许的),你应该可以很好地合并下面的行:
git merge upstream/main
或者,你也可以用下面这行来快捷获取/合并(至少在初始获取之后):
git pull upstream/main
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- 在GitHub上有一个公共回购的私人分支?
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- 只用GitHub动作在特定分支上运行作业
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 是否有一个链接到GitHub下载文件的最新版本的存储库?