Git 從入門到放棄

GIT經常使用命令備忘:http://stormzhang.com/git/2014/01/27/git-common-command/ 

Git遠程操做詳解 :https://microzz.com/2017/05/06/git/ 

一篇文章,教你學會Git : https://juejin.im/post/599e14875188251240632702 

如何在 Git 中使用撤消操做 :https://egoist.moe/2015/10/04/how-to-undo-with-git/

git使用中碰到的問題,持續更新 :http://blog.csdn.net/a420344/article/details/51792303

git pull命令: http://www.yiibai.com/git/git_pull.html

命令別名設置:javascript

gitk --all &   //打開git 圖形化界面
 git fetch --all  //拉取遠端代碼不自動merge,安全操做    
 git remote -v  //查看遠端地址
 git checkout -b dbg_master  -t origin/master   //基於遠端master分支建立dbg_master分支
 git merge --squash <branch>:將屢次提交合併成一個,而後git add .;git commit -m "XXXXX";git push origin XXXX...
 
git push                         # push全部分支
git push origin master           # 將本地主分支推到遠程主分支
git push -u origin master        # 將本地主分支推到遠程(如無遠程主分支則建立,用於初始化遠程倉庫)
git push origin <local_branch>   # 建立遠程分支, origin是遠程倉庫名
git push origin local-branch     #將當前local-branch 分支推送一個遠程local-branch分支,本地分支和遠程分支同名
git push origin <local_branch>:<remote_branch>  # 建立遠程分支,將local_branch代碼推送到remote_branch分支

git push origin master:dev   #將本地master分支推到遠端origin/dev分支

git push origin :<remote_branch>  #先刪除本地分支(git br -d <branch>),而後再push刪除遠程分支
 
 對最近一次commit的進行修改註釋:git commit -a –amend

 Git pull 強制覆蓋本地文件
  git fetch --all  
  git reset --hard origin/master 
  git pull


git remote add origin https://git.oschina.net/duandaoke/os.git要求服務已經創建同名倉庫
git remote # 顯示遠程倉庫
git remote -v # 顯示遠程倉庫詳情
git remote show origin # 顯示 origin 遠程庫的詳情



rebase的衝突解決

   解決完一個補丁應用的衝突後,執行下面命令標記衝突已解決(也就是把修改內容加入緩存) 
      git add -u   //注:-u 表示把全部已track的文件的新的修改加入緩存,但不加入新的文件。
   而後執行下面命令繼續rebase:
      git rebase --continue     //有衝突繼續解決,重複這這些步驟,直到rebase完成。
   若是中間遇到某個補丁不須要應用,能夠用下面命令忽略:
      git rebase --skip 
   若是想回到rebase執行以前的狀態,能夠執行:
      git rebase --abort    //放棄rebase  
   注:rebase以後,不須要執行commit,也不存在新的修改須要提交,都是git自動完成。



cherry-pick的衝突解決

   解決完一個補丁應用的衝突後,執行下面命令標記衝突已解決(也就是把修改內容加入緩存) 
      git add -u   //注:-u 表示把全部已track的文件的新的修改加入緩存,但不加入新的文件。
   而後執行下面命令繼續rebase:
      git cherry-pick --continue     //有衝突繼續解決,重複這這些步驟,直到cherry-pick完成。
   若是中間遇到某個補丁不須要應用,能夠用下面命令忽略:
      git cherry-pick --skip 
   若是想回到rebase執行以前的狀態,能夠執行:
      git cherry-pick  --abort    //放棄cherry-pick
   注:cherry-pick以後,不須要執行commit,也不存在新的修改須要提交,都是git自動完成。

  
       手動編輯衝突的文件,使其內容和master_mlc分支上的內容一致, 
   而後git add此文件,最後執行git cherry-pick –continue便可。 


一、git刪除遠程分支
git push origin :branch-name //origin前面必須有空格,表示push一個空分支到遠程分支,便可刪除遠程分支。注意:這個操做須要擁有force push的權限
二、清空git暫存區
git reset HEAD  //能夠清空以前git add 的內容複製代碼


