我分叉了一个项目,进行了更改,并创建了一个被接受的拉取请求。新的提交后来被添加到存储库中。我怎样才能把这些承诺交给我?
当前回答
“拉”应用程序是一个自动设置和忘记的解决方案。它将使fork的默认分支与上游存储库同步。
访问URL,单击绿色的“安装”按钮,然后选择要启用自动同步的存储库。
分支每小时在GitHub上直接更新一次,在本地计算机上,您需要拉动主分支以确保本地副本同步。
其他回答
rm -rf oldrepository
git clone ...
可能有更微妙的选项,但这是我唯一有信心的方法,我的本地存储库与上游存储库相同。
从2014年5月开始,可以直接从GitHub更新fork。截至2017年9月,这仍然有效,但这将导致肮脏的犯罪历史。
在GitHub上打开你的分叉。单击拉取请求。单击New Pull Request。默认情况下,GitHub会将原始文件与您的fork进行比较,如果您没有进行任何更改,则不应该有任何可比较的内容。如果看到该链接,请单击切换基础。否则,手动将底叉向下设置到叉上,将头叉设置到上游。现在GitHub将您的分叉与原始分叉进行比较,您应该可以看到所有最新的更改。创建拉取请求并为拉取请求分配一个可预测的名称(例如,从原始请求更新)。向下滚动到Merge pull请求,但不要单击任何内容。
现在您有三个选项,但每个选项都会导致提交历史记录不那么清晰。
默认值将创建难看的合并提交。如果您单击下拉菜单并选择“压缩并合并”,所有中间提交都将被压缩为一个。这通常是你不想要的。如果您单击Rebase并合并,所有提交都将“与”您一起进行,原始PR将链接到您的PR,GitHub将显示This branch is X commits before,Y commits behind<original fork>。
因此,是的,您可以使用GitHub web UI保持回购的上游更新,但这样做会玷污您的提交历史。而是坚持使用命令行-这很简单。
尝试此操作,单击“获取上游”以从上游主机同步分叉的回购。
有三种方法可以做到这一点:从web UI(选项1)、从GitHub CLI(选项2)或从命令行(选项3)。
选项1-Web UI
在GitHub上,导航到要与上游存储库同步的分叉存储库的主页面。选择“获取上游”下拉列表。
查看上游存储库中有关提交的详细信息,然后单击“获取并合并”。
选项2-GitHub CLI
要从父级更新远程分叉,请使用gh repo sync子命令并提供分叉名称作为参数。
$ gh repo sync owner/cli-fork
如果来自上游存储库的更改导致冲突,则GitHub CLI无法同步。您可以设置-force标志来覆盖目标分支。
如何安装GitHub CLIGitHub CLI手册
选项3-命令行
在将分叉与上游存储库同步之前,必须在Git中配置指向上游存储库的远程。
1打开Git Bash。
2将当前工作目录更改为本地项目。
3从上游存储库获取分支及其各自的提交。对BRANCHNAME的提交将存储在本地分支上游/BRANCHNAME中。
$ git fetch upstream
> remote: Counting objects: 75, done.
> remote: Compressing objects: 100% (53/53), done.
> remote: Total 62 (delta 27), reused 44 (delta 9)
> Unpacking objects: 100% (62/62), done.
> From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
> * [new branch] main -> upstream/main
4查看fork的本地默认分支-在本例中,我们使用main。
$ git checkout main
> Switched to branch 'main'
5将来自上游默认分支(在本例中为upstream/main)的更改合并到本地默认分支中。这将使fork的默认分支与上游存储库同步,而不会丢失本地更改。
$ git merge upstream/main
> Updating a422352..5fdff0f
> Fast-forward
> README | 9 -------
> README.md | 7 ++++++
> 2 files changed, 7 insertions(+), 9 deletions(-)
> delete mode 100644 README
> create mode 100644 README.md
如果一个人的本地分支没有任何唯一的提交,Git将执行“快进”:
$ git merge upstream/main
> Updating 34e91da..16c56ad
> Fast-forward
> README.md | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
注意:同步一个人的分叉只会更新回购的本地副本。要更新GitHub.com上的分叉,必须推送更改。
来源:GitHub Docs-同步分叉
Android Studio现在已经学会了使用GitHub fork存储库(您甚至不必通过控制台命令添加“上游”远程存储库)。
打开菜单VCS→ Git公司
并注意最后两个弹出菜单项:
重新使用我的GitHub分叉创建拉取请求
试试看。我使用第一个来同步本地存储库。无论如何,在您单击“Rebase my GitHub fork”后,可以在Android Studio中访问父远程存储库(“上游”)的分支,您将能够轻松地使用它们进行操作。
(我使用带有“Git集成”和“GitHub”插件的Android Studio 3.0。)
推荐文章
- 在Markdown Jekyll中使用图像说明
- 如何将git配置存储为存储库的一部分?
- 如何修改GitHub拉请求?
- 如何在Github和本地删除最后n次提交?
- 我如何调试git/git-shell相关的问题?
- 错误:无法使用rebase进行拉取:您有未分阶段的更改
- Git隐藏未缓存:如何把所有未分期的变化?
- 如何将文件附加到GitHub问题?
- 真实的恶魔
- 如何从另一个分支获得更改
- Git:权限被拒绝(publickey)致命-无法从远程存储库读取。克隆Git存储库时
- git reflog和log有什么区别?
- git推挂在Total line之后
- 重命名git子模块
- 如何添加谷歌分析跟踪ID到GitHub页面