Git經常使用命令小結

Git

版本庫原理

Git的版本庫裏存了不少東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲咱們自動建立的第一個分支master,以及指向master的一個指針叫HEAD。
工做區有一個隱藏目錄.git,這個不算工做區,而是Git的版本庫前端

圖片描述

建立版本庫:

#建立文件
$ mkdir myapp

#進入文件
$ cd myapp

#初始化代碼倉庫
$ git init

#把須要提交的全部修改放到暫存區(Stage)
$ git add file

#提交全部文件
#$ git add . 

#提交全部.js格式文件
#$ git add *.js

#強制添加
#$ git add -f file

#提交代碼
$ git commit -m "commit info"

查看

#查看歷史記錄,git log命令顯示從最近到最遠的提交日誌
$ git log

#查看分支合併圖
$ git log --graph

#Git提供了一個命令git reflog用來記錄你的每一次命令:
$ git reflog

#git status命令用於顯示工做目錄和暫存區的狀態。使用此命令能看到那些修改被暫存到了, 哪些沒有, 哪些文件沒有被Git tracked到。git status不顯示已經commit到項目歷史中去的信息。
$ git status

#當暫存區中沒有文件時,git diff比較的是,工做區中的文件與上次提交到版本庫中的文件。
#當暫存區中有文件時,git diff則比較的是,當前工做區中的文件與暫存區中的文
$ git diff

#比較工做區中的文件與版本庫中文件的差別。HEAD指向的是版本庫中的當前版本,而file指的是當前工做區中的文件。
$ git diff HEAD -- file

版本回退:

#Git必須知道當前版本是哪一個版本,在Git中,用HEAD表示當前版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,當回退版本較早時能夠寫成HEAD~100。

#版本回退
$ git reset --hard HEAD^

#取消回退,commitId爲你想要回到的將來版本號
$ git reset --hard commitId

撤銷修改

命令git checkout ——file 把文件在工做區的修改所有撤銷,這裏有兩種狀況:git

* 一種是file修改後尚未被放到暫存區,如今,撤銷修改就回到和版本庫如出一轍的狀態;
* 一種是file已經添加到暫存區後,又做了修改,如今,撤銷修改就回到添加到暫存區後的狀態。
#文件在工做區的修改所有撤銷
$ git checkout --file

刪除文件

命令git rm用於從版本庫刪除一個文件。
若是一個文件已經被提交到版本庫,那麼你永遠不用擔憂誤刪,可是要當心,你只能恢復文件到最新版本,你會丟失最近一次提交後你修改的內容。github

#從版本庫刪除一個文件
$ git rm file
提示:先手動刪除文件,而後使用git rm <file>和git add<file>效果是同樣的。

添加遠程倉庫

#關聯一個遠程庫
$ git remote add origin <address>
#第一次將本地庫的全部內容推送到遠程庫上
$ git push -u origin master [-f]

#此後,每次本地提交後,就可使用命令推送最新修改
$ git push origin master

從遠程庫克隆

#
git clone [url]

好比,要克隆 Ruby 語言的 Git 代碼倉庫 Grit,能夠用下面的命令:面試

#這會在當前目錄下建立一個名爲grit的目錄,其中包含一個.git的目錄,用於保存下載下來的全部版本記錄,而後從中取出最新版本的文件拷貝。若是進入這個新建的grit目錄,你會看到項目中的全部文件已經在裏邊了,準備好後續的開發和使用。

$ git clone git://github.com/schacon/grit.git

若是但願在克隆的時候,本身定義要新建的項目目錄名稱,能夠在上面的命令末尾指定新的名字:segmentfault

#惟一的差異就是,如今新建的目錄成了mygrit,其餘的都和上邊的同樣。
$ git clone git://github.com/schacon/grit.git mygrit

分支管理

圖片描述

建立+切換分支:app

$ git checkout -b <name>

建立分支:url

$ git branch <name>

切換分支spa

$ git checkout <name>

查看分支:指針

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

切換分支日誌

#切換回master分支
$ git checkout <name>

合併某分支到當前分支

$ git merge <name>

刪除分支

$ git branch -d <name>

Git分支十分強大,在團隊開發中應該充分應用。
合併分支時,加上—no-ff參數就能夠用普通模式合併,合併後的歷史有分支,能看出來曾經作過合併,而fast forward合併就看不出來曾經作過合併。

儲藏

儲藏能夠獲取你工做目錄的中間狀態——也就是你修改過的被追蹤的文件和暫存的變動——並將它保存到一個未完結變動的堆棧中,隨時能夠從新應用。

如今你想切換分支,可是你還不想提交你正在進行中的工做;因此你儲藏這些變動。爲了往堆棧推送一個新的儲藏,只要運行git stash。把全部未提交的修改(包括暫存的和非暫存的)都保存起來,用於後續恢復當前工做目錄。

git stash
須要說明一點,stash是本地的,不會經過git push命令上傳到git server上。

查看現有的全部儲藏,此命令顯然暗示了git stash能夠屢次保存工做進度,並用在恢復時候選擇。

$ git stash list

從新應用已經實施的儲藏(不刪除儲藏)

#若是你想應用更早的儲藏,你能夠經過名字指定它,像這樣:git stash apply stash@{2}。若是你不指明,Git 默認使用最近的儲藏並嘗試應用它
$ git stash apply [--index] [<stash>]

從新應用已經實施的儲藏(刪除儲藏)

#若是不使用任何參數,會恢復最新保存的工做進度,並將恢復的工做進度從存儲的工做進度列表中清除。
#若是提供<stash>參數(來自git stash list顯示的列表),則從該<stash>中恢復。恢復完畢也將從進度列表中刪除<stash>。
#選項--index除了恢復工做區的文件外,還嘗試恢復暫存區。
$ git stash pop [--index] [<stash>]

刪除一個存儲的進度。(默認刪除最新的進度)

$ git stash drop [<stash>]

清空當前全部的stash

$ git stash clear

基於儲藏進度建立分支。

$ git stash branch <branchname> <stash>

多人協做

查看遠程庫的信息:

#或者用git remote -v 可顯示更詳細的信息
$ git remote

推送分支,該分支上的全部本地提交推送到遠程庫

$ git push origin <branch-name>

從本地推送分支,若是推送失敗,先抓取遠程的新提交:

$ git pull

推薦閱讀:
2019年前端面試題-01
2019年前端面試題-02
2019年前端面試題-03
2019年前端筆試題


我是Cloudy,年輕的前端攻城獅一枚,愛專研,愛技術,愛分享。
我的筆記,整理不易,感謝閱讀、點贊和收藏。
文章有任何問題歡迎你們指出,也歡迎你們一塊兒交流前端各類問題!
相關文章
相關標籤/搜索