Git經常使用命令學習筆記

在學習了廖雪峯老師的git教程後把經常使用的命令總結了出來

  • 注:在使用這些命令前請安裝好Git軟件,地址:https://git-scm.com/downloads,同時去註冊一個git類的數據倉庫帳號,國外的如github、gitlab,國內的如碼雲等。

一、在建好的目錄下來初始化一個git項目

git init

二、添加文件

2.一、添加全部文件

git add .

2.二、添加指定文件

git add 文件名
eg: git add readme.md

三、提交到倉庫

git commit -m "說明"
eg: git commit -m "Update"

四、查看倉庫狀態

4.一、若是你修改了某個文件,咱們能夠經過如下命令來查看狀態

git status

4.二、若是想知道某個文件具體修改了哪些內容,用如下命令

git diff 文件名
eg: git diff readme.mdgit

  • 注:在確認修改無誤後須要再次對修改的文件作git add 和 git commit命令來提交到倉庫。

五、顯示從最近到最遠的提交日誌

git log

六、版本回退

在Git中,用HEAD表示當前版本,也就是最新的提交,上一個版本就是HEAD^,上上一個版本就是HEAD^^,固然往上100個版本寫100個^比較容易數不過來,因此寫成HEAD~100。github

git reset --hard HEAD^

七、不想回退版本

找到回退以前的版本的commit版本值(sha1值),來進行反悔操做。bash

git reset --hard commit值
eg: git reset --hard f8dad 注: 這個值只須要取前五位便可。

八、查看回退記錄

前面的反悔操做是創建在你還沒關閉git bash窗口看獲得回退前那個最新版本的commit id值,若是咱們關閉了窗口後想反悔怎麼辦,使用如下命令來查看app

git relog

九、查看工做區和版本庫裏面最新版本的區別

git diff HEAD -- 文件名
eg: git diff HEAD -- readme.txt

注:每次修改,若是不用git add到暫存區,那就不會加入到commit中。

十、讓文件回到最近一次git commit或git add時的狀態。

git checkout -- 文件名
eg: git checkout -- readme.txt //把readme.txt文件在工做區的修改所有撤銷

十一、刪除版本庫的文件

git rm 文件名
eg: git rm test.txt

以後再使用git commit -m "description",文件就從版本庫裏面刪除了

十二、把誤刪的文件恢復到最新版本

git checkout HEAD -- test.txt //這個恢復的前提是沒有執行commit命令才行。

  • 注意:git checkout -- test.txt 針對的是rm test.txt
    若是是git rm test.txt, 參看以前的版本回退, git reset -- hard 文件名

1三、將本地倉庫推送到遠端倉庫

13.一、創建遠端地址

git remote add origin 你遠端的github地址
eg: git remote add origin git@github.com:michaelliao/learngit.git

13.二、推送到遠端倉庫

git push -u origin master //推送到主分支,之後能夠直接:git push origin master

1四、把建立好的遠程倉庫上克隆到本地

git clone 遠程地址
eg: git clone git@github.com:michaelliao/gitskills.git

git裏面重要概念--分支(具體概念參考教程:廖雪峯教程-分支

1五、建立分支

好比咱們要建立dev分支:gitlab

git checkout -b dev

注:git checkout命令加上-b參數表示建立並切換,至關於如下兩條命令:學習

git branch dev
git checkout dev

1六、切換分支和查看當前分支

16.一、切換

git checkout master

16.二、查看當前分支

git branch //git branch命令會列出全部分支,當前分支前面會標一個*號。

  • 注:你切換到分支上事後,就能夠專一本身分支的開發,使用git add和git commit來進行操做就能夠了。提交事後你切換到master分支是沒法查看到剛纔你在分支上提交的內容的。

1七、合併分支

git merge dev //合併指定分支到當前分支(好比這個在master下合併dev)

1八、刪除分支

git branch -d dev //刪除dev分支

1九、分支合併衝突

通常來講在合併分支時與master存在衝突的狀況下只能手動去把文件修改一致才行。合併過程衝突的話,可使用cat 文件名來查看衝突的內容,衝突部分會用<<<<<<< HEAD這樣的字樣標註。

具體操做教程:分支合併衝突日誌

20、分支管理策略

前面的分支操做屬於Fast Forward模式,這種模式下,刪除分支後,會丟掉分支信息,接下來不使用這種模式。
使用這個模式的其它操做幾乎都同樣,只是在合併的時候加一個參數和一個commit信息。以下:code

git merge --no-ff -m 'no-ff' dev

查看分支歷史圖教程

git log --graph --pretty=oneline --abbrev-commit

2一、實際開發使用分支管理的原則

首先,master分支應該是很是穩定的,也就是僅用來發布新版本,平時不能在上面幹活;
那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,好比1.0版本發佈時,再把dev分支合併到master上,在master分支發佈1.0版本;
你和你的小夥伴們每一個人都在dev分支上幹活,每一個人都有本身的分支,時不時地往dev分支上合併就能夠了。ip

2二、bug分支

有時候咱們在開發的過程當中遇到bug,須要及時去修復,可是目前分支上的開發任務又無法提交,Git還提供了一個stash功能,能夠把當前工做現場「儲藏」起來,等修復bug之後恢復現場後繼續工做。

22.一、保存當前分支工做現場

git stash //執行了這個命令後用git status就不會看到未提交的信息。

  • 注:使用這個命令的前提是你的文件已經git的暫存區裏面了。在保存好上面的工做現場後,你就須要去建立本身專門的bug修復分支,來進行修復,以後再合併和刪除bug分支便可,作完這些事後你須要恢復咱們開始保存好的工做現場。

22.二、恢復工做現場

git stash list //查看工做現場的位置
    
    git stash apply //恢復後,stash內容並不刪除,你須要用git stash drop來刪除

    git stash pop  //恢復的同時把stash內容也刪了

    git stash apply stash@{0} //恢復指定的stash,這個stash@{0}參數能夠從git stash list查看

2三、features分支

當咱們在開發新功能時須要新建一個分支,可是在開發完事後不要這個功能了,須要刪除這個未合併的分支。

git branch -D feature //刪除未合併的分支須要使用大D。

2四、能夠抓取和推送的origin的地址

git remote -v //若是沒有推送權限,就看不到push的地址。

2五、推送到分支

25.一、推送到主分支

git push origin master

25.二、推送到其它分支

git push origin dev

2六、多人協做開發

這個參考教程,比較詳細:多人協做開發
總結爲如下幾步:

查看遠程庫信息,使用git remote -v;

    本地新建的分支若是不推送到遠程,對其餘人就是不可見的;

    從本地推送分支,使用git push origin branch-name,若是推送失敗,先用git pull抓取遠程的新提交;

    在本地建立和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致;

    創建本地分支和遠程分支的關聯,使用git branch --set-upstream branch-name origin/branch-name;

    從遠程抓取分支,使用git pull,若是有衝突,要先處理衝突。

補充

一、將本地分支推送到遠程倉庫

git push --set-upstream origin 分支名
eg: git push --set-upstream origin dev
相關文章
相關標籤/搜索