git clean命令用來從你的工做目錄中刪除全部沒有tracked過的文件.
   git clean常常和git reset --hard一塊兒結合使用. 記住reset隻影響被track過的文件, 因此須要clean來刪除沒有track過的文件. 結合使用這兩個命令能讓你的工做目錄徹底回到一個指定的<commit>的狀態.
用法


刪除當前目錄下沒有被track過的文件和文件夾.
   git clean -xf


下面的例子要刪除全部工做目錄下面的修改, 包括新添加的文件. 假設你已經提交了一些快照了, 並且作了一些新的開發.
1
2git reset --hard
git clean -df
運行後, 工做目錄和緩存區回到最近一次commit時候一摸同樣的狀態, git status會告訴你這是一個乾淨的工做目錄, 又是一個新的開始了.複製代碼


git config --global gui.encoding utf-8    //在git GUI中使用UTF-8編碼     複製代碼
//git 回滾到以前某一commit
git reset –hard 8ff24a6803173208f3e606e32dfcf82db9ac84d8


在使用Git的時候,通過幾回提交後,發現須要回退到早些時候的狀態.例如: 
7edb8524a xxxxxxxxxxxxxxxxxx 
83dae5691 xxxxxxxxxxxxxxxxxx 
45eadd642 xxxxxxxxxxxxxxxxxx 
657834ade xxxxxxxxxxxxxxxxxx
假設如今處於7edb8524a 狀態,如今我想回退到657834ade時的狀態,此時能夠 
git reset –hard 7edb8524a 
而後 
git reset –soft 657834ade 
會將之間的修改所有進行revert,而後在進行add commit操做就好了.
另外權限足夠的話,能夠從657834ade 拉一個分支出來,而後將遠程分支 
刪除,再將拉出來的分支push到遠程倉庫上,成爲原來的分支,也能夠實現回退到 
657834ade 的目的.此方法不會保留中間的各類修改信息和狀態.


根據–soft –mixed –hard,會對working tree和index和HEAD進行重置:
    git reset –mixed:此爲默認方式,不帶任何參數的git reset,即時這種方式,它回退到某個版本,只保留源碼,回退commit和index信息
    git reset –soft:回退到某個版本,只回退了commit的信息,不會恢復到index file一級。若是還要提交,直接commit便可
    git reset –hard:完全回退到某個版本,本地的源碼也會變爲上一個版本的內容
複製代碼
已經push
對於已經把代碼push到線上倉庫,你回退本地代碼其實也想同時回退線上代碼,回滾到某個指定的版本,線上,線下代碼保持一致.你要用到下面的命令

revert
git revert用於反轉提交,執行evert命令時要求工做樹必須是乾淨的.
git revert用一個新提交來消除一個歷史提交所作的任何修改.
revert 以後你的本地代碼會回滾到指定的歷史版本,這時你再 git push 既能夠把線上的代碼更新.(這裏不會像reset形成衝突的問題)

revert 使用,須要先找到你想回滾版本惟一的commit標識代碼,能夠用 git log 或者在adgit搭建的web環境歷史提交記錄裏查看.
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61
一般,前幾位便可
git revert c011eb3

git revert是用一次新的commit來回滾以前的commit,git reset是直接刪除指定的commit
看似達到的效果是同樣的,其實徹底不一樣.

複製代碼


若是當前分支與遠程分支存在追蹤關係,git pull就能夠省略遠程分支名。$ git pull origin
Shell上面命令表示,本地的當前分支自動與對應的origin主機」追蹤分支」(remote-tracking branch)進行合併。若是當前分支只有一個追蹤分支,連遠程主機名均可以省略。$ git pull
Shell上面命令表示,當前分支自動與惟一一個追蹤分支進行合併。若是合併須要採用rebase模式,可使用–rebase選項。$ git pull --rebase <遠程主機名> <遠程分支名>:<本地分支名> Shellgit fetch和git pull的區別git fetch:至關因而從遠程獲取最新版本到本地,不會自動合併。$ git fetch origin master $ git log -p master..origin/master $ git merge origin/master Shell以上命令的含義:首先從遠程的origin的master主分支下載最新的版本到origin/master分支上而後比較本地的master分支和origin/master分支的差異最後進行合併上述過程其實能夠用如下更清晰的方式來進行:$ git fetch origin master:tmp $ git diff tmp $ git merge tmp Shell2. git pull:至關因而從遠程獲取最新版本並merge到本地git pull origin master Shell上述命令其實至關於git fetch 和 git merge 在實際使用中,git fetch更安全一些,由於在merge前,咱們能夠查看更新狀況,而後再決定是否合併。 複製代碼

合理的命令別名設置能夠大大減小輸入,有助於提升工做效率,建議遵照下述別名設置:html

git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.st status
git config --global alias.rb rebase
git config --global alias.ll 「log --oneline --decorate --color」
git config --global alias.lc 「log --graph --color」          複製代碼

正確的回車換行設置,避免 Unix 和 Windows 下開發的回車換行的轉換問題。java

(Windows 下)git

git config --global core.autocrlf truegithub

git config --global core. safecrlf warnweb

(Linux 下)shell

git config --global core.autocrlf inputvim

git config --global core. safecrlf warn緩存

這篇文章的目的是給常用git管理項目提供一個有益的提醒。若是你是git新手,能夠先閱讀文後的引用部分,而後在回頭閱讀此篇文章。在介紹git命令以前,你能夠先看看來自 on-my-zsh 提供的別名。安全

基本命令

  • git config --global user.name "Your Name"
  • git config --global user.email "youremail@example.com"
  • git config --global core.editor <your favorite editor here>
    • Ex: git config --global core.editor vim
  • git init:初始化一個repo,初始化本地git倉庫(建立新倉庫)

Commit 結構

  • git status(gst):查看 repo 狀態
  • 工做區:
    • .git 目錄
    • 暫存區
    • 工做目錄

  • git add <filename>(ga):添加一個文件到暫存區
  • git add .(gaa):添加全部文件到暫存區
  • git add *.js:添加全部後綴爲js的文件到暫存區
  • git rm --cached <file>:從暫存區刪除一個新文件
  • git commit -m "My first commit"(gcmsg):建立一次帶 message 的提交
  • git commit -v -a(gca):
    • -v是 verbose 的縮寫,會在底部顯示差別信息和更多有意義的信息
    • -a 相似於 git add .,會添加全部被修改和刪除的文件,但會忽略新建立的文件
  • git help <command>:查看對應命令的幫助手冊
  • git log(glg,glgg,glo, glog):查看項目的提交歷史

暫存區管理

  • git reset HEAD <filename>(grh):從暫存區刪除一個被修改的文件
  • git reset HEAD(grh):從暫存區刪除全部被修改的文件
  • git checkout <filename>(gco):從暫存區刪除一個被修改的文件,並撤銷文件的更改 //
    git checkout .
  • git commit -m "My first commit" --amend:添加文件/更改在暫存區的最後一次提交
  • git commit -v -a --amend(gca!):添加文件/更改在暫存區的最後一次提交
  • .gitignore:告訴git,哪些文件不被加入版本跟蹤
    • 可使用 git add <filename> -f 命令添加一個不被版本跟蹤的文件
  • git diff <filename>(gd):查看基於當前文件的最後一次提交的更改差別
  • git diff (gd):查看基於全部文件的最後一次提交的更改差別
  • git reset HEAD~2 --soft:從項目提交歷史中刪除最近兩次提交,但不丟棄文件的更改
  • git reset HEAD~2 --hard:從項目提交歷史中刪除最近兩次提交,但會丟棄文件的更改和在(最後兩次)提交中建立的新文件
  • git reset <commit> --soft --hard
    • --soft:將全部被更改的文件回溯到「待提交」狀態
    • --hardcommit 以後,對被git追蹤的文件的任何更改都被丟棄
  • git reflog:顯示包括"被撤銷"在內的全部提交
  • git merge <commit hash>:從新提交(restore the commit)
  • git clean -f:刪除工做目錄中不被git進行版本追蹤的文件

Stashed & BranchesStash

  • git stash(gsta):將全部暫存區的文件移動到「儲藏區」,相似於另外一種類型的工做區
  • git stash list:查看儲藏隊列(Stash lists)
  • git stash apply:將最近一次儲藏恢復到暫存區(能夠用相似 git stash apply stash@{num}(num從0開始計數) 的命令來使用在隊列中的任意一個儲藏(stashes))
  • git stash clear:清空儲藏隊列
  • git stash save "name of the stash":爲儲藏設置命名
  • git stash pop(gstp):將最近一次儲藏恢復到暫存區並從儲藏隊列刪除此儲藏
  • git stash drop(gstd):從儲藏隊列刪除最近一次儲藏(stash@{0})(git stash drop stash@{num} 從儲藏隊列刪除指定儲藏)

Branch

  • git checkout -b dev(gco):建立 dev 分支並從當前分支切換到 dev 分支 //
    git checkout -b dbg_master -t origin/master //基於master分支建立dbg_master分支
  • git branch(gb):查看全部分支
  • git checkout master(gcm):切換到主分支
  • git merge <branch>(gm):合併分支
  • git rebase master:先將 master 上的更改合併到當前分支,再添加當前分支的更改。若是有衝突,解決衝突後加 --continue 參數繼續合併
  • git branch -d <branch>: 刪除分支,-D 則強制刪除分支
  • git merge <branch> --squash:將屢次提交合併成一個,其流程以下:
# Go to the `master` branch
git checkout master
# Create a temp branch
git checkout -b temp
# Merge the feature/x branch into the temp using --squash
git merge feature/x --squash
# See the new modifications/files in the Staging Area
git status
# Create the unified commit
git commit -m "Add feature/x"
# Delete the feature/x branch
git branch -D feature/x
複製代碼
  • rebase 和 merge 的區別:
    • rebase:
      • 提交歷史(的展現)是線性的
      • 缺點:會刪除最近一個 commit,而後建立一次新的 commit
      • 若是已提交到遠程,不要使用 rebase
    • merge:
      • 提交歷史(的展現)是分叉的
      • 對於兩個分支的合併,會建立一個次新的 commit

遠程倉庫管理

  • git remote add <name> <url>:添加一個將被追蹤的遠程倉庫
  • git remote rm <name>:移除一個遠程倉庫
  • git push <remote> <remote-branch>(gp,ggp):將當前分支的本地 commit 推送到遠程倉庫
  • git fetch <remote> <remote-branch>:拉取遠程倉庫的最新 commit 到當前(本地)分支(<remote>/<branch>),不會合並
  • git pull <remote> <remote-branch>(gl,ggl):拉取遠程倉庫的最新 commit 到當前(本地)分支,並自動 merge
    • git pull --rebase(gup):以 rebase 的方式進行合併,而不是 merge

其它有用的命令

  • git tag <name>:建立一個 tag(如:v1.3)
  • git push --tags:將本地 tags 推送到遠程倉庫
  • git push <tag>:推送指定的本地 tag 到遠程


展現幫助信息
git help -g

回到遠程倉庫的狀態
拋棄本地全部的修改,回到遠程倉庫的狀態。
git fetch --all && git reset --hard origin/master

重設第一個commit
也就是把全部的改動都從新放回工做區,並清空全部的commit,這樣就能夠從新提交第一個commit了
git update-ref -d HEAD

展現工做區和暫存區的不一樣
輸出工做區和暫存區的different(不一樣)。
git diff

還能夠展現本地倉庫中任意兩個commit之間的文件變更:
git diff <commit-id> <commit-id>

展現暫存區和最近版本的不一樣
輸出暫存區和本地最近的版本(commit)的different(不一樣)。
git diff --cached

展現暫存區、工做區和最近版本的不一樣
輸出工做區、暫存區 和本地最近的版本(commit)的different(不一樣)。
git diff HEAD

快速切換分支
git checkout -

刪除已經合併到master的分支
git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d

展現本地分支關聯遠程倉庫的狀況
git branch -vv

關聯遠程分支
關聯以後,git branch -vv就能夠展現關聯的遠程分支名了,同時推送到遠程倉庫直接:git push,不須要指定遠程倉庫了。
git branch -u origin/mybranch

或者在push時加上-u參數
git push origin/mybranch -u

列出全部本地分支
-l參數至關於:local
git branch -l

列出全部遠程分支
-r參數至關於:remote
git branch -r

列出本地和遠程分支
-a參數至關於:all
git branch -a

建立並切換到本地分支
git checkout -b <branch-name>

建立並切換到遠程分支
git checkout -b <branch-name> -t origin/<branch-name>

刪除本地分支
git branch -d <local-branchname>

刪除遠程分支
git push origin --delete <remote-branchname>
或者
git push origin :<remote-branchname>

重命名本地分支
git branch -m <new-branch-name>
git branch -m <oldbranchname> <newbranchname>:嘗試修改
git branch -M <oldbranchname> <newbranchname>:強制修改

查看標籤
git tag

展現當前分支的最近的tag
git describe --tags --abbrev=0

本地建立標籤
git tag <version-number>

默認tag是打在最近的一次commit上,若是須要指定commit打tag:
$ git tag -a <version-number> -m "v1.0 發佈(描述)" <commit-id>

推送標籤到遠程倉庫
首先要保證本地建立好了標籤才能夠推送標籤到遠程倉庫:
git push origin <local-version-number>

一次性推送全部標籤,同步到遠程倉庫:
git push origin --tags

刪除本地標籤
git tag -d <tag-name>

刪除遠程標籤
刪除遠程標籤須要先刪除本地標籤,再執行下面的命令:
git push origin :refs/tags/<tag-name>

切回到某個標籤
通常上線以前都會打tag,就是爲了防止上線後出現問題,方便快速回退到上一版本。下面的命令是回到某一標籤下的狀態:
git checkout -b branch_name tag_name

放棄工做區的修改
git checkout <file-name>

放棄全部修改:
git checkout .

恢復刪除的文件
git rev-list -n 1 HEAD -- <file_path> #獲得 deleting_commit
git checkout <deleting_commit>^ -- <file_path> #回到刪除文件 deleting_commit 以前的狀態

回到某一個commit的狀態,並從新增添一個commit  //回退,有記錄
git revert <commit-id>

回到某個commit的狀態,並刪除後面的commit
和revert的區別:reset命令會抹去某個commit id以後的全部commit
git reset <commit-id>

修改上一個commit的描述
git commit --amend

查看commit歷史
git log

查看某段代碼是誰寫的
blame的意思爲‘責怪’,你懂的。
git blame <file-name>

顯示本地執行過git命令
就像shell的history同樣
git reflog

修改做者名
git commit --amend --author='Author Name <email@address.com>'

修改遠程倉庫的url
git remote set-url origin <URL>

增長遠程倉庫
git remote add origin <remote-url>

列出全部遠程倉庫
git remote    //  git remote -v

查看兩個星期內的改動
git whatchanged --since='2 weeks ago'

把A分支的某一個commit,放到B分支上
這個過程須要cherry-pick命令,參考
git checkout <branch-name> && git cherry-pick <commit-id>

給git命令起別名
簡化命令
git config --global alias.<handle> <command>
好比:git status 改爲 git st,這樣能夠簡化命令
git config --global alias.st status

存儲當前的修改,但不用提交commit
詳解能夠參考廖雪峯老師的git教程

git stash
保存當前狀態,包括untracked的文件

untracked文件:新建的文件
git stash -u

展現全部stashes
git stash list

回到某個stash的狀態
git stash apply <stash@{n}>

回到最後一個stash的狀態,並刪除這個stash
git stash pop

刪除全部的stash
git stash clear

從stash中拿出某個文件的修改
git checkout <stash@{n}> -- <file-path>

展現全部tracked的文件
git ls-files -t

展現全部untracked的文件
git ls-files --others

展現全部忽略的文件
git ls-files --others -i --exclude-standard

強制刪除untracked的文件
能夠用來刪除新建的文件。若是不指定文件文件名,則清空全部工做的untracked文件。clean命令,注意兩點:
clean後,刪除的文件沒法找回
不會影響tracked的文件的改動,只會刪除untracked的文件git clean <file-name> -f
強制刪除untracked的目錄
能夠用來刪除新建的目錄,注意:這個命令也能夠用來刪除untracked的文件。詳情見上一條
git clean <directory-name> -df

展現簡化的commit歷史
git log --pretty=oneline --graph --decorate --all
把某一個分支到導出成一個文件
git bundle create <file> <branch-name>
從包中導入分支
新建一個分支,分支內容就是上面git bundle create命令導出的內容
git clone repo.bundle <repo-dir> -b <branch-name>
執行rebase以前自動stash
git rebase --autostash
從遠程倉庫根據ID,拉下某一狀態,到本地分支
git fetch origin pull/<id>/head:<branch-name>
詳細展現一行中的修改
git diff --word-diff
清除gitignore文件中記錄的文件
git clean -X -f
展現全部alias和configs
注意: config分爲:當前目錄(local)和全局(golbal)的config,默認爲當前目錄的config
git config --local --list (當前目錄)
git config --global --list (全局)
展現忽略的文件
git status --ignored
commit歷史中顯示Branch1有的,可是Branch2沒有commit
git log Branch1 ^Branch2
在commit log中顯示GPG簽名
git log --show-signature
刪除全局設置
git config --global --unset <entry-name>
新建並切換到新分支上,同時這個分支沒有任何commit
至關於保存修改,可是重寫commit歷史
git checkout --orphan <branch-name>
展現任意分支某一文件的內容
git show <branch-name>:<file-name>
clone下來指定的單一分支
git clone -b <branch-name> --single-branch https://github.com/user/repo.git
忽略某個文件的改動
關閉 track 指定文件的改動,也就是 Git 將不會在記錄這個文件的改動
git update-index --assume-unchanged path/to/file

恢復 track 指定文件的改動
git update-index --no-assume-unchanged path/to/file

忽略文件的權限變化
再也不將文件的權限變化視做改動
git config core.fileMode false
展現本地全部的分支的commit
最新的放在最上面
git for-each-ref --sort=-committerdate --format='%(refname:short)' refs/heads/
在commit log中查找相關內容
經過grep查找,given-text:所須要查找的字段
git log --all --grep='<given-text>'
把暫存區的指定file放到工做區中
git reset <file-name>

強制推送
git push -f <remote-name> <branch-name>列出全部遠程分支
-r參數至關於:remote
git branch -r

更新到本地
# 源 + 分支名
git pull origin master
複製代碼


初始化本地git倉庫(建立新倉庫)

git init     

                                             # 初始化 git 項目
git init

安裝好 Git 以後,配置你的資料:
# 配置用戶名
git config --global user.name "Your Real Name"
# 配置郵箱地址
git config --global user.email you@email.address
複製代碼

配置用戶名

git config --global user.name "xxx"                       複製代碼

配置郵件

git config --global user.email "xxx@xxx.com"              複製代碼

git status等命令自動着色

git config --global color.ui true                         git config --global color.status autogit config --global color.diff autogit config --global color.branch autogit config --global color.interactive auto複製代碼

clone遠程倉庫

git clone git+ssh://git@192.168.53.168/VT.git             複製代碼

查看當前版本狀態(是否修改)

git status                                                複製代碼

添加xyz文件至index

git add xyz                                               複製代碼

增長當前子目錄下全部更改過的文件至index

git add .                                                 複製代碼

提交

git commit -m 'xxx'                                       複製代碼

合併上一次提交(用於反覆修改)

git commit --amend -m 'xxx'                               複製代碼

將add和commit合爲一步

git commit -am 'xxx'                                      複製代碼

刪除index中的文件

git rm xxx                                                複製代碼

遞歸刪除

git rm -r *                                               複製代碼

顯示提交日誌

git log                                                   複製代碼

顯示1行日誌 -n爲n行

git log -1                                                git log -5複製代碼

顯示提交日誌及相關變更文件

git log --stat                                            git log -p -m複製代碼

顯示某個提交的詳細內容

git show dfb02e6e4f2f7b573337763e5c0013802e392818         複製代碼

可只用commitid的前幾位

git show dfb02                                            複製代碼

顯示HEAD提交日誌

git show HEAD                                             複製代碼

顯示HEAD的父(上一個版本)的提交日誌 ^^爲上兩個版本 ^5爲上5個版本

git show HEAD^                                            複製代碼

顯示已存在的tag

git tag                                                   複製代碼

增長v2.0的tag

git tag -a v2.0 -m 'xxx'                                  複製代碼

顯示v2.0的日誌及詳細內容

git show v2.0                                             複製代碼

顯示v2.0的日誌

git log v2.0                                              複製代碼

顯示全部未添加至index的變動

git diff                                                  複製代碼

顯示全部已添加index但還未commit的變動

git diff --cached                                         複製代碼

比較與上一個版本的差別

