如何使用Git和碼雲Git@OSC

1.Git簡介

關於Git是什麼,閱讀博客Git簡介html

2.Git 基礎

Git命令不少,經常使用命令以下圖
java

  • Workspace:工做區
  • Index/Stage :暫存區
  • Local Repository: 本地倉庫
  • Remote Repository:遠程倉庫

工做區、暫存區和本地倉庫,邏輯上是本地計算機。當咱們新建一個文件時,文件位於工做區,處於已修改(modified)狀態,代表文件已進行了修改,但尚未提交保存;經過命令git add 將其添加到暫存區,文件是已暫存(staged)狀態,表示把已修改的文件放到下次提交時要保存的清單中;經過命令git commit將文件放入本地倉庫,文件爲已提交(commited)狀態,表示該文件已經被安全地保存在本地數據庫中,到這一步能夠說是成功生成了一個新的版本。
遠程倉庫用來將本地倉庫上傳到網絡,實現備份、共享和合做。咱們選用開源中國的碼雲Git@OSC做爲代碼託管平臺。git

3.安裝Git

  • 到Git官網https://www.git-scm.com/ 下載Git客戶端
  • 安裝時選擇默認便可。
  • 安裝完成後在桌面的快捷菜單中選擇Git Bash Here 或者在開始菜單中選擇Git Bash
  • 在Git Bash中執行命令git --version查看版本,證實Git安裝成功

4.Git和碼雲的關聯

4.1 在碼雲註冊帳號
登陸碼雲 http://git.oschina.net/註冊帳號數據庫

4.2 配置Git
由於Git是分佈式版本控制系統,必須在Git中配置本機的用戶名和Email地址windows

  • 執行命令git config --global user.name "你的用戶名",告訴git你的名字,這個用戶名會出如今提交記錄中
  • 執行命令git config --global user.email "你的郵箱",告訴git你的郵箱, 這個郵箱也會出如今提交記錄中,注意Email儘可能保持和你註冊碼雲的Email一致。

4.3 建立SSH Key安全

由於你的數據保存在遠程服務器,服務器須要對你的身份進行識別,SSH key 可讓你的電腦和碼雲 Git@OSC 之間創建安全的加密鏈接。
運行命令ssh-keygen -t rsa -C "你的郵箱",會有三次提示輸入,直接回車便可。若是已經有SSH key,會提示是否覆蓋。
服務器

在用戶目錄下找到 .ssh目錄,裏面有一個id_rsa.pub文件,保存的就是公鑰。
登陸碼雲,在SSH公鑰文本框裏粘貼id_rsa.pub文件的內容:
網絡

執行命令ssh -T git@git.oschina.net,若返回Welcome to Git@OSC,則證實添加成功。
ssh

Git使用SSH鏈接第一次驗證服務器的key時,須要你進行確認,此時輸入yes回車便可,注意必定是yes而不是y

4.4 建立遠程倉庫編輯器

  • 在碼雲中新建項目

  • 建立項目,輸入項目名,選擇項目語言。

  • 複製遠程項目倉庫的地址:選擇HTTPS,能夠複製遠程項目倉庫的HTTPS地址,如https://git.oschina.net/maoth/java-hebau.git ,選擇SSH,則複製遠程倉庫的SSH地址。如git@git.oschina.net:maoth/java-hebau.git

4.5 克隆遠程倉庫
若是從零開發,最好的方式是先建立遠程倉庫,而後克隆遠程倉庫。
創建目錄,如E:\java,進入目錄後,右擊鼠標選擇Git Bash Here打開命令窗口,執行命令 git clone <版本庫的地址>,版本庫的地址能夠是HTTPS地址,也能夠是SSH地址。若是前面建立了SSH Key,那麼版本庫就應該使用SSH地址。

能夠看到,遠程倉庫的項目已經下載到了本地。下面就能夠在本地編寫代碼了。

5.本地Git的使用

5.1 初始化倉庫(Git init)
若是已經克隆了遠程倉庫,這一步能夠省略。若是沒有克隆遠程倉庫,須要建立一個新的Git代碼庫。
運行git init命令初始化倉庫,將會建立一個.git文件夾,這個文件夾是Git來跟蹤管理版本庫。

5.2 添加文件(Git add)
在當前文件夾下建立一個HelloWorld.java程序
使用git status命令能夠查看當前倉庫狀態

提示說明有未跟蹤(untracked)的文件,可使用git add <file>加進去,一般咱們使用git add -A命令,將全部相關文件存放到暫存區,此時git就能夠跟蹤該文件了。

再次使用git status命令能夠看到發生的變化,提示changes to be committed說明能夠進行提交了。

5.3 提交(Git commit)
使用git commit -m "提交信息" 命令將暫存區的全部文件提交到本地倉庫,提交時要求寫上提交信息,注意雙引號必須是英文半角的。

提交後用git log查看提交記錄

5.4 文件修改和撤銷
對文件進行修改後,經過git status查看,顯示一個文件進行了修改:

能夠執行git diff查看文件作了哪些修改:

紅色字體表示是刪除的內容,綠色字體表示是添加的內容。

若是想撤銷這些修改,執行git checkout 文件名

文件修改後,進行add和commit就好了。

文件add後還沒有commit時,能夠經過命令git reset HEAD 文件名進行撤銷

文件commit後,用git log查看提交記錄,如今已經有三個提交的版本了。每一個版本都有一行黃色commit開頭的哈希字串,這是每一個提交的惟一ID。

文件已經提交後,若是想撤銷,則執行git reset --hard 9316bda(取哈希字串的前7位便可),提示HEAD已經指向9316bda了,用git log查看,本地倉庫已經回退到第一個版本了。

5.5 中文亂碼問題

  • 關於git status中文亂碼問題,能夠執行git config --global core.quotepath false命令。
  • 針對windows平臺的亂碼問題,一勞永逸的辦法固然是採用全英文了。

6. 遠程同步

6.1 推送本地倉庫的更新到遠程倉庫

  • 文件提交到本地倉庫後,能夠執行git push origin master將本地倉庫上傳到遠程倉庫,默認狀況下,origin指的是本地倉庫在遠程倉庫的版本,master指的是本地倉庫的master分支。第一次push的時候,可能須要輸入在碼雲註冊的用戶名和密碼。

  • 查看碼雲項目頁面,文件HelloWorld.java已經上傳到服務器。

6.2 抓取遠程倉庫的更新到本地倉庫
執行git clone命令後,自動建立了本地的master分支,用於跟蹤遠程倉庫中的origin/master分支。當遠程倉庫的內容更新後,能夠經過命令git pull或者 git pull origin master, 將更新的數據抓取到本地倉庫,合併到工做目錄的當前分支。
執行git pull命令時,本地作的提交和服務器上的提交可能有差別,致使合併衝突,此時,需進行衝突處理。具體參考如何處理代碼衝突

7.關於init倉庫遠程同步存在的問題

對於克隆的遠程倉庫,其使用的基本流程以下:

  • 克隆遠程倉庫
  • 建立文件
  • 添加(git add)
  • 提交(git commit)
  • 推送(git push)

若是沒有從遠程克隆倉庫,則須要在本地經過git init命令初始化倉庫,在commit以後,不能直接進行遠程推送(push),必須先創建本地倉庫和遠程倉庫的關聯。
運行git remote add origin 遠程倉庫的ssh地址命令用於添加遠程倉庫

執行git push -u origin master命令,加上-u參數,Git不但會把本地的master分支內容推送到遠程倉庫,還會把二者關聯起來。

此時,提示push失敗,緣由是遠程倉庫中有本地沒有的文件,須要先pull下來。執行pull命令

依然報錯,提示fatal: refusing to merge unrelated histories ,拒絕合併互不相關的項目,那麼,咱們在執行命令時須要添加參數,即git pull origin master --allow-unrelated-histories

執行命令後,會出現提交的提示信息:

這是VIM文本編輯器
操做命令:
進入到輸入狀態:按i鍵
從輸入狀態退出:Esc鍵 —— Shift+;鍵 —— wq!(保存並退出)或q!(不保存退出) ——Enter
出現pull成功的信息

最後執行推送命令git push -u origin master

遠程同步成功,到遠程倉庫查看項目,會發現文件HelloWorld.java已經同步到遠程倉庫。

之後在commit後須要同步到遠程倉庫時,只要直接執行git push命令就好了。

上面只是簡單介紹了Git的使用,更爲系統的學習可參考下列資料:

相關文章
相關標籤/搜索