本片內(nèi)容轉(zhuǎn)自CSDN
http://blog.csdn.net/ithomer/article/details/7529022
Git 是一個很強大的分布式版本管理工具,它不但適用于管理大型開源軟件的源代碼(如:linux kernel),管理私人的文檔和源代碼也有很多優(yōu)勢(如:wsi-lgame-pro)
Git 的更多介紹,請參考我的上一篇博客:Git 版本管理工具
一、 Git 命令初識
在正式介紹Git命令之前,先介紹一下Git 的基本命令和操作,對Git命令有一個總體的認(rèn)識
示例:從Git 版本庫的初始化,通常有兩種方式:
1)git clone:這是一種較為簡單的初始化方式,當(dāng)你已經(jīng)有一個遠(yuǎn)程的Git版本庫,只需要在本地克隆一份
例如:git ?clone ?git://github.com/someone/some_project.git ??some_project
上面的命令就是將'git://github.com/someone/some_project.git'這個URL地址的遠(yuǎn)程版本庫,完全克隆到本地some_project目錄下
2)git
init 和 git remote:這種方式稍微復(fù)雜一些,當(dāng)你本地創(chuàng)建了一個工作目錄,你可以進(jìn)入這個目錄,使用'git
init'命令進(jìn)行初始化;Git以后就會對該目錄下的文件進(jìn)行版本控制,這時候如果你需要將它放到遠(yuǎn)程服務(wù)器上,可以在遠(yuǎn)程服務(wù)器上創(chuàng)建一個目錄,并把
可訪問的URL記錄下來,此時你就可以利用'git remote add'命令來增加一個遠(yuǎn)程服務(wù)器端,
例如:git ?remote ?add ?origin ?git://github.com/someone/another_project.git
上面的命令就會增加URL地址為'git: //github.com/someone/another_project.git',名稱為origin的遠(yuǎn)程服務(wù)器,以后提交代碼的時候只需要使用 origin別名即可
二、 Git 常用命令
1) 遠(yuǎn)程倉庫相關(guān)命令
檢出倉庫: ? ? ? ?$ git clone git://github.com/jquery/jquery.git
查看遠(yuǎn)程倉庫:$ git remote -v
添加遠(yuǎn)程倉庫:$ git remote add [name] [url]
刪除遠(yuǎn)程倉庫:$ git remote rm [name]
修改遠(yuǎn)程倉庫:$ git remote set-url --push [name] [newUrl]
拉取遠(yuǎn)程倉庫:$ git pull [remoteName] [localBranchName]
推送遠(yuǎn)程倉庫:$ git push [remoteName] [localBranchName]
*如果想把本地的某個分支test提交到遠(yuǎn)程倉庫,并作為遠(yuǎn)程倉庫的master分支,或者作為另外一個名叫test的分支,如下:
$git push origin test:master ? ? ? ? // 提交本地test分支作為遠(yuǎn)程的master分支
$git push origin test:test ? ? ? ? ? ? ?// 提交本地test分支作為遠(yuǎn)程的test分支
2)分支(branch)操作相關(guān)命令
查看本地分支:$ git branch
查看遠(yuǎn)程分支:$ git branch -r
創(chuàng)建本地分支:$ git branch [name] ----注意新分支創(chuàng)建后不會自動切換為當(dāng)前分支
切換分支:$ git checkout [name]
創(chuàng)建新分支并立即切換到新分支:$ git checkout -b [name]
刪除分支:$ git branch -d [name] ---- -d選項只能刪除已經(jīng)參與了合并的分支,對于未有合并的分支是無法刪除的。如果想強制刪除一個分支,可以使用-D選項
合并分支:$ git merge [name] ----將名稱為[name]的分支與當(dāng)前分支合并
創(chuàng)建遠(yuǎn)程分支(本地分支push到遠(yuǎn)程):$ git push origin [name]
刪除遠(yuǎn)程分支:$ git push origin :heads/[name] 或 $ gitpush origin :[name]
*創(chuàng)建空的分支:(執(zhí)行命令之前記得先提交你當(dāng)前分支的修改,否則會被強制刪干凈沒得后悔)
$git symbolic-ref HEAD refs/heads/[name]
$rm .git/index
$git clean -fdx
3)版本(tag)操作相關(guān)命令
查看版本:$ git tag
創(chuàng)建版本:$ git tag [name]
刪除版本:$ git tag -d [name]
查看遠(yuǎn)程版本:$ git tag -r
創(chuàng)建遠(yuǎn)程版本(本地版本push到遠(yuǎn)程):$ git push origin [name]
刪除遠(yuǎn)程版本:$ git push origin :refs/tags/[name]
合并遠(yuǎn)程倉庫的tag到本地:$ git pull origin --tags
上傳本地tag到遠(yuǎn)程倉庫:$ git push origin --tags
創(chuàng)建帶注釋的tag:$ git tag -a [name] -m 'yourMessage'
4) 子模塊(submodule)相關(guān)操作命令
添加子模塊:$ git submodule add [url] [path]
如:$git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
初始化子模塊:$ git submodule init ?----只在首次檢出倉庫時運行一次就行
更新子模塊:$ git submodule update ----每次更新或切換分支后都需要運行一下
刪除子模塊:(分4步走哦)
1) $ git rm --cached [path]
2) 編輯“.gitmodules”文件,將子模塊的相關(guān)配置節(jié)點刪除掉
3) 編輯“ .git/config”文件,將子模塊的相關(guān)配置節(jié)點刪除掉
4) 手動刪除子模塊殘留的目錄
5)忽略一些文件、文件夾不提交
在倉庫根目錄下創(chuàng)建名稱為“.gitignore”的文件,寫入不需要的文件夾名或文件,每個元素占一行即可,如
target
bin
*.db
三、?Git 命令詳解
現(xiàn)在我們有了本地和遠(yuǎn)程的版本庫,讓我們來試著用用Git的基本命令:
git pull:從其他的版本庫(既可以是遠(yuǎn)程的也可以是本地的)將代碼更新到本地,例如:'git pull origin master'就是將origin這個版本庫的代碼更新到本地的master主枝,該功能類似于SVN的update
git add:是將當(dāng)前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示記入了版本歷史中,這也是提交之前所需要執(zhí)行的一步,例如'git add app/model/user.rb'就會增加app/model/user.rb文件到Git的索引中,該功能類似于SVN的add
git rm:從當(dāng)前的工作空間中和索引中刪除文件,例如'git rm app/model/user.rb',該功能類似于SVN的rm、del
git commit:提交當(dāng)前工作空間的修改內(nèi)容,類似于SVN的commit命令,例如'git commit -m story #3, add user model',提交的時候必須用-m來輸入一條提交信息,該功能類似于SVN的commit
git push:將本地commit的代碼更新到遠(yuǎn)程版本庫中,例如'git push origin'就會將本地的代碼更新到名為orgin的遠(yuǎn)程版本庫中
git log:查看歷史日志,該功能類似于SVN的log
git revert:還原一個版本的修改,必須提供一個具體的Git版本號,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本號都是生成的一個哈希值
上面的命令幾乎都是每個版本控制工具所公有的,下面就開始嘗試一下Git獨有的一些命令:
git branch:對分支的增、刪、查等操作,例如'git branch new_branch'會從當(dāng)前的工作版本創(chuàng)建一個叫做new_branch的新分支,'git branch -D new_branch'就會強制刪除叫做new_branch的分支,'git branch'就會列出本地所有的分支
git checkout:Git的checkout有兩個作用,其一是在不同的branch之間進(jìn)行切換,例如'git checkout new_branch'就會切換到new_branch的分支上去;另一個功能是還原代碼的作用,例如'git checkout app/model/user.rb'就會將user.rb文件從上一個已提交的版本中更新回來,未提交的內(nèi)容全部會回滾
git rebase:用下面兩幅圖解釋會比較清楚一些,rebase命令執(zhí)行后,實際上是將分支點從C移到了G,這樣分支也就具有了從C到G的功能
git reset:將當(dāng)前的工作目錄完全回滾到指定的版本號,假設(shè)如下圖,我們有A-G五次提交的版本,其中C的版本號是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我們執(zhí)行了'git reset?bbaf6fb5060b4875b18ff9ff637ce118256d6f20'那么結(jié)果就只剩下了A-C三個提交的版本
git stash:將當(dāng)前未提交的工作存入Git工作棧中,時機成熟的時候再應(yīng)用回來,這里暫時提一下這個命令的用法,后面在技巧篇會重點講解
git config:利用這個命令可以新增、更改Git的各種設(shè)置,例如'git config branch.master.remote origin'就將master的遠(yuǎn)程版本庫設(shè)置為別名叫做origin版本庫,后面在技巧篇會利用這個命令個性化設(shè)置你的Git,為你打造獨一無二的 Git
git tag:可以將某個具體的版本打上一個標(biāo)簽,這樣你就不需要記憶復(fù)雜的版本號哈希值了,例如你可以使用'git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20'來標(biāo)記這個被你還原的版本,那么以后你想查看該版本時,就可以使用 revert_version標(biāo)簽名,而不是哈希值了
Git?之所以能夠提供方便的本地分支等特性,是與它的文件存儲機制有關(guān)的。Git存儲版本控制信息時使用它自己定義的一套文件系統(tǒng)存儲機制,在代碼根目錄下有一個.git文件夾,會有如下這樣的目錄結(jié)構(gòu):
有
幾個比較重要的文件和目錄需要解釋一下:HEAD文件存放根節(jié)點的信息,其實目錄結(jié)構(gòu)就表示一個樹型結(jié)構(gòu),Git采用這種樹形結(jié)構(gòu)來存儲版本信息,那么
HEAD就表示根;refs目錄存儲了你在當(dāng)前版本控制目錄下的各種不同引用(引用指的是你本地和遠(yuǎn)程所用到的各個樹分支的信息),它有heads、
remotes、stash、tags四個子目錄,分別存儲對不同的根、遠(yuǎn)程版本庫、Git棧和標(biāo)簽的四種引用,你可以通過命令'git
show-ref'更清晰地查看引用信息;logs目錄根據(jù)不同的引用存儲了日志信息。因此,Git只需要代碼根目錄下的這一個.git目錄就可以記錄完
整的版本控制信息,而不是像SVN那樣根目錄和子目錄下都有.svn目錄。那么下面就來看一下Git與SVN的區(qū)別吧
四、 Git 與SVN 比較
SVN(Subversion)是當(dāng)前使用最多的版本控制工具。與它相比較,Git最大的優(yōu)勢在于兩點:易于本地增加分支和分布式的特性。
下面兩幅圖可以形象的展示Git與SVN的不同之處:
------------
1)本地增加分支
圖中Git本地和服務(wù)器端結(jié)構(gòu)都很靈活,所有版本都存儲在一個目錄中,你只需要進(jìn)行分支的切換即可達(dá)到在某個分支工作的效果
而SVN則完全不同,如果你需要在本地試驗一些自己的代碼,只能本地維護(hù)多個不同的拷貝,每個拷貝對應(yīng)一個SVN服務(wù)器地址
舉一個實際的例子:
使用SVN作為版本控制工具,當(dāng)正在試圖增強一個模塊,工作做到一半,由于會改變原模塊的行為導(dǎo)致代碼服務(wù)器上許多測試的失敗,所以并沒有提交代碼。
這
時候假如現(xiàn)在有一個很緊急的Bug需要處理,
必須在兩個小時內(nèi)完成。我只好將本地的所有修改diff,并輸出成為一個patch文件,然后回滾有關(guān)當(dāng)前任務(wù)的所有代碼,再開始修改Bug的任務(wù),等到
修改好后,在將patch應(yīng)用回來。前前后后要完成多個繁瑣的步驟,這還不計中間代碼發(fā)生沖突所要進(jìn)行的工作量。
可是如果使用Git, 我們只需要開一個分支或者轉(zhuǎn)回到主分支上,就可以隨時開始Bug修改的任務(wù),完成之后,只要切換到原來的分支就可以優(yōu)雅的繼續(xù)以前的任務(wù)。只要你愿意,每一個新的任務(wù)都可以開一個分支,完成后,再將它合并到主分支上,輕松而優(yōu)雅。
2)分布式提交
Git?可以本地提交代碼,所以在上面的圖中,Git有利于將一個大任務(wù)分解,進(jìn)行本地的多次提交
而SVN只能在本地進(jìn)行大量的一次性更改,導(dǎo)致將來合并到主干上造成巨大的風(fēng)險
3)日志查看
Git 的代碼日志是在本地的,可以隨時查看
SVN的日志在服務(wù)器上的,每次查看日志需要先從服務(wù)器上下載下來
例如:代碼服務(wù)器在美國,當(dāng)每次查看幾年前所做的工作時,日志下載可能需要十分鐘,這不能不說是一個痛苦。但是如果遷移到Git上,利用Git日志在本地的特性,查看某個具體任務(wù)的所有代碼歷史,每次只需要幾秒鐘,大大方便了工作,提高了效率。
當(dāng)然分布式并不是說用了Git就不需要一個代碼中心服務(wù)器,如果你工作在一個團(tuán)隊里,還是需要一個服務(wù)器來保存所有的代碼的。
一、 Git 常用命令速查
git branch 查看本地所有分支
git status 查看當(dāng)前狀態(tài)
git commit 提交
git branch -a 查看所有的分支
git branch -r 查看遠(yuǎn)程所有分支
git commit -am "init" 提交并且加注釋
git remote add origin git@192.168.1.119:ndshow
git push origin master?將文件給推到服務(wù)器上
git remote show origin 顯示遠(yuǎn)程庫origin里的資源
git push origin master:develop
git push origin master:hb-dev?將本地庫與服務(wù)器上的庫進(jìn)行關(guān)聯(lián)
git checkout --track origin/dev 切換到遠(yuǎn)程dev分支
git branch -D master develop 刪除本地庫develop
git checkout -b dev 建立一個新的本地分支dev
git merge origin/dev 將分支dev與當(dāng)前分支進(jìn)行合并
git checkout dev 切換到本地dev分支
git remote show 查看遠(yuǎn)程庫
git add .
git rm 文件名(包括路徑) 從git中刪除指定文件
git clone git://github.com/schacon/grit.git 從服務(wù)器上將代碼給拉下來
git config --list 看所有用戶
git ls-files 看已經(jīng)被提交的
git rm [file name] 刪除一個文件
git commit -a 提交當(dāng)前repos的所有的改變
git add [file name] 添加一個文件到git index
git commit -v 當(dāng)你用-v參數(shù)的時候可以看commit的差異
git commit -m "This is the message describing the commit" 添加commit信息
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git log 看你commit的日志
git diff 查看尚未暫存的更新
git rm a.a 移除文件(從暫存區(qū)和工作區(qū)中刪除)
git rm --cached a.a 移除文件(只從暫存區(qū)中刪除)
git commit -m "remove" 移除文件(從Git中刪除)
git rm -f a.a 強行移除修改后文件(從暫存區(qū)和工作區(qū)中刪除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 將文件給push到一個臨時空間中
git stash pop 將文件從臨時空間pop下來
---------------------------------------------------------
git remote add origin git@github.com:username/Hello-World.git
git push origin master 將本地項目給提交到服務(wù)器中
-----------------------------------------------------------
git pull 本地與服務(wù)器端同步
-----------------------------------------------------------------
git push (遠(yuǎn)程倉庫名) (分支名) 將本地分支推送到服務(wù)器上去。
git push origin serverfix:awesomebranch
------------------------------------------------------------------
git fetch 相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,不會自動merge
git commit -a -m "log_message" (-a是提交所有改動,-m是加入log信息) 本地修改同步至服務(wù)器端 :
git branch branch_0.1 master 從主分支master創(chuàng)建branch_0.1分支
git branch -m branch_0.1 branch_1.0 將branch_0.1重命名為branch_1.0
git checkout branch_1.0/master 切換到branch_1.0/master分支
du -hs
git branch 刪除遠(yuǎn)程branch
git push origin:branch_remote_name
git branch -r -d branch_remote_name
-----------------------------------------------------------
初始化版本庫,并提交到遠(yuǎn)程服務(wù)器端
mkdir WebApp
cd WebApp
git init本地初始化
touch README
git add README添加文件
git commit -m 'first commit'
git remote add origin git@github.com:daixu/WebApp.git增加一個遠(yuǎn)程服務(wù)器端
上面的命令會增加URL地址為'git@github.com:daixu/WebApp.git',名稱為origin的遠(yuǎn)程服務(wù)器庫,以后提交代碼的時候只需要使用 origin別名即可
二、 Git 命令速查表
1、常用的Git命令
命令
簡要說明
git add
添加至?xí)捍鎱^(qū)
git add–interactive
交互式添加
git apply
應(yīng)用補丁
git am
應(yīng)用郵件格式補丁
git annotate
同義詞,等同于 git blame
git archive
文件歸檔打包
git bisect
二分查找
git blame
文件逐行追溯
git branch
分支管理
git cat-file
版本庫對象研究工具
git checkout
檢出到工作區(qū)、切換或創(chuàng)建分支
git cherry-pick
提交揀選
git citool
圖形化提交,相當(dāng)于 git gui?命令
git clean
清除工作區(qū)未跟蹤文件
git clone
克隆版本庫
git commit
提交
git config
查詢和修改配置
git describe
通過里程碑直觀地顯示提交ID
git diff
差異比較
git difftool
調(diào)用圖形化差異比較工具
git fetch
獲取遠(yuǎn)程版本庫的提交
git format-patch
創(chuàng)建郵件格式的補丁文件。參見 git am?命令
git grep
文件內(nèi)容搜索定位工具
git gui
基于Tcl/Tk的圖形化工具,側(cè)重提交等操作
git help
幫助
git init
版本庫初始化
git init-db*
同義詞,等同于 git init
git log
顯示提交日志
git merge
分支合并
git mergetool
圖形化沖突解決
git mv
重命名
git pull
拉回遠(yuǎn)程版本庫的提交
git push
推送至遠(yuǎn)程版本庫
git rebase
分支變基
git rebase–interactive
交互式分支變基
git reflog
分支等引用變更記錄管理
git remote
遠(yuǎn)程版本庫管理
git repo-config*
同義詞,等同于 git config
git reset
重置改變分支“游標(biāo)”指向
git rev-parse
將各種引用表示法轉(zhuǎn)換為哈希值等
git revert
反轉(zhuǎn)提交
git rm
刪除文件
git show
顯示各種類型的對象
git stage*
同義詞,等同于 git add
git stash
保存和恢復(fù)進(jìn)度
git status
顯示工作區(qū)文件狀態(tài)
git tag
里程碑管理
2、對象庫操作相關(guān)命令
命令
簡要說明
git commit-tree
從樹對象創(chuàng)建提交
git hash-object
從標(biāo)準(zhǔn)輸入或文件計算哈希值或創(chuàng)建對象
git ls-files
顯示工作區(qū)和暫存區(qū)文件
git ls-tree
顯示樹對象包含的文件
git mktag
讀取標(biāo)準(zhǔn)輸入創(chuàng)建一個里程碑對象
git mktree
讀取標(biāo)準(zhǔn)輸入創(chuàng)建一個樹對象
git read-tree
讀取樹對象到暫存區(qū)
git update-index
工作區(qū)內(nèi)容注冊到暫存區(qū)及暫存區(qū)管理
git unpack-file
創(chuàng)建臨時文件包含指定 blob?的內(nèi)容
git write-tree
從暫存區(qū)創(chuàng)建一個樹對象
3、引用操作相關(guān)命令
命令
簡要說明
git check-ref-format
檢查引用名稱是否符合規(guī)范
git for-each-ref
引用迭代器,用于shell編程
git ls-remote
顯示遠(yuǎn)程版本庫的引用
git name-rev
將提交ID顯示為友好名稱
git peek-remote*
過時命令,請使用 git ls-remote
git rev-list
顯示版本范圍
git show-branch
顯示分支列表及拓?fù)潢P(guān)系
git show-ref
顯示本地引用
git symbolic-ref
顯示或者設(shè)置符號引用
git update-ref
更新引用的指向
git verify-tag
校驗 GPG?簽名的Tag
4、版本庫管理相關(guān)命令
命令
簡要說明
git count-objects
顯示松散對象的數(shù)量和磁盤占用
git filter-branch
版本庫重構(gòu)
git fsck
對象庫完整性檢查
git fsck-objects*
同義詞,等同于 git fsck
git gc
版本庫存儲優(yōu)化
git index-pack
從打包文件創(chuàng)建對應(yīng)的索引文件
git lost-found*
過時,請使用 git fsck –lost-found?命令
git pack-objects
從標(biāo)準(zhǔn)輸入讀入對象ID,打包到文件
git pack-redundant
查找多余的 pack?文件
git pack-refs
將引用打包到 .git/packed-refs?文件中
git prune
從對象庫刪除過期對象
git prune-packed
將已經(jīng)打包的松散對象刪除
git relink
為本地版本庫中相同的對象建立硬連接
git repack
將版本庫未打包的松散對象打包
git show-index
讀取包的索引文件,顯示打包文件中的內(nèi)容
git unpack-objects
從打包文件釋放文件
git verify-pack
校驗對象庫打包文件
5、數(shù)據(jù)傳輸相關(guān)命令
命令
簡要說明
git fetch-pack
執(zhí)行 git fetch?或 git pull 命令時在本地執(zhí)行此命令,用于從其他版本庫獲取缺失的對象
git receive-pack
執(zhí)行 git push?命令時在遠(yuǎn)程執(zhí)行的命令,用于接受推送的數(shù)據(jù)
git send-pack
執(zhí)行 git push?命令時在本地執(zhí)行的命令,用于向其他版本庫推送數(shù)據(jù)
git upload-archive
執(zhí)行 git archive –remote?命令基于遠(yuǎn)程版本庫創(chuàng)建歸檔時,遠(yuǎn)程版本庫執(zhí)行此命令傳送歸檔
git upload-pack
執(zhí)行 git fetch?或 git pull 命令時在遠(yuǎn)程執(zhí)行此命令,將對象打包、上傳
6、郵件相關(guān)命令
命令
簡要說明
git imap-send
將補丁通過 IMAP?發(fā)送
git mailinfo
從郵件導(dǎo)出提交說明和補丁
git mailsplit
將 mbox?或 Maildir 格式郵箱中郵件逐一提取為文件
git request-pull
創(chuàng)建包含提交間差異和執(zhí)行PULL操作地址的信息
git send-email
發(fā)送郵件
7、協(xié)議相關(guān)命令
命令
簡要說明
git daemon
實現(xiàn)Git協(xié)議
git http-backend
實現(xiàn)HTTP協(xié)議的CGI程序,支持智能HTTP協(xié)議
git instaweb
即時啟動瀏覽器通過 gitweb?瀏覽當(dāng)前版本庫
git shell
受限制的shell,提供僅執(zhí)行Git命令的SSH訪問
git update-server-info
更新啞協(xié)議需要的輔助文件
git http-fetch
通過HTTP協(xié)議獲取版本庫
git http-push
通過HTTP/DAV協(xié)議推送
git remote-ext
由Git命令調(diào)用,通過外部命令提供擴展協(xié)議支持
git remote-fd
由Git命令調(diào)用,使用文件描述符作為協(xié)議接口
git remote-ftp
由Git命令調(diào)用,提供對FTP協(xié)議的支持
git remote-ftps
由Git命令調(diào)用,提供對FTPS協(xié)議的支持
git remote-http
由Git命令調(diào)用,提供對HTTP協(xié)議的支持
git remote-https
由Git命令調(diào)用,提供對HTTPS協(xié)議的支持
git remote-testgit
協(xié)議擴展示例腳本
8、版本庫轉(zhuǎn)換和交互相關(guān)命令
命令
簡要說明
git archimport
導(dǎo)入Arch版本庫到Git
git bundle
提交打包和解包,以便在不同版本庫間傳遞
git cvsexportcommit
將Git的一個提交作為一個CVS檢出
git cvsimport
導(dǎo)入CVS版本庫到Git。或者使用 cvs2git
git cvsserver
Git的CVS協(xié)議模擬器,可供CVS命令訪問Git版本庫
git fast-export
將提交導(dǎo)出為 git-fast-import?格式
git fast-import
其他版本庫遷移至Git的通用工具
git svn
Git?作為前端操作 Subversion
9、合并相關(guān)的輔助命令
命令
簡要說明
git merge-base
供其他腳本調(diào)用,找到兩個或多個提交最近的共同祖先
git merge-file
針對文件的兩個不同版本執(zhí)行三向文件合并
git merge-index
對index中的沖突文件調(diào)用指定的沖突解決工具
git merge-octopus
合并兩個以上分支。參見 git merge?的octopus合并策略
git merge-one-file
由 git merge-index?調(diào)用的標(biāo)準(zhǔn)輔助程序
git merge-ours
合并使用本地版本,拋棄他人版本。參見 git merge?的ours合并策略
git merge-recursive
針對兩個分支的三向合并。參見 git merge?的recursive合并策略
git merge-resolve
針對兩個分支的三向合并。參見 git merge?的resolve合并策略
git merge-subtree
子樹合并。參見 git merge?的 subtree 合并策略
git merge-tree
顯式三向合并結(jié)果,不改變暫存區(qū)
git fmt-merge-msg
供執(zhí)行合并操作的腳本調(diào)用,用于創(chuàng)建一個合并提交說明
git rerere
重用所記錄的沖突解決方案
10、 雜項
命令
簡要說明
git bisect–helper
由 git bisect?命令調(diào)用,確認(rèn)二分查找進(jìn)度
git check-attr
顯示某個文件是否設(shè)置了某個屬性
git checkout-index
從暫存區(qū)拷貝文件至工作區(qū)
git cherry
查找沒有合并到上游的提交
git diff-files
比較暫存區(qū)和工作區(qū),相當(dāng)于 git diff –raw
git diff-index
比較暫存區(qū)和版本庫,相當(dāng)于 git diff –cached –raw
git diff-tree
比較兩個樹對象,相當(dāng)于 git diff –raw A B
git difftool–helper
由 git difftool?命令調(diào)用,默認(rèn)要使用的差異比較工具
git get-tar-commit-id
從 git archive?創(chuàng)建的 tar 包中提取提交ID
git gui–askpass
命令 git gui?的獲取用戶口令輸入界面
git notes
提交評論管理
git patch-id
補丁過濾行號和空白字符后生成補丁唯一ID
git quiltimport
將Quilt補丁列表應(yīng)用到當(dāng)前分支
git replace
提交替換
git shortlog
對 git log?的匯總輸出,適合于產(chǎn)品發(fā)布說明
git stripspace
刪除空行,供其他腳本調(diào)用
git submodule
子模組管理
git tar-tree
過時命令,請使用 git archive
git var
顯示 Git?環(huán)境變量
git web–browse
啟動瀏覽器以查看目錄或文件
git whatchanged
顯示提交歷史及每次提交的改動
git-mergetool–lib
包含于其他腳本中,提供合并/差異比較工具的選擇和執(zhí)行
git-parse-remote
包含于其他腳本中,提供操作遠(yuǎn)程版本庫的函數(shù)
git-sh-setup
包含于其他腳本中,提供 shell?編程的函數(shù)庫