$ git init
通過git init指令把這個目錄變成git可以管理的倉庫
$ git add file
add告訴git,把檔案添加到倉庫
$ git commit -m "送出說明"
commit告訴git,把檔案送出到倉庫
$ git status
status指令可以讓我們時刻掌握倉庫目前的狀态
$ git diff file
檢視更改内容
$ git log --pretty=oneline
log指令顯示從最近到最遠的送出日志
$ git reset --hard head^
回退一個版本 ,幾個^就是回退幾個版本
$ cat file
檢視檔案内容
$ git reset --hard commit id
回退到commit id的版本
git回退版本的速度非常快,在git内部有個指向目前版本的head指針,當你回退版本的時候,git隻是把指針指向的位置換了一下。
$ git reflog
reflog用來記錄你的每一次指令
git的版本庫裡存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有git為我們自動建立的第一個分支master,以及指向master的一個指針叫head。
我們把檔案往git版本庫裡添加的時候,是分兩步執行的
第一步是用git add把檔案添加進去,實際上就是把檔案修改添加到暫存區;
第二步是用git commit送出更改,實際上就是把暫存區的所有内容送出到目前分支。
因為我們建立git版本庫時,git自動為我們建立了唯一一個master分支,是以,現在,git commit就是往master分支上送出更改。
你可以簡單了解為,需要送出的檔案修改通通放到暫存區,然後,一次性送出暫存區的所有修改。
$ git checkout -- file
丢棄工作區的修改
$ git reset head file
reset指令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用head時,表示最新的版本
$ git rm file
從版本庫中删除該檔案
如果删除錯了通過git checkout可以一鍵還原
$ ssh-keygen -t rsa -c github賬戶名
建立ssh key
$ git remote add origin github位址
将本地倉庫與遠端倉庫關聯,必須有擁有ssh key的公鑰
添加後,遠端庫的名字就是origin,這是git預設的叫法,也可以改成别的,但是origin這個名字一看就知道是遠端庫。
$ git push -u origin master
把本地庫的内容推送到遠端,用git push指令,實際上是把目前分支master推送到遠端。
$ git clone github位址
克隆 github位址的倉庫
$ git branch
檢視分支
建立分支
$ git checkout
切換分支
$ git checkout -b
建立+切換分支
$ git merge
合并某分支到目前分支
$ git branch -d
删除分支
$ git log --graph
檢視分支合并圖
通常,合并分支時,如果可能,git會用fast forward模式,但這種模式下,删除分支後,會丢掉分支資訊。
$ git merge --no-ff -m "merge with no-ff" dev
使用--no-ff參數,禁用fast forward
$ git stash
将分支儲存起來,等需要時恢複
$ git stash list
檢視儲存起來的分支
恢複儲存分支的兩種方法:
一是用git stash apply恢複,但是恢複後,stash内容并不删除,你需要用git stash drop來删除。
另一種方式是用git stash pop,恢複的同時把stash内容也删了:
$ git branch -d feature-vulcan
強行删除分支
$ git remote
檢視遠端庫的資訊
$ git remote -v
顯示更詳細的資訊
$ git push origin master
推送分支,就是把該分支上的所有本地送出推送到遠端庫。推送時,要指定本地分支,這樣,git就會把該分支推送到遠端庫對應的遠端分支上
$ git tag v1.0
目前版本打一個新标簽
$ git tag
檢視所有标簽
$ git tag v0.9 -m "version 0.9" commit id
給某一個送出的版本打标簽,-m說明文字
$ git show <标簽>
檢視标簽資訊
$ git tag -d <标簽>
删除标簽
$ git push origin <标簽>
推送标簽到遠端倉庫
$ git push origin --tags
将所有标簽全部推送到遠端倉庫
如果标簽已經推送到遠端,要删除遠端标簽先删除本地标簽
$ git push origin :refs/tags/<标簽>
然後從遠端删除