1. 程式人生 > >git常用命令,參照廖雪峰老師的git教程

git常用命令,參照廖雪峰老師的git教程

哪裏 -h 官網 ... 出現 -m git的常用命令 還原 style

git的常用命令

寫在開篇: 作為一個菜鳥,我想學習的最好的方式就是邊學邊記筆記,這裏只是本人寫的自己通過學習了廖雪峰老師的git教程之後自己做的筆記,個人理解,可能有失偏頗,如想學習更專業更權威的git知識,請移步廖雪峰老師的官網

一.創建git倉庫

  1.git init 在本地創建一個空的倉庫

  2.在遠程創建一個項目倉庫,gitHub內操作

    git remote add origin *****

  通過這兩個步驟,就將本地倉庫與遠程倉庫關聯起來,然後在本地coding,提交代碼到遠程。也可以通過git remote -v 命令查看是否有fecth和push的權限

  技術分享圖片 

二.通過克隆的方式在本地創建倉庫

  先在本地建立一個空的文件夾,在遠程找到克隆的地址,有SSH和https兩種協議。如果有ssh鑰匙,可以通過ssh協議,如果沒有配置就需要用https協議

   通過git clone ****(遠程git地址) 在本地復制一份代碼,這樣就獲得了一個已經以遠程關聯好了的本地倉庫 

三、工作區、暫存區、版本庫(圖片來自廖雪峰官網Git教程)

  技術分享圖片

三.必用的三個命令

  git add *** 將本地倉庫的內容提交到暫存區

  git commit -m“對本次提交的說明” 將暫存區的內容提交到版本庫

  git push 將版本庫裏的內容提交到遠程

以上的命令是我們提交代碼的過程中絕對不可缺少的

四、輔助命令

  git status 查看狀態,可以通過此命令查看哪寫內容有修改,哪些內容是新創建的,是在暫存區,還是再工作區,通過這個命令可以了解的很清楚

  技術分享圖片

  git diff *** 查看不同的地方,即可以通過此命令查看具體修改了***文件哪裏

  技術分享圖片

  git log 查看歷史提交記錄

  技術分享圖片

  通過這個命令,可以清楚的看到提交的次數以及每次提交的commit_id,上圖的內容很多,如果需要簡單一些的我們可以通過git log --pretty=oneline查看提交日誌

  技術分享圖片

  這兩個命令我們都可以看到commit_id,知道看commit_id我們就可以進行版本回退了。

  當前版本是HEAD

  git reset --hard HEAD^ 回退到上一個版本

  git reset --hard HEAD^^ 回退到上上一個版本

  ......

  如果是回退到前100個版本,則git reset --hard HEAD~100

  這樣的版本回退看著有些麻煩,我們還需要數一下這個前幾個版本,現在有一種更簡單的,我們可以看到每次提交都會有一個commit_id,我們也可以根據這個進行版本回退

  git reset --hard (commit_id)

  我們可以個根據每次的提交說明,回到我們需要回退的版本;’如果我們把git的窗口關閉了,找不到版本號了的時候,還可以通過git relog 來查看提交的id

  註:如果版本回退,被回退的版本成為最新的,它之後的修改已經查看不到了,如果想回到未回退之前的版本,可以找到最後一個提交的commit_id,通過git reset --hard commit_id返回到初始版本

五、撤銷修改

  撤銷修改分成3中情況:

    1.只在工作區進行了修改,沒有添加到暫存區(尚未執行git add **命令)

    2.添加到了暫存區,還沒有提交到版本庫(執行了git add **,還沒有執行git commit -m"modified something")

    3.提交到了版本庫,還沒有推動到遠程 (執行了git commit,沒有執行git push)

針對這三種情況,我們一 一來解決

情況1有兩種方法:

  ①直接在工作區進行修

  ②當我們把某個文件修改了之後我們可以用git status命令查看

  技術分享圖片

  可以看到git checkout -- <file>命令可以把本次修改撤銷

情況2的撤銷方法:

  當我們git add **之後,發現有問題,那我們還是可以通過git status來查看

  技術分享圖片

  我們可以看到這裏的命令git reset HEAD <file>,執行這個命令,就回到了情況1,也就是沒有git add ** 之前,參照情況一之中的②方法撤銷本次修改

情況3參照版本會退,git reset --hard HEAD^即可(必須是沒有推送到遠程的,即沒有執行git push的)

六.刪除文件

  通常情況下,我們刪除文件的最直接的方式就是在工作區直接將文件刪除,當然我們還可以通過rm <file>命令來刪除文件

  但是如果這個文件之前已經提交到版本庫了,我們在工作區直接刪除,會版本庫和工作區不一致的情況,這時候我們就要確定這個文件是確定要刪除了,還是說不小心誤刪仍需要保留的

  如果是確定以及肯定要刪除,則可執行git rm <file> 並執行git commit -m" ",這樣就講這個文件從版本庫裏也刪除了

  但是如果是誤刪,這時候工作區已經沒有了,但是不用擔心,版本庫裏仍然有這個文件,我們可以通過執行git checkout -- <file>將誤刪的文件恢復

註:git checkout 其實是用版本庫(版本庫裏包括這暫存區)的版本替換工作區的版本,無論是工作區的修改或者刪除,都可以還原

*****************************我是重點分割線**********************

七.分支管理

  1.查看分支: git branch

  2.創建分支: git branch <branch_name>

  3.切換分支: git checkout <branch_name>

  4.創建+切換分支:git checkout -b <branch_name>

  5.合並分支: git merge <branch_name> 基於當前分支,將<branch_name>上的內容合並到當前分支

  6.刪除分支: git checkout -d <branch_name>

   刪除一個沒有被合並的分支: git checkout -D <branch_name>

對於git merge的說明:

  git merge命令用於合並指定分支到當前分支

  技術分享圖片

這裏可以看到Fast-forward信息,說明本次合並是“快速合並”,也就是直接把master指向f分支的當前提交,所以合並速度很快。我們可以通過git log --graph命令可以查看分支合並圖

  技術分享圖片

Fast forward模式下,刪除分支後,會丟掉分支的信息,但是要強禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從歷史分支上就可以看出分支信息

git merge --no-ff <branch_dev>

這裏需要註意的是,通過這種方式合並之後,界面會鎖死,出現Please enter a commit message to explain why this merge is necessary...

退出的方法是:①按鍵盤上的I鍵 ②按鍵盤上的Esc鍵③輸入:wq,按enter鍵退出(詳情參考鏈接)

這是我們可以通過git log --graph再此查看分支合並圖,發現和剛才不一樣了

  技術分享圖片

  7.隱藏分支:git stash <branch_name>

  開發實況: 在開發的過程中,突然發現有一個bug需要修復,一般來時我們會重新建立一個分支來修復bug,但是目前分支的上新增的內容還不能提交,這個時候我們可以將當前分支工作區裏的內容添加到暫存區(git add <file>這裏是必須的,否則git stash不生效),這樣我們就可以git stash <當前分支>,現在我們可以新建一個分支,進行bug修復了。

  8.恢復隱藏:git stash apply 或者 git stash pop

  當我們的bug修復完成,我們要繼續coding時,我們需要恢復現場,首先我們可以通過git stash list來查看我們隱藏的工作,通過git stash apply 恢復,但是回復後stash的內容並沒有被刪除需要使用命令git stash drop來刪除;也可以通過git stash pop ,恢復stash時也把stash的內容刪除了.  

git常用命令,參照廖雪峰老師的git教程