1. 程式人生 > >GitHub:怎樣在參與開發時同步你的遠端程式碼倉庫

GitHub:怎樣在參與開發時同步你的遠端程式碼倉庫

本文中的最初作為例子的開原始碼庫smartdevicelink是一個車聯網真實的開原始碼庫,並且已經在量產車中有使用,歡迎有能力且有興趣的開發者參與,也可以聯絡我。不過發現之前發表文章後有哥們在上面誤操作,導致別的開發人員的正常pull request出現問題! 基於擔心可能別人也這樣操作,所以改為GitHub自身提供的一個例子。

引言:

隨著越來越多的網際網路企業宣佈自己在GitHub上開源專案,越來越多的開發人員可以參與進來開發,貢獻自己的一份力量。但是這樣由於大家互不謀面可能溝通交流,寫程式碼的方式,思維都會不一樣,所以需要一系列約束來遵守,最主要的就是貢獻程式碼時會有很多人同時開發的情況,這樣需要經常同步上游倉庫到自己本地倉庫和自己的遠端伺服器中。

準備:

1. 建立自己的GitHub賬號

https:github.com
https://github.com

2. Fork一個你準備參與開發的程式碼庫

GitHub上專門有一個供大家練習的Repository
這裡寫圖片描述

這樣在自己的GitHub倉庫中就會有該程式碼庫:
這裡寫圖片描述

3. Clone 到你本地

$git clone https://github.com/<user>/Spoon_Knife.git

4.新增遠端倉庫

$cd Spoon_Knife
$git remote -v
#git remote 可以檢視我們配置了那些遠端倉庫伺服器,並列出簡寫
#-v 可以幫助檢視遠端倉庫伺服器相對應的URL
origin https://github.com/<user>/Spoon_Knife.git(fetch) origin https://github.com/<user>/Spoon_Knife.git(push) $git remote add upstream https://octocate/Spoon_Knife #git remote add <shortname> <url> #可以新增一個新的遠端Git倉庫,同時制定自定義的簡寫名稱 $git remote -v origin https://github.com/<user>/Spoon_Knife.git
(fetch) origin https://github.com/<user>/Spoon_Knife.git(push) upstream https://github.com/smartdevicelink/Spoon_Knife.git(fetch) upstream https://github.com/smartdevicelink/Spoon_Knife.git(push)

參與開發

一般的開原始碼庫,都有master分支和develop分支,master分支比較穩定,用來發布。develop分支一般用來開發。
強烈建議參與開發前每個開發者都仔細看一下程式碼庫中的CONTRIBUTING.md檔案,這樣會省很多沒必要的溝通,也會對該開源專案的要求做一個簡單的瞭解。
如果想新增一個新的需求,則可以基於原來程式碼的develop分支新建一個feature分支
如果發現了某個問題,並想解決這個問題,則應先提出issue,然後基於develop分支新建一個hotfix分支

$git checkout develop
$git checkout -b newFeature develop
$git checkout -b hotfix_bug# develop

然後在新建的分支上修改程式碼

同步

由於開源的專案,會有很多人同時參與開發,所以需要經常同步其他人的開發。從遠端上游(upstream)倉庫同步程式碼到本地和自己fork來的GitHub倉庫中。需要三步:

1. Fetch 上游倉庫的新的提交

$git fetch upstream

會看到比較詳細的輸出資訊,從遠端倉庫拉取其新的分支和各自的提交,儲存到本地倉庫。
可以通過以下命令檢視本地的所有分支:

$git branch -va
* develop                                                  71493a0 Merge pull request #409 from LuxoftSDL/fix/Use_AppName_if_VR_or_TTS_synonyms_Empty_in_QueryApps
  master                                                   e76f8e7 Merge pull request #404 from smartdevicelink/hotfix/fix_pt_sendMessagetoSDK
  release/4.0.0                                            4d6cf97 Merge pull request #220 from LuxoftSDL/hotfix/SystemRequest_crash_sdl4.0
  remotes/origin/HEAD                                      -> origin/master
  remotes/origin/UPS-release                               4d00dc0 Merge branch 'hotfix/error-in-PI' into UPS-release
  remotes/origin/develop                                   71493a0 Merge pull request #409 from LuxoftSDL/fix/Use_AppName_if_VR_or_TTS_synonyms_Empty_in_QueryApps
  remotes/origin/feature/experimental/remote_control       61393c8 HMI Get URls Update
  remotes/origin/hotfix/change-device-info-to-string       d7f3cc3 Changed device_info id to string and mac_address
  remotes/origin/hotfix/cla                                a80368a Added instructions to sign CLA
  remotes/origin/hotfix/get_urls                           6e304f2 Get Urls Fix
  remotes/origin/hotfix/hybrid_service_to_mobile           9429759 Send hybrid service 0x0F if outgoing message has binary data
  remotes/origin/hotfix/local_pt_update                    44da661 Policy Table Update HMI Button
  remotes/origin/master                                    e76f8e7 Merge pull request #404 from smartdevicelink/hotfix/fix_pt_sendMessagetoSDK
  remotes/origin/release/4.0.0                             4d6cf97 Merge pull request #220 from LuxoftSDL/hotfix/SystemRequest_crash_sdl4.0
  remotes/upstream/UPS-release                             4d00dc0 Merge branch 'hotfix/error-in-PI' into UPS-release
  remotes/upstream/develop                                 71493a0 Merge pull request #409 from LuxoftSDL/fix/Use_AppName_if_VR_or_TTS_synonyms_Empty_in_QueryApps
  remotes/upstream/feature/experimental/remote_control     61393c8 HMI Get URls Update
  remotes/upstream/hotfix/bt_device_scanner_leak           36ba4ad Fixes #314     

2. Merge從上游倉庫拉取的變更

比如我們要合併master分支

$git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$git merge upstream/master
Updating e76f8e7..6808a52
Fast-forward
 .travis.yml                                                                          |  15 ++
 README.md                                                                            |   4 +-
 src/components/application_manager/CMakeLists.txt                                    |   2 +
 .../application_manager/include/application_manager/application_manager_impl.h       |   5 +
 .../include/application_manager/commands/hmi/dial_number_request.h                   |  75 +++++++
 .../include/application_manager/commands/hmi/dial_number_response.h                  |  76 +++++++
 .../include/application_manager/commands/mobile/dial_number_request.h                |  27 ++-
 .../include/application_manager/commands/mobile/dial_number_response.h               |  72 ++++++
 src/components/application_manager/include/application_manager/smart_object_keys.h   |   1 +
 src/components/application_manager/src/application_manager_impl.cc                   |  10 +-
 .../application_manager/src/commands/hmi/button_get_capabilities_response.cc         |   8 +
 src/components/application_manager/src/commands/hmi/dial_number_request.cc           |  57 +++++
 src/components/application_manager/src/commands/hmi/dial_number_response.cc          |  57 +++++
 src/components/application_manager/src/commands/mobile/dial_number_request.cc        |  96 +++++++-
 src/components/application_manager/src/commands/mobile/dial_number_response.cc       |  53 +++++
 .../application_manager/src/commands/mobile/register_app_interface_request.cc        |  21 +-
 src/components/application_manager/src/commands/mobile/slider_request.cc             |   3 +-
 src/components/application_manager/src/commands/mobile/system_request.cc             | 489 +++++++++++++++++++++++++++++++++++------
 src/components/application_manager/src/hmi_command_factory.cc                        |  10 +
 src/components/application_manager/src/message_helper.cc                             |   1 -
 src/components/application_manager/src/mobile_command_factory.cc                     |  11 +
 .../connection_handler/include/connection_handler/connection_handler_impl.h          |   5 +-
 src/components/connection_handler/src/connection_handler_impl.cc                     |  21 +-
 src/components/interfaces/HMI_API.xml                                                |  14 ++
 src/components/interfaces/MOBILE_API.xml                                             | 144 ++++++------
 src/components/policy/src/policy/src/cache_manager.cc                                |  10 +
 26 files changed, 1108 insertions(+), 179 deletions(-)
 create mode 100644 .travis.yml
 create mode 100644 src/components/application_manager/include/application_manager/commands/hmi/dial_number_request.h
 create mode 100644 src/components/application_manager/include/application_manager/commands/hmi/dial_number_response.h
 create mode 100644 src/components/application_manager/include/application_manager/commands/mobile/dial_number_response.h
 create mode 100644 src/components/application_manager/src/commands/hmi/dial_number_request.cc
 create mode 100644 src/components/application_manager/src/commands/hmi/dial_number_response.cc
 create mode 100644 src/components/application_manager/src/commands/mobile/dial_number_response.c

