我有一个本地存储库,它是Github上存储库的完整副本.我做了一个改变,我想为原始项目做出贡献.
如果不在Github上重新加载我的项目,我怎么能这样做?我不认为开放问题是正确的方法..
我在中看到如何为github贡献补丁?我应该分叉项目,但由于我的本地存储库"链接"到原始的Github存储库,我不想搞砸它.
所以,如果真的不鼓励以任何方式共享补丁而不是fork,我怎样才能简单地分割原始项目,合并我的更改,然后与原始存储库共享它们?
如果我在"提交"更改后删除了fork但尚未接受,那么我的提交是否会消失?
fge*_*fge 20
你应该分叉项目,是的.但是,这并不意味着您需要在本地再次克隆整个内容.
解释:查看git存储库的一种简单方法是提交图(它是有向的和非循环的,但这与此讨论无关); 并且该图的所有节点(即提交)在世界上的所有git存储库中都有唯一的标识符.对于分支,它们只是对提交的符号引用(在git用语中,分支 - 或标记 - 称为refspec).
此外,您永远不会以任何方式链接到远程存储库.你唯一真正"链接"的是提交图.一个远程存储库碰巧有一组refspecs(分支,标签)......指向一个提交图,他们也有 - 没有人喜欢悬空引用.克隆存储库时,您将获得提交图(和关联的树)以及refspecs集(即分支,标记).refspec指向一棵树.这就是它.
这意味着以下内容:
好的,现在执行以下操作:
origin默认情况下.现在怎么办?将fork作为远程添加就像"简单"一样:
git remote add myfork git@github.com:youruser/theproject
Run Code Online (Sandbox Code Playgroud)
将你的refspec(分支)推送到它:
git push myfork mybranch
Run Code Online (Sandbox Code Playgroud)
然后向原作者提交拉取请求.
应该注意的是,从理论上讲,你可以将一个遥控器添加到一个与"原始"repo完全没有关系的git存储库中:这只是两个提交图将完全相互脱节 - 但是,用例很少见
是的,您应该分叉项目,但不需要克隆/拉/合并任何东西.单击fork按钮后,执行
git remote add yourfork git@github.com:<yourname>/<project>.git
Run Code Online (Sandbox Code Playgroud)
用你的分支推动你的分支
git push yourfork branchname
Run Code Online (Sandbox Code Playgroud)
然后发出拉取请求.
如果在上游合并补丁后删除了fork ,则应该没有问题.我不确定在发生这种情况之前你移开叉子会发生什么.
没有必要合并任何东西.
| 归档时间: |
|
| 查看次数: |
8681 次 |
| 最近记录: |