# 常用命令
- 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
```li.tianzeng@litianzeng 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
命令會列出所有分支,當前分支前面會標乙個*號。
```li.tianzeng@litianzeng mingw64 /f/git (master)
$ git checkout -b fenzhi
switched to a new branch 'fenzhi'
li.tianzeng@litianzeng mingw64 /f/git (fenzhi)
$ git branch
* fenzhi
master
```- git checkout master # 切換到主分支
- git merge命令用於合併指定分支到當前分支
當前在master上,指定fenzhi合併到mastershang
```li.tianzeng@litianzeng mingw64 /f/git (fenzhi)
$ git checkout master
switched to branch 'master'
your branch is up to date with 'origin/master'.
li.tianzeng@litianzeng 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 config 在git中,使用git config 命令來配置 git 的配置檔案,git配置級別主要有3類 1 倉庫級別 local 本地 git 倉庫級別配置檔案,作用於當前倉庫。優先順序最高 2 使用者級別 global,全域性配置檔案,作用於所有...
git 常用命令
檢視是否存在檔案需要上傳 git status git add git commit m 建立遠端倉庫 git remote add origin 116.255.146.153 ruby cd work daily project.git 更新git fetch 116.255.146.153 r...
git常用命令
詳細 1,git log p 命令來顯示每一次提交與其父節點提交內容之間快照的差異。2,為了檢視載入 staged 而並未提交 not committed 的內容差異,可以使用 git diff stage 命令 在git 1.6之前的版本中,使用 cached 適應情形 在執行git commit...