git-github fork 後同步源倉庫的新提交/向開源框架提交pr

github fork 後同步源倉庫的新提交

官網參考: [Syncing a fork]: https://help.github.com/en/articles/syncing-a-fork
github fork 後同步源倉庫的新提交
參考URL: https://www.cnblogs.com/Mr-O-O/p/11668464.html
git: 保持fork的項目與上游同步
參考URL: https://cloud.tencent.com/developer/article/1348597

注:先把fork的倉庫clone到你本地。下面的都是基於本地倉庫操作的!

  1. 查看你的本地倉庫的遠程倉庫配置
$ git remote -v
> origin  https://github.com/YOUR_USERNAME/你的fork倉庫.git (fetch)
> origin  https://github.com/YOUR_USERNAME/你的fork倉庫.git (push)
  1. 配置一個遠程倉庫指向源倉庫。 (添加上游倉庫)
    $ git remote add upstream https://github.com/ORIGINAL_OWNER/源倉庫.git

demo: loutus項目

git remote add upstream https://github.com/filecoin-project/lotus.git
git remote -v
  1. 再次查看你本地倉庫的遠程倉庫配置
$ git remote -v
> origin    https://github.com/YOUR_USERNAME/你的fork倉庫.git (fetch)
> origin    https://github.com/YOUR_USERNAME/你的fork倉庫.git (push)
> upstream  https://github.com/ORIGINAL_OWNER/源倉庫.git (fetch)
> upstream  https://github.com/ORIGINAL_OWNER/源倉庫.git (push)
  1. 把遠程的源倉庫fetch到本地,此時遠程源倉庫的新提交併不在你的master分支!而是在upstream/master 分支.
$ git fetch upstream
> remote: Counting objects: 75, done.
> remote: Compressing objects: 100% (53/53), done.
> remote: Total 62 (delta 27), reused 44 (delta 9)
> Unpacking objects: 100% (62/62), done.
> From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY>  * [new branch]      master     -> upstream/master

默認情況下,git fetch取回所有分支(branch)的更新
git fetch upstream: #抓取在著名開源項目的GitHub倉庫上新的提交數據到本地倉庫

  1. 切換到master分支
    git branch 查看分支
$ git checkout master
> Switched to branch 'master'
  1. 把fetch下來的 upstream/master 分支 合併到master分支!這裏假設沒有衝突,且你的本地沒有新的提交! ( 將upstream/master merge到 本地master分支)
$ git merge upstream/master
> Updating a422352..5fdff0f
> Fast-forward
>  README                    |    9 -------
>  README.md                 |    7 ++++++
>  2 files changed, 7 insertions(+), 9 deletions(-)
>  delete mode 100644 README
>  create mode 100644 README.md
  1. 然後在master分支上 直接git push就好了。此時你fork的倉庫就與源倉庫一致了。
git push origin master

總結:

git fetch upstream
git checkout master
git merge upstream/master
git push origin master

github中origin和upstream的區別

官網描述:
When a repo is cloned, it has a default remote called origin that points to your fork on GitHub, not the original repo it was forked from. To keep track of the original repo, you need to add another remote named upstream.
git remote add upstream git://github.com/user/repo_name.git
在這裏插入圖片描述當執行git branch -v命令時,某些分支的前綴爲origin ( remotes/origin/… ),而其他分支的前綴爲upstream ( remotes/upstream/… )。

origin是你所克隆的原始倉庫的默認名字,upstream是fork的原項目的遠程倉庫的默認名字。

可以用git fetch [remote-name]命令從遠程倉庫抓取數據到本地:

git fetch origin #抓取在你的GitHub倉庫上新的提交數據到本地倉庫
$ git fetch upstream #抓取在著名開源項目的GitHub倉庫上新的提交數據到本地倉庫

總結:

  1. 如果是 upstream repo,你只可以拉取最新代碼(即 git fetch ),從而保證你本地的倉庫與源倉庫同步
  2. 如果是 origin repo,就是你自己的repo(自己創建的,或者 fork 的項目)你可以做 任何推拉操作(pull and push)
  3. 你可以通過 pull request 向 upstream repo 貢獻代碼

git 分支查看與切換


# 1.查看所有分支
> git branch -a
  
# 2.查看當前使用分支(結果列表中前面標*號的表示當前使用分支)
> git branch

# 3.切換分支
> git checkout 分支名

向開源框架提交pr

github----向開源框架提交pr的過程
原文鏈接:https://blog.csdn.net/vim_wj/article/details/78300239

  1. fork別人代碼
  2. git clone到本地
  3. 創建分支
    git checkout -b shepf-dev

修改源碼,git push
4. 提交pr
需要注意的是compare處選擇剛纔提交上來的分支

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章