# 常用命令
- git init
把當前目錄初始化為倉庫,多了一個.git的目錄,這個目錄是git來跟蹤管理版本庫的
也不一定必須在空目錄下建立git倉庫,選擇一個已經有東西的目錄也是可以的
- git add 檔名
告訴git,把檔案新增到倉庫
- git commit -m "這裡寫註釋"
告訴git,把檔案提交到倉庫,-m後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的
- git status
git status命令可以讓我們時刻掌握倉庫當前的狀態
- git diff
檢視difference,顯示的格式正是unix通用的diff格式
- git log
命令顯示從最近到最遠的提交日誌,版本號是一個sha1計算出來的一個非常大的數字,用十六進位制表示
如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上--pretty=oneline引數,後面顯示commit時的備註
用==head==表示當前版本
上一個版本就是head^,上上一個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100
```[email protected] mingw64 /f/git (master)
$ git log
commit 9b378c6671d5d975d80e621f047140660f8be617 (head -> master)
author: ltz150
date: sun oct 28 16:38:53 2018 +0800
版本3commit 60f710a986e854da76fe71561c8bfd59979b00e5
author: ltz150
date: sun oct 28 16:37:54 2018 +0800
版本2commit b73a42c36aac49acc8eb9bfe4d0d29aba2fd093a
author: ltz150
date: sun oct 28 16:35:20 2018 +0800
版本1```
- git reset --hard head^ 恢復到上一個版本
從最近的一個commit恢復
上一個版本就是head^,上上一個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100
- git reset --hard 9b378(版本號前幾位) 恢復到指定版本
版本號沒必要寫全,前幾位就可以了,git會自動去找。當然也不能只寫前一兩位,因為git可能會找到多個版本號,就無法確定是哪一個了。
- git reset head
可以把暫存區的修改撤銷掉(unstage),重新放回工作區
用head時,表示最新的版本
- git reflog
記錄你的每一次歷史命令
> git跟蹤並管理的是修改,而非檔案
- git checkout --檔名
把檔案在工作區的修改全部撤銷,這裡有兩種情況:
一種是檔案自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;
一種是檔案已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。
總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。
- git rm 檔名
刪除版本庫裡面的檔案,git checkout -- 檔名,把版本庫 的檔案恢復到工作區
- git remote add origin [email protected]:id/倉庫名.git
把一個已有的本地倉庫與github關聯
- git push
把當前分支推送
- git clone github地址
從地址克隆倉庫
> master和其他分支名字 才是指向提交的,,head指向的就是當前分支
- git checkout -b 分支名字
命令加上-b參數列示建立並切換,相當於以下兩條命令:
git branch 分支名 #建立分支
git checkout 分支名 #切換分支
- git branch
命令會列出所有分支,當前分支前面會標一個*號。
```[email protected] mingw64 /f/git (master)
$ git checkout -b fenzhi
switched to a new branch 'fenzhi'
[email protected] mingw64 /f/git (fenzhi)
$ git branch
* fenzhi
master
```- git checkout master # 切換到主分支
- git merge命令用於合併指定分支到當前分支
當前在master上,指定fenzhi合併到mastershang
```[email protected] mingw64 /f/git (fenzhi)
$ git checkout master
switched to branch 'master'
your branch is up to date with 'origin/master'.
[email protected] mingw64 /f/git (master)
$ git merge fenzhi
updating a8baa73..49f9e1b
fast-forward
number.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
```![2018-10-28-22-03-13.png](
- git branch -d fenzhi
git branch -d 強行刪除。
刪除fenzhi,建議合併後刪除
> 當git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。
解決衝突就是把git合併失敗的檔案手動編輯為我們希望的內容,再提交。
用git log --graph命令可以看到分支合併圖。
# 分支策略
1. master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活
2. 幹活都在dev分支上,也就是說,dev分支是不穩定的
3. 每個人都有自己的分支,時不時地往dev分支上合併就可以了
4. 合併分支時,加上--no-ff引數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward合併就看不出來曾經做過合併
![2018-10-28-22-41-48.png](
- git stash
把當前工作現場“儲藏”起來,等以後恢復現場後繼續工作
- git stash list
顯示儲存的工作是現場
- git remote
git remote -v顯示更詳細的資訊
要檢視遠端庫的資訊 ,遠端倉庫的預設名稱是origin
# 推送分支
- git push origin master
git push origin dev
> - master分支是主分支,因此要時刻與遠端同步;
> - dev分支是開發分支,團隊所有成員都需要在上面工作,所以也需要與遠端同步;
> - bug分支只用於在本地修復bug,就沒必要推到遠端了,除非老闆要看看你每週到底修復了幾個bug;
> - feature分支是否推到遠端,取決於你是否和你的小夥伴合作在上面開發。
- git checkout -b dev origin/dev
建立遠端origin的dev分支到本地,這個命令建立本地dev分支.
- git branch --set-upstream-to=origin/dev dev
本地dev分支與遠端origin/dev分支的連結,根據提示,設定dev和origin/dev的連結
- git rebase
rebase操作可以把本地未push的分叉提交歷史整理成直線;
rebase的目的是使得我們在檢視歷史提交的變化時更容易,因為分叉的提交需要三方對比。
# 標籤tag
- git tag 用於新建一個標籤,預設為head,也可以指定一個commit id;
- git tag -a -m "blablabla..."可以指定標籤資訊;
- git tag可以檢視所有標籤。
- git push origin 可以推送一個本地標籤;
- git push origin --tags可以推送全部未推送過的本地標籤;
- git tag -d 可以刪除一個本地標籤;
- git push origin :refs/tags/可以刪除一個遠端標籤。
git 常用命令 git常用命令的使用
1.touch readme.md 新建一個資料夾,在資料夾下右鍵bash出現命令列,輸入這行命令建立一個readme檔案2.git init 把當前資料夾變成一個git倉庫3.git add readme.md 新增檔案到倉庫 這裡只新增了一個readme檔案 git add a 新增所有檔案到本...
Git命令 git常用命令
一 git 狀態轉換圖 其中 untrack files 是指尚未被git所管理的檔案 changed but not updated 是指檔案被git管理,並且發生了改變,但改動還沒被git管理 這兩種狀態,都可以看成是改動還沒被git管理的狀態,我們這裡稱unstage狀態。staging是co...
git常用命令
git branch 顯示當前所在的分支,以及目前本地所有分支 前面有 標註的是當前所在分支 git branch 建立新的分支 git checkout b 建立新的分支並且切換到新分支上 git checkout 切換到新的分支上 此命令也可以用於切換到本地庫沒有,而遠端庫有的分支上 git s...