背景是這樣的我從別人的倉庫fork了一份到自己的倉庫然後在自己的倉庫里新建分支並且在上面進行工作現在別人的倉庫主幹更新了我需要更新到本地並且提交到自己的倉庫看了網路上的方法說用git remote add name location 然後git pull name master 然後在push 到自己的倉庫裡但是我push的時候就這樣了小白求問
如果你想更新你的fork的master branch,你應該先git checkout master, 然后再pull。这样pull之后就可以push 到 origin master了。
git checkout master
origin master
如果你只是想更新一下你目前的wuninghan.banbranch:
wuninghan.ban
如果你目前的修改還沒有commit,那就先git stash。如果已经commit 过,就接着进行下一步。这时候可以用git status來查看Staging Area是否有程式碼。
git stash
git status
這一步做法可以由很多種,我習慣是先git fetch --all,然后git rebase ruoxue/master。当然,你也可以直接git pull --rebase,一個道理。
git fetch --all
git rebase ruoxue/master
git pull --rebase
如果你在第一步stash了,那麼這時候就git stash apply stash@{0} (理論上是0,如果你做了上面一次stash)
git stash apply stash@{0}
如果第二步驟有conflicts,處理就好了。
就拿vuejs-templates/webpack來做例子,因為自己就在fork這個vue專案範本做改動
再來我覺得這個專案有其特殊性,它的主分支並不是master,而是dist,而加载模板的工具vue-cli默认会下载dist分支下的文件作為專案範本.
master
dist
這就有以下情況
為了方便,還是直接在dist上進行改動,這樣使用vue-cli可以敲少幾個字
而在dist上进行改动,实际是出于自己的需求,并不希望提交pr给original repo,同时又希望能有一个分支用于保持跟original repo一致,且同时用于提交pr上進行改動,實際是出於自己的需求,並不希望提交pr給original repo,同時又希望能有一個分支用於保持跟original repo一致,且同時用於提交pr
pr
original repo
我會在fork之後在dist分支的基础上新建一个track-1分支的基礎上新建一個track-1分支具體步驟如下
track-1
# 创建track-1分支 git checkout -b track-1 dist # 添加origin repo remote git remote add original https://github.com/vuejs-templates/webpack.git # ....这里是开发时间... # 1.对dist做自己的改动,同时origin repo有更新,希望保持更新 # 把original所有数据拉下来 git fetch original # 切回track-1分支 git checkout track-1 # 把original主分支rebase到track-1分支 git rebase original/dist # 切换回fork的dist分支 git checkout dist # 合并track-1分支的更新 # 这里没用rebase而是用merge,因为感觉这个用rebase比较繁琐,实际上应该用哪个我也不清楚 git merge track-1 # ...解决冲突等等... # git push # ....这里是开发时间... # 2.对track-1做改动,希望提交pr给original repo # 把改动提交,提交前需要确认分支为最新状态 # git fetch original # git rebase original/dist git push # ...接下来就是上github进行操作... # 假如已合并pr的话,在切回dist分支 git checkout dist git merge track-1
好像還是略顯繁瑣,不知道這樣的流程是否合理
如果你想更新你的fork的master branch,你應該先
git checkout master
, 然后再pull。这样pull之后就可以push 到origin master
了。如果你只是想更新一下你目前的
wuninghan.ban
branch:如果你目前的修改還沒有commit,那就先
git stash
。如果已经commit 过,就接着进行下一步。这时候可以用git status
來查看Staging Area是否有程式碼。這一步做法可以由很多種,我習慣是先
git fetch --all
,然后git rebase ruoxue/master
。当然,你也可以直接git pull --rebase
,一個道理。如果你在第一步stash了,那麼這時候就
git stash apply stash@{0}
(理論上是0,如果你做了上面一次stash)如果第二步驟有conflicts,處理就好了。
就拿vuejs-templates/webpack來做例子,因為自己就在fork這個vue專案範本做改動
再來我覺得這個專案有其特殊性,它的主分支並不是
master
,而是dist
,而加载模板的工具vue-cli默认会下载dist
分支下的文件作為專案範本.這就有以下情況
為了方便,還是直接在
dist
上進行改動,這樣使用vue-cli可以敲少幾個字而在
dist
上进行改动,实际是出于自己的需求,并不希望提交pr
给original repo
,同时又希望能有一个分支用于保持跟original repo
一致,且同时用于提交pr
上進行改動,實際是出於自己的需求,並不希望提交pr
給original repo
,同時又希望能有一個分支用於保持跟original repo
一致,且同時用於提交pr
我會在fork之後在
dist
分支的基础上新建一个track-1
分支的基礎上新建一個track-1
分支具體步驟如下
好像還是略顯繁瑣,不知道這樣的流程是否合理