GitHub fork 合做開發 - 快速實現版

目錄

一 預備條件

回到目錄html

二 fork項目

  • 瀏覽器登錄本身的GitHub賬號,打開你要fork的項目地址,如:https://github.com/southday/devtoolstest
  • 點擊右上角 Fork,如圖:

  • fork項目後,你就能夠在本身的Repositories中看到剛纔fork的項目,點擊進入該項目

回到目錄java

 

三 將項目clone到本地

  • 打開devtoolstest項目後,點擊右邊綠色框的「Clone or download」,複製項目git地址

  • 運行 Git Bash(也可使用Git GUI),命令行進入到你要把項目clone到的位置,在該目錄下執行命令:
  • >git clone https://github.com/lcxv/devtoolstest.git

關於命令行進入/退出/切換目錄,簡要介紹以下:
  • cd 目錄名 // 表示進入指定目錄,支持相對路徑和絕對路徑
  • cd .. // (2個點)表示退回到上一級目錄
  • cd .  // (1個點)表示進入當前目錄
  • pwd // 顯示當前所在目錄
  • ls // 展現當前目錄下的內容
更多命令請看: Linux 命令大全

四 push代碼到本身的倉庫

  • 進入到devtoolstest/目錄下,建立:Test.java,編寫輸出Hello world的代碼(或者在其餘地方寫好,拷貝到該目錄下也行)
  • 執行命令:>git add Test.java
  • 執行命令:>git commit -m "添加 Test.java"
  • 執行命令:>git push origin master
  • 注:若是你以前沒在本地Git for windows上登錄過GitHub,那麼會提示你輸入用戶名、密碼進行登錄;
  • 注:關於git add、commit、push等命令的詳細解釋及相關概念,須要自行查閱資料,能夠參考:Git教程 - 廖雪峯的官方網站
  • >git lol 命令是用於查看項目提交、合併等記錄,默認沒有這個命令,是經過alias命令配置別名產生的,若是你想用該命令,須要先執行下面的命令進行別名設置:
  • >git config --global alias.lol "log --graph --decorate --pretty=oneline --all --abbrev-commit"

  • 顯示提交成功後,打開瀏覽器,看看本身的devtoolstest項目(刷新一下頁面),如個人地址是:https://github.com/lcxv/devtoolstest

  • 點擊 Test.java,就能夠看到你以前提交的內容:

回到目錄linux

五 經過pull request提交代碼

  • 第4步結束,你的內容還只是提交到了你本身的repo上,並無提交到主repo(即你Fork的repo)
  • 把頁面切換到 「Pull requests」,而後 New pull request

  • 從 哪裏(源)merge 到哪裏(目的),這個根據具體狀況選擇,本例中是要把以前在lcxv/devtoolstest/中的Test.java merge 到 southday/devtoolstest/中,以下:

  • 寫上 Title 和 Write,而後 Create pull reques

  • 而後對方(主repo)就會有關於你的 pull request,以下:

  • 對方以爲你寫的內容不錯,就會贊成你的請求,把代碼合併到主repo中

 

回到目錄git

六 經過本地配置upstream來同步更新主repo的內容

  • 主repo中添加了一個文件「southday-add.md」,如今咱們要在本地中同步該內容
  • 先獲取主repo項目的git地址,如本例中,主repo項目git地址爲:https://github.com/southday/devtoolstest.git
  • 命令行進入到本地倉庫目錄,而後執行下面的命令進行remote配置:
  • >git remote add upstream https://github.com/southday/devtoolstest.git
  • 而後執行命令:>git remote -v 檢查是否配置成功,下面出現了 upstream 以及對應的主項目git地址,說明配置成功

  • 執行命令:>git pull upstream master 來獲取主repo中添加的「southday-add.md」文件

  • 若是主repo不是添加文件,而是修改了原文件,好比修改了:"README.md" 文件
  • 那麼執行命令:>git fetch upstream 來更新修改內容

  • 執行到這裏,主repo的改動已經同步到了你的倉庫中了(本地 & 遠程),你能夠刷新瀏覽器看看 lcxv/devtoolstest/中的內容有沒有變

回到目錄github

七 經過主repo建立pull request來同步更新主repo的內容

  • lcxv 瀏覽器訪問本身的repo(https://github.com/lcxv/devtoolstest),而後點擊點擊 New pull request,以下:

  • 第5步相反,咱們如今是要將 southday/devtoolstest/中的內容 推給 lcxv/devtoolstest/,因此須要修改推送方向,如圖:

  • 源改成:southday/devtoolstest 後,頁面會自動刷新,而後提示你:There isn’t anything to compare. 這是由於你沒尚未修改目的倉庫,源->源,確定沒東西可更新的,這時,點擊稍微右上角的「compare across forks」,再將目的倉庫改成:lcxv/devtoolstes

  • 接下來的操做和第5步中的相似,建立 pull request 後,能夠 Merge pull request

  • 這樣,你遠程倉庫中的內容就獲得了同步,接下來用本身的遠程倉庫去同步本地倉庫的內容,在本地倉庫下執行命令:
  • >git fectch origin
  • >git pull origin master

回到目錄windows

八 後記

至此,GitHub fork 合做開發 快速實現版結束,須要注意: 瀏覽器

  • 本例中只講了怎麼操做,卻沒講爲何這樣作,因此須要本身去學習Git的相關知識
  • 參與者通常是沒有權限把代碼直接 push 到 主repo的,你們都是走 pull request流程,這樣多了一個審覈步驟也比較穩妥

參考內容:ssh

轉載請說明出處,have a good time! :Dide

回到目錄學習

相關文章
相關標籤/搜索