初始化配置
C代碼 收藏代碼
配置使用git倉庫的人員姓名
git config --global user.name "Your Name Comes Here"
配置使用git倉庫的人員email
git config --global user.email you@yourdomain.example.com
配置到緩存 默認(rèn)15分鐘
git config --global credential.helper cache
修改緩存時(shí)間
git config --global credential.helper 'cache --timeout=3600'
git config --global color.ui true
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global core.editor "mate -w" # 設(shè)置Editor使用textmate
git config -1 #列舉所有配置
用戶的git配置文件~/.gitconfig
查看、添加、提交、刪除、找回,重置修改文件
C代碼 收藏代碼
git help <command> # 顯示command的help
git show # 顯示某次提交的內(nèi)容
git show $id
git co -- <file> # 拋棄工作區(qū)修改
git co . # 拋棄工作區(qū)修改
git add <file> # 將工作文件修改提交到本地暫存區(qū)
git add . # 將所有修改過的工作文件提交暫存區(qū)
git rm <file> # 從版本庫中刪除文件
git rm <file> --cached # 從版本庫中刪除文件,但不刪除文件
git reset <file> # 從暫存區(qū)恢復(fù)到工作文件
git reset -- . # 從暫存區(qū)恢復(fù)到工作文件
git reset --hard # 恢復(fù)最近一次提交過的狀態(tài),即放棄上次提交后的所有本次修改
git ci <file>
git ci .
git ci -a # 將git add, git rm和git ci等操作都合并在一起做
git ci -am "some comments"
git ci --amend # 修改最后一次提交記錄
git revert <$id> # 恢復(fù)某次提交的狀態(tài),恢復(fù)動作本身也創(chuàng)建了一次提交對象
git revert HEAD # 恢復(fù)最后一次提交的狀態(tài)
查看文件diff
git diff <file> # 比較當(dāng)前文件和暫存區(qū)文件差異
git diff
git diff <$id1> <$id2> # 比較兩次提交之間的差異
git diff <branch1>..<branch2> # 在兩個(gè)分支之間比較
git diff --staged # 比較暫存區(qū)和版本庫差異
git diff --cached # 比較暫存區(qū)和版本庫差異
git diff --stat # 僅僅比較統(tǒng)計(jì)信息
查看提交記錄
git log
git log <file> # 查看該文件每次提交記錄
git log -p <file> # 查看每次詳細(xì)修改內(nèi)容的diff
git log -p -2 # 查看最近兩次詳細(xì)修改內(nèi)容的diff
git log --stat #查看提交統(tǒng)計(jì)信息
tig
Mac上可以使用tig代替diff和log,brew install tig
初始化一個(gè)版本倉庫
git init
Clone遠(yuǎn)程版本庫
git clone git@xbc.me:wordpress.git
添加遠(yuǎn)程版本庫origin,語法為 git remote add [shortname] [url]
git remote add origin git@xbc.me:wordpress.git
查看遠(yuǎn)程倉庫
git remote -v
添加當(dāng)前修改的文件到暫存區(qū)
git add .
如果你自動追蹤文件,包括你已經(jīng)手動刪除的,狀態(tài)為Deleted的文件
git add -u
提交你的修改
git commit –m "你的注釋"
推送你的更新到遠(yuǎn)程服務(wù)器,語法為 git push [遠(yuǎn)程名] [本地分支]:[遠(yuǎn)程分支]
git push origin master
查看文件狀態(tài)
git status
跟蹤新文件
git add readme.txt
從當(dāng)前跟蹤列表移除文件,并完全刪除
git rm readme.txt
僅在暫存區(qū)刪除,保留文件在當(dāng)前目錄,不再跟蹤
git rm –cached readme.txt
重命名文件
git mv reademe.txt readme
查看提交的歷史記錄
git log
修改最后一次提交注釋的,利用–amend參數(shù)
git commit --amend
忘記提交某些修改,下面的三條命令只會得到一個(gè)提交。
git commit –m "add readme.txt"
git add readme_forgotten
git commit –amend
假設(shè)你已經(jīng)使用git add .,將修改過的文件a、b加到暫存區(qū)
現(xiàn)在你只想提交a文件,不想提交b文件,應(yīng)該這樣
git reset HEAD b
取消對文件的修改
git checkout –- readme.txt
查看、切換、創(chuàng)建和刪除分支
C代碼 收藏代碼
git br -r # 查看遠(yuǎn)程分支
git br <new_branch> # 創(chuàng)建新的分支
git br -v # 查看各個(gè)分支最后提交信息
git br --merged # 查看已經(jīng)被合并到當(dāng)前分支的分支
git br --no-merged # 查看尚未被合并到當(dāng)前分支的分支
git co <branch> # 切換到某個(gè)分支
git co -b <new_branch> # 創(chuàng)建新的分支,并且切換過去
git co -b <new_branch> <branch> # 基于branch創(chuàng)建新的new_branch
git co $id # 把某次歷史提交記錄checkout出來,但無分支信息,切換到其他分支會自動刪除
git co $id -b <new_branch> # 把某次歷史提交記錄checkout出來,創(chuàng)建成一個(gè)分支
git br -d <branch> # 刪除某個(gè)分支
git br -D <branch> # 強(qiáng)制刪除某個(gè)分支 (未被合并的分支被刪除的時(shí)候需要強(qiáng)制)
分支合并和rebase
C代碼 收藏代碼
git merge <branch> # 將branch分支合并到當(dāng)前分支
git merge origin/master --no-ff # 不要Fast-Foward合并,這樣可以生成merge提交
git rebase master <branch> # 將master rebase到branch,相當(dāng)于:
git co <branch> && git rebase master && git co master && git merge <branch>
Git補(bǔ)丁管理(方便在多臺機(jī)器上開發(fā)同步時(shí)用)
git diff > ../sync.patch # 生成補(bǔ)丁
git apply ../sync.patch # 打補(bǔ)丁
git apply --check ../sync.patch #測試補(bǔ)丁能否成功
Git暫存管理
git stash # 暫存
git stash list # 列所有stash
git stash apply # 恢復(fù)暫存的內(nèi)容
git stash drop # 刪除暫存區(qū)
Git遠(yuǎn)程分支管理
C代碼 收藏代碼
git pull # 抓取遠(yuǎn)程倉庫所有分支更新并合并到本地
git pull --no-ff # 抓取遠(yuǎn)程倉庫所有分支更新并合并到本地,不要快進(jìn)合并
git fetch origin # 抓取遠(yuǎn)程倉庫更新
git merge origin/master # 將遠(yuǎn)程主分支合并到本地當(dāng)前分支
git co --track origin/branch # 跟蹤某個(gè)遠(yuǎn)程分支創(chuàng)建相應(yīng)的本地分支
git co -b <local_branch> origin/<remote_branch> # 基于遠(yuǎn)程分支創(chuàng)建本地分支,功能同上
git push # push所有分支
git push origin master # 將本地主分支推到遠(yuǎn)程主分支
git push -u origin master # 將本地主分支推到遠(yuǎn)程(如無遠(yuǎn)程主分支則創(chuàng)建,用于初始化遠(yuǎn)程倉庫)
git push origin <local_branch> # 創(chuàng)建遠(yuǎn)程分支, origin是遠(yuǎn)程倉庫名
git push origin <local_branch>:<remote_branch> # 創(chuàng)建遠(yuǎn)程分支
git push origin :<remote_branch> #先刪除本地分支(git br -d <branch>),然后再push刪除遠(yuǎn)程分支
基本的分支管理
創(chuàng)建一個(gè)分支
git branch iss53
切換工作目錄到iss53
git chekcout iss53
將上面的命令合在一起,創(chuàng)建iss53分支并切換到iss53
git chekcout –b iss53
合并iss53分支,當(dāng)前工作目錄為master
git merge iss53
合并完成后,沒有出現(xiàn)沖突,刪除iss53分支
git branch –d iss53
拉去遠(yuǎn)程倉庫的數(shù)據(jù),語法為 git fetch [remote-name]
git fetch
fetch 會拉去最新的遠(yuǎn)程倉庫數(shù)據(jù),但不會自動到當(dāng)前目錄下,要自動合并
git pull
查看遠(yuǎn)程倉庫的信息
git remote show origin
建立本地的dev分支追蹤遠(yuǎn)程倉庫的develop分支
git checkout –b dev origin/develop
Git遠(yuǎn)程倉庫管理
git remote -v # 查看遠(yuǎn)程服務(wù)器地址和倉庫名稱
git remote show origin # 查看遠(yuǎn)程服務(wù)器倉庫狀態(tài)
git remote add origin git@ github:robbin/robbin_site.git # 添加遠(yuǎn)程倉庫地址
git remote set-url origin git@ github.com:robbin/robbin_site.git # 設(shè)置遠(yuǎn)程倉庫地址(用于修改遠(yuǎn)程倉庫地址)
git remote rm <repository> # 刪除遠(yuǎn)程倉庫
創(chuàng)建遠(yuǎn)程倉庫
git clone --bare robbin_site robbin_site.git # 用帶版本的項(xiàng)目創(chuàng)建純版本倉庫
scp -r my_project.git git@ git.csdn.net:~ # 將純倉庫上傳到服務(wù)器上
mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服務(wù)器創(chuàng)建純倉庫
git remote add origin git@ github.com:robbin/robbin_site.git # 設(shè)置遠(yuǎn)程倉庫地址
git push -u origin master # 客戶端首次提交
git push -u origin develop # 首次將本地develop分支提交到遠(yuǎn)程develop分支,并且track
git remote set-head origin master # 設(shè)置遠(yuǎn)程倉庫的HEAD指向master分支
也可以命令設(shè)置跟蹤遠(yuǎn)程庫和本地庫
git branch --set-upstream master origin/master
git branch --set-upstream develop origin/develop