Git 聯機版,git聯機版
簡介:
之前研究了 Git 單機版 ( 單兵作戰 ),今天來研究一下 Git 聯機版 ( 團隊協作 )!
GitHub 是一個開源的代碼託管平台,可以分享自己的代碼到該平台上,讓大家參與開發或供大家使用,等。( 也可以搭建自己的 Git 倉庫,相關產品:gitlab 、coding.net )
一、GitHub ( 使用開源的代碼託管倉庫 )
1、建立 GitHub 帳號:https://github.com/
## 建立好使用者後,點擊右上方 -> Settings -> Emails 這裡需要驗證郵件地址 ( 建議不要寫網易旗下的郵箱地址,如:163 / 126 否則你會崩潰的,收不到 github 發送的驗證郵件 )
2、開啟 Sehll / git Shell 產生公開金鑰、私密金鑰 ( Linux / Windows )
shell > ssh-keygen -t rsa -C "wangxiaoqiangs@foxmail.com" # 全部預設斷行符號
3、登陸 GitHub 點擊 Settings -> SSH keys -> Add an SSH key ( 有了 key 就能證明你就是你了~ ,可以添加多個 key )
輸入 Title ( 任意 )
輸入 公開金鑰 ( id_rsa.pub 中的內容 )
-> Add key
4、這樣就在 GitHub 安好家了,GitHub 上的內容預設公開,別人可讀。
## Github 地址:https://github.com/wangxiaoqiangs
5、登陸 GitHub 點擊右上方的 '+' 號 -> New Repository 建立遠程倉庫
Repository name : MyTest # 倉庫名稱
Description(optional) : # 倉庫描述
Public : 只能勾選這個,不花錢的情況下
> Create repository
## 現在你可以看到建立好的一個空倉庫,上面有提示可以這麼、那麼操作!
二、與遠程倉庫互動
1、git 配置
shell > git config --global user.name 'wangxiaoqiangs'shell > git config --global user.email 'wangxiaoqiangs@foxmail.com'shell > git config --global color.ui true
2、建立本地庫
shell > mkdir -p /git/MyTestshell > git init # 初始化 git 倉庫Initialized empty Git repository in /git/MyTest/.git/shell > echo "This is a test repository" > README.md # 產生測試檔案,並提交到本地庫shell > git add README.mdshell > git commit README.md -m 'first commit'
3、關聯遠程倉庫、推送本地倉庫
shell > git remote add origin git@github.com:wangxiaoqiangs/MyTest.git # 本地倉庫跟遠程倉庫關聯shell > git push -u origin master # 將本地倉庫推送到遠程倉庫,第一次推送時要加 -u 參數Counting objects: 3, done.Writing objects: 100% (3/3), 237 bytes, done.Total 3 (delta 0), reused 0 (delta 0)To git@github.com:wangxiaoqiangs/MyTest.git* [new branch] master -> masterBranch master set up to track remote branch master from origin.
## 現在去 GitHub 就可以看到 MyTest 倉庫中有 README.md 檔案了
注意:第一次執行時,會有如下提示,屬正常
The authenticity of host 'github.com (192.30.252.128)' can't be established.RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'github.com,192.30.252.128' (RSA) to the list of known hosts.shell > cp /script/20150902/Student_management_system.py . # 拷貝一個檔案來本地倉庫,並提交shell > git add Student_management_system.pyshell > git commit Student_management_system.py -m 'Second submission'[master a946cf0] Second submission1 files changed, 124 insertions(+), 0 deletions(-)create mode 100644 Student_management_system.pyshell > git remote origin master # 將最新的修改推送到遠程倉庫Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts.Counting objects: 4, done.Compressing objects: 100% (3/3), done.Writing objects: 100% (3/3), 1.33 KiB, done.Total 3 (delta 0), reused 0 (delta 0)To git@github.com:wangxiaoqiangs/MyTest.git5fdb1c4..a946cf0 master -> master
## 現在遠程倉庫中也有了新的檔案了~
4、從遠程倉庫複製
## 登陸 GitHub 建立遠程倉庫
Repository name : GithubTest # 倉庫名稱
Description(optional) : # 倉庫描述
Public : 只能勾選這個,不花錢的情況下
Initialize this repository with a README : 勾選,自動產生 README.md
> Create repository
## 現在就建立了一個遠程倉庫,並產生了 README.md 檔案
shell > cd /git/shell > git clone git@github.com:wangxiaoqiangs/GithubTest.git # 從遠程倉庫複製一份到本地Initialized empty Git repository in /git/GithubTest/.git/remote: Counting objects: 3, done.remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0Receiving objects: 100% (3/3), done.shell > cd GithubTest/ ; ls # README.md 檔案已經複製到了本地README.mdshell > 修改 README.md 檔案,添加一行 Local changeshell > git add README.mdshell > git commit README.md -m 'First submission'shell > git push origin master
## 將修改推送到遠程倉庫
三、分支管理
shell > git clone git@github.com:wangxiaoqiangs/MyTest.git # 複製一個遠程庫到本地shell > git branch # 查看本地分支* mastershell > git checkout -b dev # 建立、並切換分支 ( git branch dev # 建立分支 git checkout dev # 切換分支 )Switched to a new branch 'dev'shell > git branch # 再次查看分支,前面有 * 的代表當前分支* devmastershell > echo 'This is a testing' > T.txt # 建立一個測試檔案,並提交shell > git add T.txtshell > git commit T.txt -m 'dev commit'[dev 59b4093] dev commit1 files changed, 1 insertions(+), 0 deletions(-)create mode 100644 T.txtshell > git checkout master # 切換回主分支Switched to branch 'master'shell > git branch # 可以看到當前分支是 master,現在是看不到剛才在 dev 分支建立的 T.txt 檔案的,因為還沒有合并分支dev* mastershell > git merge dev # 將 dev 分支合并到當前分支,也就是 master (主) 分支Updating a946cf0..59b4093Fast-forwardT.txt | 1 +1 files changed, 1 insertions(+), 0 deletions(-)create mode 100644 T.txtshell > git branch -d dev # 刪除 dev 分支,也可以不刪Deleted branch dev (was 59b4093).shell > git branch # 倉庫中再次只剩下主分支了* mastershell > git push origin master # 將修改推送到遠程倉庫Counting objects: 4, done.Compressing objects: 100% (2/2), done.Writing objects: 100% (3/3), 279 bytes, done.Total 3 (delta 1), reused 0 (delta 0)To git@github.com:wangxiaoqiangs/MyTest.gita946cf0..59b4093 master -> master
## 如果合并分支有衝突的話,要自己手動編輯檔案,之後重新提交 ( git add File.txt , git commit -m 'commit' )
## 如果有別的分支修改檔案,沒有合并前不要在 master 分支修改檔案,否則會合并衝突
## 查看合并日誌:git log --graph --pretty=oneline --abbrev-commit
## 合并分支的時候:git merge --no-ff -m "merge with no-ff" dev ,採用 --no-ff 參數,可以在刪除分支後也能查到合并日誌