如果本地沒有獨特的提交,git會自動fast-forward.

3. Push 本地更新到自己的遠端伺服器上

$git push origin master
Username for 'https://github.com': 
Password for 'https://[email protected]': 
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/user/Spoon_Knife.git
   98b34b9..6808a52  master -> master

相關推薦

GitHub怎樣在參與開發同步遠端程式碼倉庫

本文中的最初作為例子的開原始碼庫smartdevicelink是一個車聯網真實的開原始碼庫,並且已經在量產車中有使用,歡迎有能力且有興趣的開發者參與,也可以聯絡我。不過發現之前發表文章後有哥們在上面誤操作,導致別的開發人員的正常pull request出現

轉載Eureka 開發快速剔除失效服務

inter 時間 機制 false ref seconds spa eal als 原文地址:https://www.cnblogs.com/flying607/p/8494568.html服務端配置: # 關閉保護機制 eureka.server.enable-self

【程式設計初學者】建立自己的開源專案3-將遠端程式碼倉庫下載,並建立原生代碼倉庫(myeclipse + github

  上一篇:建立自己的開源專案-建立遠端程式碼倉庫         上一篇講了如何建立github賬號並建立遠端程式碼倉庫,這一篇講解如何將原生代碼倉庫下載到本地,並建立與之關聯的原生代碼倉庫。大家注意了,這一句話我說了兩個概念:遠端程式碼倉庫(remote repos

碼雲~本地檔案提交到遠端程式碼倉庫

1 git 配置 git config --global user.name “使用者名稱” git config --global user.email “郵箱” 2 生成公鑰私鑰 #ssh-keygen -t rsa -C "[emai

如何利用花生殼和VisualSVN Server建立遠端程式碼倉庫

                      如何利用花生殼和VisualSVN建立遠端程式碼倉庫   最近由於專案需要,要遠端訪問實驗室的svn伺服器,但是實驗室沒有固定域名和ip,因此就打算用花生殼申請一個免費的域名構建一個伺服器,再把VisualSVN部署在伺服器上,就可以在外網訪問了(如果你有固定的域

git使用命令列拉取遠端程式碼倉庫中的分支至本地

1、本地建立資料夾用於存放拉取的程式碼 2、執行git init初始化資料夾 3、與遠端程式碼倉庫建立連線   git remote add origin [email protected]/nothing.git(遠端程式碼倉庫連結地址) 4、切換分支拉取程式碼(wyl為遠端程式碼倉庫分支

Android Studio 使用 Git 首次提交程式碼到本地以及提交遠端程式碼倉庫

最近剛好在瞭解 Git 版本控制,(據說是世界上最好用的分散式版本控制工具 \逃),正常思維學習一個東西當然是各種 “baidu”、“google”,還真讓我找到了一個我個人認為很不錯的教程,省去了各種碎片化的搜尋學習了,只要看這篇教程就可以了。下面給出地址: Ok,假

Git 遠端倉庫(Github) Git 並不像 SVN 那樣有個中心伺服器。 目前我們使用到的 Git 命令都是在本地執行,如果想通過 Git 分享程式碼或者與其他開發人員合作。 就需要

Git 遠端倉庫(Github) Git 並不像 SVN 那樣有個中心伺服器。 目前我們使用到的 Git 命令都是在本地執行,如果你想通過 Git 分享你的程式碼或者與其他開發人員合作。你就需要將資料放到一臺其他開發人員能夠連線的伺服器上。 本例使用了 Github 作為遠端倉庫,你可以先閱讀我們的 G

上傳專案到 GitHub如何用同一個 github 帳號在兩臺電腦上同步開發?/ 如何協同開發

飽暖思淫慾,寫了專案就想試試上傳到github.com,之前用Git和SourceTree跟同事除錯過協同開發,又是突發奇想:如何用同一個github帳號在兩臺電腦上同步開發?說幹就幹! 找了很多教程,試了好幾次,總是上傳不了新專案到github,在參考幾個文

如何解決GitHub衝突GitHubDesktop同步的分支

如何解決GitHub衝突<一>:GitHubDesktop同步你的分支 原文地址:https://help.github.com/desktop/guides/contributing/syncing-your-branch/ 當一個程式碼提交被推送到你的git

張書樂在發爾康和葛優躺表情包可能在侵權,他卻在賺錢

表情包使用次數TOP10的表情符號裏,“哭笑不得”的表情使用次數最多,總計高達7518440701次;女性青年每人平均每天使用表情2.84次,而男性青年每人平均每天使用表情次數為0.74次,女性是男性的3.83倍。與男性相比,女性的表情使用普遍偏感性。文/張書樂(人民網、人民郵電報專欄作者)新著有《微博運營完

Python開發環境(2)啟動Eclipse檢測到PYTHONPATH發生改變

工程 新的 “.” ase 窗口 什麽 程序 apply pri OS:Windows 10家庭中文版,Eclipse:Oxygen.1a Release (4.7.1a),PyDev:6.3.2 4月25日,在Eclipse上安裝了PyDev(前面博文有記錄),並開發

Springboot開發工程啟動慢

人的 inf spring display round tor eclips -i .cn 個人的解決辦法是刪除workspace中的histor然後重啟Eclipse,發現一切正常。Springboot:開發時工程啟動慢

將原生代碼同步遠端github

1.在本地資料夾下建立.gitignore檔案,將github下的github/gitignore/Node.gitignore檔案複製到.gitignore中; 2.執行命令git add . 3.git commit -m "init" 4.建立遠端倉庫 5.執行git remote add or

8年開發java程式設計師教JAVA開發應該學習什麼?讓不迷茫

java入門學習有哪些內容?很多想學習java的學生都不知道怎麼學java,特別是沒有基礎的學生,今天8年開發的老程式設計師,給大家整理了一下,java入門學習有哪些內容: 第一階段 計算機基本原理,Java語言發展簡史,Java開發環境的搭建,體驗Java程式的開發,Java語法格式

ASP.NET Core開發部署到IIS上出現HTTP Error 502.5 - Process Failure的解決方案

HTTP Error 502.5 - Process Failure Common causes of this issue: The application process failed to start The application

[譯] 設計師的決策樹當遇到豬隊友需要一個系統來控制每個人

原文地址:A Decision Tree for Designers 原文作者:Cap Watkins 譯文出自:掘金翻譯計劃 本文永久連結:github.com/xitu/gold-m… 譯者:zhmhhu 校對者:calpa, Wangalan30

這是一段關乎程式碼的未來 我們正在參與

讓2980個孩子回家團圓 “十五年了,只有在路上,我才感覺我是一個父親。” 2015年初電影《失孤》熱映,一輛摩托車、一張旗子、一個揹包,一個父親15年走遍大江南北尋找被拐賣兒子的故事,戳動了很多人的心絃。 秉承著技術解決社會問題的初心,2015年11月,阿里巴巴打拐

百度程式設計師跳槽外企生活平衡薪翻倍!網友買房要薪?

現在國內網際網路的IT精英大多都集合在BAT等一線大廠,他們的薪資和技術是很多人所羨慕的。然而再厲害的程式設計師,中年危機還是存在,有些程式設計師大牛聽說外企的中年危機沒有那麼嚴重,於是想憑藉自己的技術和經驗跳槽外企! 這不,有一位百度程式設計師近日就跳槽去了外企,他到

面試我不在乎候選人的經驗來自培訓班,但會關注商業專案經驗和幹活能力再說面試鑑別商業專案的方式 最近面試java後端開發的感受如果就以平時專案經驗來面試,通過估計很難——再論面試前的準備

    我在部落格園裡乃至其它地方看到有不少對培訓班出身的程式設計師的評價,其實至少在我面試時,培訓班出來的程式設計師沒有原罪。     我也面試不少程式設計師,從高階開發到初級開發都有,有985和211名校出身的,也有大專學習通過培訓班積累IT經驗的。我見過有候選人