我确信有大量的文档,但我没有看到任何内容。
我想为opensource projet做贡献,第一次做真正的PR。 (迟到总比没有好。)
为了简单起见,我只想把某人在github上做的工作(但没有推回到主人),做一些小的更新,然后尝试将PR制作到原始存储库
Master Repo是(R1):
分叉和更新的回购是(R2):(注意:在特定的分支中)
我在我的帐户上分发了ageneau repo
我的意图是:
在我的github帐户上做一个R2的分叉=我没有成功。它 总是在没有有趣分支的情况下把R1分给我。该怎么办 ? 事实上我已经添加了R1 Fork。所以我删除了R1 fork并成功在我的Github上分叉R2
然后获得当地回购:
git clone https://github.com/afaucogney/loopback-sdk-android.git
添加原点
git init
git remote add origin https://github.com/afaucogney/loopback-sdk-android.git
添加上游(Strongloop版本)
git remote add origin https://github.com/strongloop/loopback-sdk-android.git
创建本地分支
cd loopback-sdk-android
git branch firstpr
git checkout firstpr
然后做什么,我希望
git rebase起源于上游......但没有任何有趣的事情发生。
请告知我关于该过程以及git命令。
答案 0 :(得分:2)
让我们看一下非常详细的工作:
在Github上点击提供解决方案的仓库,点击" Fork"按钮:
所以你在你的Github(这里称为R3)帐户中得到一个分叉,如:
在Github中,执行拉取请求:
其中:
就像那样(自Ageneau Fork以来所有提交的Strongloop提交):
点击"创建拉取请求":
PR无法自动合并:
克隆本地计算机上的分支(注意,程序与Github提出的程序不同)。使用--branch <branch-name>
克隆特定分支
git clone https://github.com/MilleZimTech/loopback-sdk-android.git --branch fix_flatten
cd loopback-sdk-android
git branch
你应该看到&#39; fix_flatten&#39;分支
使用主仓库创建一个新分支:
git checkout -b strongloop-master fix_flatten
git pull https://github.com/strongloop/loopback-sdk-android.git master
如果发生冲突。
git status
会显示修改过的文件。
git add .
添加新文件
git commit -am"merge fix_flatten master"
提交更改
再次git pull https://github.com/strongloop/loopback-sdk-android.git master
切换fix_flatten
分支
git checkout fix_flatten
在没有FastForward合并的情况下合并两个分支
git merge --no-ff strongloop-master
您应该看到:
推回Github回购
git push origin fix_flatten
如果您使用git://而不是https://克隆回购,则需要:
git remote set-url --push origin https://github.com/MilleZimTech/loopback-sdk-android.git
,使用原始存储库的--push' because without, only the
fetch`参数将被更新。
再次git push origin fix_flatten
然后看看Github上的更改
由于这是最新的fix_flatten分支,请在我的repo上的master分支上执行pull请求。
选择fix_flatten
分支,然后我们可以看到:
点击PullRequest
master
分支fix_flatten
分支合并并确认PullRequest
然后你可以安全地PullRequest Strongloop repo
Ouuuf ......这很难找到和描述。但我认为这可以帮助那些不了解git的人。从来没有,我无法理解为什么这么复杂和漫长。
有没有人有更直接的方式来执行这样的常规任务?
答案 1 :(得分:1)
让我看看我是否理解正确。您是否尝试先拆除R2,先删除以前不再需要的叉子?
编辑: 这里的问题是你将两个repos分叉,只需要第二个repos,因为它是包含你需要的分支的那个。
此时您有两种选择:
1.-删除你在你的github帐户上做的分叉,然后再次只分叉R2。
2.-将R2添加为远程并创建git fetch R2
以获取仅在R2上的分支。