我分叉了一个项目,进行了更改,并创建了一个被接受的拉取请求。新的提交后来被添加到存储库中。我怎样才能把这些承诺交给我?
当前回答
假设你的叉子是https://github.com/me/foobar原始存储库是https://github.com/someone/foobar
参观https://github.com/me/foobar/compare/master...someone:master如果您看到绿色文本“能够合并”,请按Create pull request在下一页上,滚动到页面底部,然后单击合并请求和确认合并。
使用以下代码段生成链接以同步分叉存储库:
新Vue({el:“#app”,数据:{yourFork:'https://github.com/me/foobar',原始回购:'https://github.com/someone/foobar'},计算:{syncLink:函数(){const yourFork=新URL(this.yourFork).pathname.split('/')const originalRepo=新URL(this.originalRepo).pathname.split('/')如果(yourFork[1]&&yourFork[2]&&originalRepo[1]){返回`https://github.com/${yourFork[1]}/${yourFork[2]}/compare/master${originalRepo[1]}:主`}return“数据不足”}}})<script src=“https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js“></script><div id=“app”>您的分叉URL:<inputsize=50v-model=“yourFork”/><br/>原始存储库URL:<input v-model=“originalRepo”size=50/><br/>用于同步分叉的链接:<a:href=“syncLink”>{syncLink}</a></div>
其他回答
保持分叉存储库始终保持永久更新有两个主要方面。
1.从fork master创建分支并在那里进行更改。
因此,当您的PullRequest被接受时,您可以安全地删除分支,因为当您使用上游更新它时,您贡献的代码将保存在分叉存储库的主库中。这样,您的主机将始终处于干净状态,以便创建新的分支以进行另一个更改。
2.为fork master创建一个计划作业,以便自动进行更新。
这可以用cron完成。下面是一个示例代码,如果您在linux中执行此操作。
$ crontab -e
将此代码放在crontab文件中,以每小时执行一次作业。
0 * * * * sh ~/cron.sh
然后创建cron.sh脚本文件,并与ssh代理和/或预期的git交互,如下所示
#!/bin/sh
WORKDIR=/path/to/your/dir
REPOSITORY=<name of your repo>
MASTER="git@github.com:<username>/$REPOSITORY.git"
UPSTREAM=git@github.com:<upstream>/<name of the repo>.git
cd $WORKDIR && rm -rf $REPOSITORY
eval `ssh-agent` && expect ~/.ssh/agent && ssh-add -l
git clone $MASTER && cd $REPOSITORY && git checkout master
git remote add upstream $UPSTREAM && git fetch --prune upstream
if [ `git rev-list HEAD...upstream/master --count` -eq 0 ]
then
echo "all the same, do nothing"
else
echo "update exist, do rebase!"
git reset --hard upstream/master
git push origin master --force
fi
cd $WORKDIR && rm -rf $REPOSITORY
eval `ssh-agent -k`
检查分叉的存储库。它将不时显示此通知:
此分支与<upstream>:master相等。
许多答案最终会将fork移到父存储库之前一次提交。这个答案总结了这里找到的步骤,这些步骤会将您的fork移动到与父级相同的提交。
将目录更改为本地存储库。如果您不是git结账主管,请切换到master分支将父级添加为远程存储库,git remote Add upstream<repo location>向上游发出git fetch发布git上游/主数据库在这个阶段,您可以通过键入gitstatus来检查提交将要合并的内容发布git推送源主机
有关这些命令的更多信息,请参阅步骤3。
如果您使用GitHub Desktop,只需6步(实际上只有5步)即可轻松完成。
打开Github Desktop并选择存储库后,
转到“历史记录”选项卡单击搜索栏。它将显示所有可用的分支(包括父存储库的上游分支)选择相应的上游分支(它将是上游/主分支到同步主分支分支)(可选)它将显示上游分支中的所有提交。您可以单击任何提交都可以看到更改。根据您的活动分支,单击主/分支名称中的合并。等待GitHub Desktop发挥作用。
查看下面的GIF作为示例:
Android Studio现在已经学会了使用GitHub fork存储库(您甚至不必通过控制台命令添加“上游”远程存储库)。
打开菜单VCS→ Git公司
并注意最后两个弹出菜单项:
重新使用我的GitHub分叉创建拉取请求
试试看。我使用第一个来同步本地存储库。无论如何,在您单击“Rebase my GitHub fork”后,可以在Android Studio中访问父远程存储库(“上游”)的分支,您将能够轻松地使用它们进行操作。
(我使用带有“Git集成”和“GitHub”插件的Android Studio 3.0。)
这取决于存储库的大小以及如何分叉。
如果它是一个很大的存储库,您可能希望以一种特殊的方式管理它(例如删除历史记录)。基本上,您可以获取当前版本和上游版本之间的差异,提交它们,然后将它们重新提交给master。
试试看这个。它描述了如何处理大型Git存储库,以及如何使用最新的更改对其进行上游处理。
推荐文章
- 当git说它正在“解析delta”时,它实际上在做什么?
- Git命令将一个文件夹移动到另一个文件夹
- 在单个文件中重新启动/撤消冲突解决方案
- 如何修复Github页面上的HTTP 404 ?
- 如何显示数学方程在一般github的markdown(不是github的博客)
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 你可以为你的组织托管一个私有的存储库来使用npm吗?