liujuanjuan1984 / ucanuupnobb

you can you up, no bb. 自学 python 编程过程中的挑战、笔记及我的践友们。
17 stars 9 forks source link

github协作的两类方式 #100

Open liujuanjuan1984 opened 4 years ago

liujuanjuan1984 commented 4 years ago

我一般的操作是: 1、在线fork源仓库,得到自己的在线仓库 2、 本地clone自己的在线仓库 3、本地编辑后推送到自己的在线仓库 4、从自己的在线仓库,向源仓库发起PR

我发现还有一种做法是:(前提是,有源仓库的编辑权限) 1、本地clone源仓库 2、本地编辑后向源仓库提交分支 3、源仓库决定合并主干/分支

liujuanjuan1984 commented 4 years ago

image

第一个疑问是,上面两种操作,哪种更合适?

第二个疑问是,我想保留我的一般操作流程,于是我: 1、在线fork c 仓库 得到 一个新的在线仓库 E 2、但不想 重复 clone 仓库E到本地

有没有办法直接把本地仓库D,改成在线仓库E的clone?

re 疑问1 by leask:

如果你有原仓库的权限就不应该fork git设计的原则是分享和协作而不是占有它。😂 如果你拿不准,你有原仓库的权限,你就clone之后开分支写,写完让主人review之后合并到master

liujuanjuan1984 commented 4 years ago

re 疑问2: 你可以添加过一个的remote,或者直接从某个地址pull 可以添加第二个新的origin应该 我之前fork别的库,然后自己改了master后又想merge别人最新版本的代码,就把原仓库的origin添加进来手动merge 只是 git remote 相关的 origin /upstream 设置

liujuanjuan1984 commented 4 years ago

实操:

1、移除在线仓库:多余的fork(仅限今天新增的5个E类仓库) 2、检查本地仓库的remote 把origin 和upstream重新设置为 项目仓库地址

git remote -v git remote rm origin git remote add origin url git remote rm upstream git remote add upstream url

3、git pull url 从项目仓库拉取

4、本地仓库创建分支,并修改,然后提交到 项目仓库

git checkout -b branch-name 修改 git add somefile git commit -m "somenote" git push upstream branch-name

然后去在线项目仓库,检查分支与主干,并处理合并

本地仓库要离开该分支,则回到主干 git checkout master git merge branch-name git branch -d branch-name

或者从upstream更新 git pull upstream git merge upstream/master

总之,这种协作,所有开发自己要建分支,操作完毕后把分支提交推送。是不能直接在master修改的(我之前太习惯于master操作。)

liujuanjuan1984 commented 4 years ago

下面这个文档非常棒。

分支的新建与合并 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤:

开发某个网站。

为实现某个新的需求,创建一个分支。

在这个分支上开展工作。

正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理:

切换到你的线上分支(production branch)。

为这个紧急任务新建一个分支,并在其中修复它。

在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。

切换回你最初工作的分支上,继续工作。

https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6