背景:
做爲分佈式版本控制系統的表明git和github已經成爲大多數開發人員首選版本控制工具。因爲其不一樣與SVN的集中式版本管理,所以在協同工做時的方式略有不一樣,下面讓咱們來對比分析一下(這裏以本人的DICOM3.0標準中文版開源書籍爲例):git
合併他人的Github倉庫(Merge Other’s Repo on Github):
1. 查看當前狀態
F:\GitTest\zssuretest\DICOM-Chinese>git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working directory clean F:\GitTest\zssuretest\DICOM-Chinese>git remote -v origin https://github.com/zssure-test/DICOM-Chinese.git (fetch) origin https://github.com/zssure-test/DICOM-Chinese.git (push) other git@github-test:zssure-test/DICOM-Chinese (fetch) other git@github-test:zssure-test/DICOM-Chinese (push) zssure-thu-origin https://github.com/zssure-thu/DICOM-Chinese.git (fetch) zssure-thu-origin https://github.com/zssure-thu/DICOM-Chinese.git (push) F:\GitTest\zssuretest\DICOM-Chinese>git pull Already up-to-date.
2. 添加他人倉庫
F:\GitTest\zssuretest\DICOM-Chinese>git remote -v origin https://github.com/zssure-test/DICOM-Chinese.git (fetch) origin https://github.com/zssure-test/DICOM-Chinese.git (push) other git@github-test:zssure-test/DICOM-Chinese (fetch) other git@github-test:zssure-test/DICOM-Chinese (push) zssure-thu-origin https://github.com/zssure-thu/DICOM-Chinese.git (fetch) zssure-thu-origin https://github.com/zssure-thu/DICOM-Chinese.git (push) F:\GitTest\zssuretest\DICOM-Chinese>git remote add kuangbi-mnhwa https://github.com/mnhwa/DICOM-Chinese.git F:\GitTest\zssuretest\DICOM-Chinese>git remote -v kuangbi-mnhwa https://github.com/mnhwa/DICOM-Chinese.git (fetch) kuangbi-mnhwa https://github.com/mnhwa/DICOM-Chinese.git (push) origin https://github.com/zssure-test/DICOM-Chinese.git (fetch) origin https://github.com/zssure-test/DICOM-Chinese.git (push) other git@github-test:zssure-test/DICOM-Chinese (fetch) other git@github-test:zssure-test/DICOM-Chinese (push) zssure-thu-origin https://github.com/zssure-thu/DICOM-Chinese.git (fetch) zssure-thu-origin https://github.com/zssure-thu/DICOM-Chinese.git (push)
3. 下載他人倉庫
F:\GitTest\zssuretest\DICOM-Chinese>git branch -v * master bb0d864 Merge branch 'master' of https://github.com/zssure-test/DICOM-Chinese F:\GitTest\zssuretest\DICOM-Chinese>git fetch kuangbi-mnhwa remote: Counting objects: 14, done. remote: Total 14 (delta 0), reused 0 (delta 0), pack-reused 14 Unpacking objects: 100% (14/14), done. From https://github.com/mnhwa/DICOM-Chinese * [new branch] master -> kuangbi-mnhwa/master * [new branch] pr/1 -> kuangbi-mnhwa/pr/1
4. 導出他人倉庫到新的分支
F:\GitTest\zssuretest\DICOM-Chinese>git checkout -b part5-kuangbi kuangbi-mnhwa/master Branch part5-kuangbi set up to track remote branch master from kuangbi-mnhwa. Switched to a new branch 'part5-kuangbi' F:\GitTest\zssuretest\DICOM-Chinese>git branch -v master bb0d864 Merge branch 'master' of https://github.com/zssure-test/DICOM-Chinese * part5-kuangbi 7c23aba 6.1.2.5----6.1.3
5. 合併他人倉庫
F:\GitTest\zssuretest\DICOM-Chinese>git checkout master Switched to branch 'master' Your branch is up-to-date with 'origin/master'. F:\GitTest\zssuretest\DICOM-Chinese>git branch -v * master bb0d864 Merge branch 'master' of https://github.com/zssure-test/DICOM-Chinese part5-kuangbi 7c23aba 6.1.2.5----6.1.3 F:\GitTest\zssuretest\DICOM-Chinese>git merge part5-kuangbi Merge made by the 'recursive' strategy. Figure/Part 5/PS3.5_Table 6.1_1.jpg | Bin 0 -> 131815 bytes ...t 5\357\274\232Data Structures and Encoding.md" | 353 +++++++++++++++++++++ 2 files changed, 353 insertions(+) create mode 100644 Figure/Part 5/PS3.5_Table 6.1_1.jpg create mode 100644 "Part 5\357\274\232Data Structures and Encoding.md"
6. 提交修改到github中心倉庫
F:\GitTest\zssuretest\DICOM-Chinese>git status On branch master Your branch is ahead of 'origin/master' by 5 commits. (use "git push" to publish your local commits) nothing to commit, working directory clean F:\GitTest\zssuretest\DICOM-Chinese>git push origin Username for 'https://github.com': zssure-test Password for 'https://zssure-test@github.com': Counting objects: 19, done. Delta compression using up to 8 threads. Compressing objects: 100% (15/15), done. Writing objects: 100% (16/16), 123.50 KiB | 0 bytes/s, done. Total 16 (delta 6), reused 0 (delta 0) To https://github.com/zssure-test/DICOM-Chinese.git bb0d864..63368d4 master -> master F:\GitTest\zssuretest\DICOM-Chinese>
請求他人合併本身的Github倉庫(Pull Requests on Github):
以前在系列博文DICOM:DICOM中文版開源書籍協同編輯之「Github Pull Requests」已經介紹過使用Github提供的Pull Requests來實現多人協同編輯的具體步驟,這裏就不詳細介紹了,大體說一下操做流程,具體示例請閱讀以前的博文。github
1. Fork他人倉庫
2. 修改本身的倉庫
git clone git@github.com:zssure-test/DICOM-Chinese.git git config user.name "zssure-test" git config user.email "zssure@163.com" git config --local #此處任意修改README.md的內容 git status #查看修改狀態 git add . #添加全部修改 git commit -m "zssure git bash test" #提交修改到本地倉庫 git push origin master #push修改到github
3. 使用Github中的Pull Requests發出合併請求
4. 等待別人審覈後合併完成
在Github的主頁上可以看到各成員合併的流程和結果:
bash
備註:
上面提到的合併他人倉庫,用於本身主動將他人的修改合併到本身的倉庫中;請求他人合併本身的修改,用於將本身的修改同步給組內其餘人員,主要是用於將本身的修改提價到一個公共的倉庫中,做爲最終的發版庫。
經過上述兩種基本能夠完成多人協做工做,固然在具體應用過程當中還會遇到回滾、衝突、撤銷等問題,後續會繼續給出實際應用過程當中的示例。
做者:zssure@163.com
時間:2015-10-10
分佈式