1. 程式人生 > >git 常用命令彙總

git 常用命令彙總

1 獲取git的版本
git --version   

2 初始化倉庫
git init   初始化一個本地倉庫
git --version   獲取git的版本
git config --global user.name "yourname"
git config --global user.email "youremail"
第3 4 條 就是給一個身份,標記修改檔案,推送檔案是誰操作的的,
--global選項在整個倉庫生效

3 修改檔案(包括新增,編輯,刪除)
git add file     新增一個檔案到暫存區
git commit -m "desc"    提交一個檔案到版本庫
git add .  提交所有修改的檔案到暫存區
git rm <file>   刪除檔案之後再提交檔案  Git  commit  -m “desc” 

4 輔助工具 
git status  或者此次版本庫的狀態
git diff    判斷本地工作區和版本庫的差異
git log     顯示一行 --pretty=oneline    顯示日誌 --graph 圖形方式
git reflog 記錄每一次命令歷史    


5 撤銷操作
git reset --hard HEAD   回退版本
HEAD^(上一個版本)  head^^(上兩個版本)   head~100(上一百個版本)
git reset --hard commit-id  回退到commit-id的版本
撤銷修改三種情況:
1 修改內容還未到達暫存區
撤銷方法:直接把編輯的刪除,或者通過命令 git checkout -- filename 此時就會丟掉工作區的修改
2 修改內容已經到達暫存區
git reset HEAD <file> 可以把暫存區的修改撤銷掉(unstage),重新放回工作區
3 如果修改內容已經推送到版本庫中,可以通過回退版本命令
git reset --hard HEAD^/commit-id

6 新增遠端庫
以github為例
git remote add <remotename> [email protected]:kontar-wang/study.git
顯示遠端庫
git remote -v
顯示具體遠端庫
git remote show <remotename>
推送程式碼到遠端庫
git push -u origin master
從遠端庫拉程式碼
git pull origin master
克隆版本庫
git clone url/ssh  (不同的協議)
example
git clone [email protected]

:kontar-wang/studygit.git

7 分支功能
新增:
git branch -b branch-name 建立並切換分支
git branch branch-name 建立分支
git checkout branch-name 切換分支
git branch --track remote/branch 建立一個可跟蹤的分支基於遠端的一個分支
刪除:
git branch -d branch-name
合併分支:
git merge branch-name  合併分支到HEAD所在的分支
衝突的解決辦法:
1 解決衝突,最後add commit -m “desc”
分支合併的兩種方式差別:
git會用Fast forward模式(預設方式),但這種模式下,刪除分支後,會丟掉分支資訊
--no-ff方式的gitmerge合併分支時,加上--no-ff引數就可以用普通模式合併,
合併後的歷史有分支,能看出來曾經做過合併,而fast forward合併就看不出來曾經做過合併。

如果要丟棄一個沒有被合併過的分支,可以通過git branch -D <name>強行刪除。

8 stash保護現場的功能:
git提供了一個stash功能,可以把當前工作現場“儲藏”起來,等以後恢復現場後繼續工作
git stash 保護工作現場
Git stash list  顯示工作現場
git stash apply  恢復工作現場,但是恢復後,stash內容並不刪除,
需要用git stash drop來刪除;
git stash pop,恢復的同時把stash內容也刪了
工作的時候你可以多次stash,恢復的時候,先用git stash list檢視,然後恢復指定的stash,用命令
 git stash apply [email protected]{0}


9 分支推送原則:
但是,並不是一定要把本地分支往遠端推送,那麼,哪些分支需要推送,哪些不需要呢?
master分支是主分支,因此要時刻與遠端同步;
dev分支是開發分支,團隊所有成員都需要在上面工作,所以也需要與遠端同步;
bug分支只用於在本地修復bug,就沒必要推到遠端了,除非老闆要看看你每週到底修復了幾個bug;
feature分支是否推到遠端,取決於你是否和你的小夥伴合作在上面開發。

10 多人協作的工作模式
首先,可以試圖用git push origin <branch-name>推送自己的修改;
如果推送失敗,則因為遠端分支比你的本地更新,需要先用git pull試圖合併;
如果合併有衝突,則解決衝突,並在本地提交;
沒有衝突或者解決掉衝突後,再用git push origin <branch-name>推送就能成功!
注意:如果git pull提示no tracking information,則說明本地分支和遠端分支的連結關係沒有建立,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
這就是多人協作的工作模式,一旦熟悉了,就非常簡單。

11 標籤
git tag tagname   在最新的一次commit打標籤
git tag tagname   commit-id   在commit-id處打標籤
Git tag show 展示標籤  
git tag -a tagname -m “desc” commit-id 
git tag -d tagname  刪除標籤
git push origin tagname  推送標籤
git push origin --tags 一次性推送全部尚未推送遠端的本地標籤
如果標籤推送到遠端刪除分為兩步:
git tag -d tagname
git push origin :refs/tags/v0.9

12 配置檔案-過濾掉那些檔案不需要推送
忽略某些檔案時,需要編寫.gitignore;
.gitignore檔案本身要放到版本庫裡,並且可以對.gitignore做版本管理!

13  配置別名,輸入命令省事
配置別名
$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
配置檔案存放在.git/config
git fetch <remote> 下載所有的改變,但是沒有加入到HEAD中
Git pull origin branch
Git push origin branch