如何使用Git和碼雲Git@OSC


1.Git簡介

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

2.Git 基礎

Git命令很多,常用命令如下圖

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

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

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地址

  • 執行命令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,則證明添加成功。

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的使用,更為系統的學習可參考下列資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM