Git分佈式版本控制系統,很是流弊的一個版本管理系統,此博文介紹下git經常使用的命令,適用於不會Git版本控制的菜鳥,對於維護Git服務器的大牛來講,跪求指教,其實我也是菜鳥。linux
Git是被壓迫出來的產物,由於BitMover公司收回了版本控制系統BitKeeper對linux社區無償使用的權限,而linux的開發迫切須要一個好的分佈式版本控制系統,咱們心高氣傲的linux之父linus不肯意向BitMover低頭付費,一輩子氣就花了不到一個月的時間用本身的C寫出瞭如今最流行的分佈式版本控制系統git,在這裏很是感謝BitMover公司的推動,有了如今很是好用的Git,不的不說,linus仍是很流弊的。git
1. 在Git中設置你的名字和email這些是提交commit的時候的簽名github
git config --global user.name "yatian"服務器
git config --global user.email "yatian@126.com"分佈式
2. 建立版本庫。ide
# 首先找一個合適的地方建立一個空文件夾網站
mkdir learngitspa
# 經過git命令把這個目錄變成Git能夠管理的倉庫版本控制
git init開發
注意:在執行完git init這個命令後,會提示建立了一個空的倉庫,而且有一個隱藏的文件'.git',這個文件是跟蹤管理版本庫的,沒事千萬不要手動修改這個文件,容易將版本庫搞壞掉。
# 編寫一個文件readme.txt必定要放到 learngit 的目錄下,不然在這個倉庫中是找不到的
git add readme.txt
# 告訴git把文件提交到倉庫中
git commit -m "wrote a readme file"
-m 在這裏是解釋本次操做的, 方便之後查找歷史記錄
# 查看當前git有沒有修改過的文件及新上傳的文件
git status
# 查看文件是那些爲有過修改及詳細查看修改的文件
git diff readme.txt
# 將已經存在的文件,修改後提交方式
git commit -a -m "lanyulei"
# 查詢git全部修改記錄的命令
git log [--pretty=oneline]
單獨執行git log輸入的內容可能過多,加上後面的參數能夠簡要的輸入內容。"[]"表明無關緊要
# 回退版本,首先,Git必須知道當前版本是哪一個版本,在Git中,用HEAD表示當前版本,也就是最新的提交3628164...882e1e0(注意個人提交ID和你的確定不同),上一個版本就是HEAD^,上上一個版本就是HEAD^^,固然往上100個版本寫100個^比較容易數不過來,因此寫成HEAD~100。
回退到上一個版本中
git reset --hard HEAD^
想要回去的話, 也是能夠的,可是前提是,還能記得以前的commit id,Git老是有後悔要能夠吃的,可使用git reflog來查看你的歷史操做
git reflog
git reset --hard 123456
# 工做區版本和版本庫中的最新版本比較
git diff HEAD -- readme.txt
# 丟棄工做區的修改,就是想剛剛修改的東西,還原
git checkout -- readme.txt
# 當你想將暫存區的修改回退的時候,使用一下命令
git reset HEAD file
# 當你刪除工做去文件的時候,git status就會提示你工做區和版本區的版本不一致,一是確實要從版本庫中刪除該文件
git rm file
git commit -m "delete file"
二是,你誤刪除了工做區的文件,想要恢復,那麼撤銷工做區域的修改就能夠了
git checkout -- file
3. 遠程倉庫
# 自行建立github網站的帳號,建立一個共有的版本庫
# 要關聯一個遠程代碼庫
git remote add origin git@github.com:yatian/test.git
origin 遠程庫的名字,是Git中的默認叫法,能夠是別的
# 將代碼推送至遠程庫
git push [--force] -u origin master
注意:第二次提交的時候,直接提交就能夠
git push origin master
# 克隆代碼
git clone git@github.com:yatian/gitskills.git
4. 分支管理
# 建立一個新的分支,而且切換到這個新的分支
git checkout -b dev
git checkout命令加上-b參數表示建立並切換,至關於如下兩條命令:
git branch dev
git checkout dev
# 查看當前所在分支
git branch
# 合併某分支到當前分支
git merge dev
# 刪除分支
git branch -d dev