Git操作的基礎命令

Git的簡介:

Git是目前世界上最先進的分佈式版本控制系統。區別於集中式svn和cvs,分佈式版本控制系統沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫。特點:不需要聯網、安全性高、速度快、協作更便捷。


一、創建版本庫:

mkdir learngit     新建一個目錄

cd learngit        跳轉到這個目錄下
git init           把這個目錄變成Git可以管理的倉庫
編寫readme.txt文件放在learngit目錄
git add readme.txt 把文件添加到倉庫
git commit -m "wrote a readme file" 告訴Git,把文件提交到倉庫
git status         命令看倉庫當前的狀態
git diff readme.txt 看具體修改內容

總結:
隨時掌握工作區的狀態,使用git status命令。
如果git status告訴你有文件被修改過,用git diff可以查看修改內容。


二、版本回退和管理修改

git log             查看歷史記錄
git log --pretty=oneline 簡化記錄顯示
一大串類似3628164...882e1e0的是commit id(版本號)
用HEAD表示當前版本
上一個版本就是HEAD^,上上一個版本就是HEAD^^,
當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100

git reset --hard HEAD^ 回退上一版本
git reset --hard (commit id)(版本號)
cat readme.txt         顯示內容

忘記commit id可用relog查
git reflog             用來記錄你的每一次命令
git diff HEAD -- readme.txt 命令可以查看工作區和版本庫裏面最新版本的區別

總結:
每次修改,如果不add到暫存區,那就不會加入到commit中


三、撤銷修改和刪除文件

git checkout -- readme.txt 在工作區的修改全部撤銷
git reset HEAD file  可以把暫存區的修改撤銷掉(unstage),重新放回工作區

總結:
場景1:當你改亂了工作區某個文件的內容,想直接丟棄工作區的修改時,用命令git checkout -- file。
場景2:當你不但改亂了工作區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。
場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。

git rm 用於刪除一個文件

ls -ah 查看隱藏目錄


四、遠程倉庫:

ssh-keygen -t rsa -C "[email protected]" 創建SSH Key,一路回車
成功後,可以在用戶主目錄裏找到.ssh目錄,裏面有id_rsa和id_rsa.pub兩個文件
id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人

https://github.com/settings/keys 谷歌瀏覽器打開
在這個網站中添加SSH keys 用id_rsa.pub公鑰。

使用SSH Key是因爲GitHub需要識別出你推送的提交確實是你推送的

本地倉庫關聯遠程庫heshushun/learngit.git,遠程庫的名稱:origin
git remote add origin [email protected]:heshushun/learngit.git

把本地庫的所有內容推送到遠程庫上
git push -u origin master  把當前分支master推送到遠程,並將本地master和遠程master關聯

git push origin master  後面推送遠程不需要再加-u

從遠程庫克隆到本地庫
git clone [email protected]:heshushun/gitskills.git


五、分支管理:
git checkout -b dev  創建dev分支,然後切換到dev分支
git checkout命令加上-b參數表示創建並切換
git branch           命令查看當前分支

git checkout master  切換回master分支

git merge dev        把dev分支的工作成果合併到master分支上

git branch -d dev    刪除dev分支

因爲創建、合併和刪除分支非常快,所以Git鼓勵使用分支完成某個任務,合併後再刪掉分支

總結:
查看分支:git branch

創建分支:git branch <name>

切換分支:git checkout <name>

創建+切換分支:git checkout -b <name>

合併某分支到當前分支:git merge <name>

刪除分支:git branch -d <name>


git log --graph    命令可以看到分支合併圖。

git stash  可以把當前工作現場“儲藏”起來

git merge --no-ff -m "merged bug fix 101" issue-101  合併

git stash list 命令查看剛纔的工作現場

git stash apply恢復 但是恢復後,stash內容並不刪除
git stash pop  恢復工作現場的同時把stash內容也刪了

git branch -D feature-vulcan 強行刪除分支 -D
git branch -d feature-vulcan  如果分支修改沒有合併是不能刪除的

git remote  查看遠程庫的信息 git remote -v 看更詳細

git push origin dev 推送 dev分支


六、多人協助:
git checkout -b dev origin/dev 其他本地倉庫想再dev上開發,需創建遠程origin的dev分支到本地
git commit -m "add /usr/bin/env"
git push origin dev    修改後 push到遠程

若對方提交,你也提交同文件會衝突,會推送失敗。
可先用git pull把最新的提交從origin/dev抓下來,然後,在本地合併,解決衝突,再推送

git pull  將origin/dev抓下來

如果失敗,因爲沒有指定本地dev分支與遠程origin/dev分支的鏈接
git branch --set-upstream dev origin/dev  設置dev和origin/dev的鏈接:

然後再pull,本地合併解決衝突後,再push


七、標籤管理:
git tag v1.0 新建標籤v1.0

git log --pretty=oneline --abbrev-commit 找歷史提交的commit id

git tag v0.9 692fdc3  指定 692fdc3 commit id 的標籤是v0.9

git show v0.9  查看標籤信息

git tag -d v0.9 刪除標籤

git push origin v1.0 推送某個標籤到遠程

git push origin :refs/tags/v0.9  刪除一個遠程標籤




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章