git diff HEAD^                                            複製代碼

比較與HEAD版本lib目錄的差別

git diff HEAD -- ./lib                                    複製代碼

比較遠程分支master上有本地分支master上沒有的

git diff origin/master..master                            複製代碼

只顯示差別的文件,不顯示具體內容

git diff origin/master..master --stat                     複製代碼

增長遠程定義(用於push/pull/fetch)

git remote add origin git+ssh://git@192.168.53.168/VT.git 複製代碼

顯示本地分支

git branch                                                複製代碼

顯示包含提交50089的分支

git branch --contains 50089                               複製代碼

顯示全部分支

git branch -a                                             複製代碼

顯示全部原創分支

git branch -r                                             複製代碼

顯示全部已合併到當前分支的分支

git branch --merged                                       複製代碼

顯示全部未合併到當前分支的分支

git branch --no-merged                                    複製代碼

本地分支更名

git branch -m master master_copy                          複製代碼

從當前分支建立新分支master_copy並檢出

git checkout -b master_copy                               複製代碼

上面的完整版

git checkout -b master master_copy                        複製代碼

檢出已存在的features/performance分支

git checkout features/performance                         複製代碼

檢出遠程分支hotfixes/BJVEP933並建立本地跟蹤分支

git checkout --track hotfixes/BJVEP933                    複製代碼

檢出版本v2.0

git checkout v2.0                                         複製代碼

從遠程分支develop建立新本地分支devel並檢出

git checkout -b devel origin/develop                      複製代碼

檢出head版本的README文件(可用於修改錯誤回退)

git checkout -- README                                    複製代碼

合併遠程master分支至當前分支

git merge origin/master                                   複製代碼

合併提交ff44785404a8e的修改

git cherry-pick ff44785404a8e                             複製代碼

將當前分支push到遠程master分支

git push origin master                                    複製代碼

刪除遠程倉庫的hotfixes/BJVEP933分支

git push origin :hotfixes/BJVEP933                        複製代碼

把全部tag推送到遠程倉庫

git push --tags                                           複製代碼

獲取全部遠程分支(不更新本地分支,另需merge)

git fetch                                                 複製代碼

獲取全部原創分支並清除服務器上已刪掉的分支

git fetch --prune                                         複製代碼

獲取遠程分支master並merge到當前分支

git pull origin master                                    複製代碼

重命名文件README爲README2

git mv README README2                                     複製代碼

將當前版本重置爲HEAD(一般用於merge失敗回退)

git reset --hard HEAD                                     git rebase複製代碼

刪除分支hotfixes/BJVEP933(本分支修改已合併到其餘分支)

git branch -d hotfixes/BJVEP933                           複製代碼

強制刪除分支hotfixes/BJVEP933

git branch -D hotfixes/BJVEP933                           複製代碼

列出git index包含的文件

git ls-files                                              複製代碼

圖示當前分支歷史

git show-branch                                           複製代碼

圖示全部分支歷史

git show-branch --all                                     複製代碼

顯示提交歷史對應的文件修改

git whatchanged                                           複製代碼

撤銷提交dfb02e6e4f2f7b573337763e5c0013802e392818

git revert dfb02e6e4f2f7b573337763e5c0013802e392818       複製代碼

內部命令:顯示某個git對象

git ls-tree HEAD                                          複製代碼

內部命令:顯示某個ref對於的SHA1 HASH

git rev-parse v2.0                                        複製代碼

顯示全部提交,包括孤立節點

git reflog                                                git show HEAD@{5}複製代碼

顯示master分支昨天的狀態

git show master@{yesterday}                               複製代碼

圖示提交日誌

git log --pretty=format:'%h %s' --graph                   git show HEAD~3git show -s --pretty=raw 2be7fcb476複製代碼

暫存當前修改,將全部至爲HEAD狀態

git stash                                                 複製代碼

查看全部暫存

git stash list                                            複製代碼

參考第一次暫存

git stash show -p stash@{0}                               複製代碼

應用第一次暫存

git stash apply stash@{0}                                 複製代碼

文件中搜索文本「delete from」

git grep "delete from"                                    git grep -e '#define' --and -e SORT_DIRENTgit gcgit fsck複製代碼
相關文章
相關標籤/搜索