關於Git是什麼,閱讀博客Git簡介html
Git命令不少,經常使用命令以下圖
java
- Workspace:工做區
- Index/Stage :暫存區
- Local Repository: 本地倉庫
- Remote Repository:遠程倉庫
工做區、暫存區和本地倉庫,邏輯上是本地計算機。當咱們新建一個文件時,文件位於工做區,處於已修改(modified)狀態,代表文件已進行了修改,但尚未提交保存;經過命令git add
將其添加到暫存區,文件是已暫存(staged)狀態,表示把已修改的文件放到下次提交時要保存的清單中;經過命令git commit
將文件放入本地倉庫,文件爲已提交(commited)狀態,表示該文件已經被安全地保存在本地數據庫中,到這一步能夠說是成功生成了一個新的版本。
遠程倉庫用來將本地倉庫上傳到網絡,實現備份、共享和合做。咱們選用開源中國的碼雲Git@OSC做爲代碼託管平臺。git
Git Bash Here
或者在開始菜單中選擇Git Bash
:git --version
查看版本,證實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.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
命令。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
命令時,本地作的提交和服務器上的提交可能有差別,致使合併衝突,此時,需進行衝突處理。具體參考如何處理代碼衝突
對於克隆的遠程倉庫,其使用的基本流程以下:
- 克隆遠程倉庫
- 建立文件
- 添加(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的使用,更爲系統的學習可參考下列資料: