Git代碼版本庫(kù)使用方法參考-新建-配置本地+遠(yuǎn)程倉(cāng)庫(kù)

git客戶端(本地倉(cāng)庫(kù))的一些操作

1.設(shè)置賬戶(需要和github賬戶設(shè)置一致)

git config --global user.name xxx
git config --global user.email xxx@foxmail.com

2.查看設(shè)置

git config --list
user.name=xxx
user.email=xxx@foxmail.com

3.創(chuàng)建git本地倉(cāng)庫(kù)

git init
此時(shí)會(huì)出現(xiàn)提示 : inialized empty Git repository in d://com/liu/.git

4.查看git狀態(tài)

git status
一般來說會(huì)顯示需要提交的文件(uncommited)和未追蹤的文件(untracked)
uncommited:已有的势誊,剛被修改尚未提交的
untracked:原先沒有的热幔,新建的 

5.添加git文件到暫存區(qū)(需要和版本庫(kù)區(qū)分)

git add <name>

6.git提交文件

git commit -m "add a function in test.java"
-m表示注釋,為提交時(shí)的說明,必須要有国夜!

7.git刪除文件(夾)

git rm test.txt          //刪除文件
git rm -r filebook     //刪除文件夾
git rm和直接刪除的區(qū)別在于git rm會(huì)將此文件的操作記錄刪除鹏控,而直接刪除僅僅是刪除了物理文件,沒有刪除和此文件相關(guān)的記錄枢纠。git rm后會(huì)在版本庫(kù)產(chǎn)生區(qū)別(有操作日志)像街,而直接刪除沒有。
可以用下面兩種操作在版本庫(kù)中刪除文件:
git rm test.txt   =>    git commit -m 'delete a file'
rm test.txt        =>    git commit -am 'delete a file'
注意:命令git rm用于刪除一個(gè)文件晋渺。如果一個(gè)文件已經(jīng)被提交到版本庫(kù)镰绎,那么你永遠(yuǎn)不用擔(dān)心誤刪,但是要小心木西,你只能恢復(fù)文件到最新版本畴栖,你會(huì)丟失最近一次提交后你修改的內(nèi)容。

8.git操作日志

git log --decorate --graph --oneline --all       #顯示當(dāng)前及之前的版本號(hào)
git log --pretty=oneline   #將版本歷史顯示為一行八千,歷史版本號(hào)全部顯示
git log --pretty=oneline --abbrev-commit  #將版本歷史顯示為一行吗讶,歷史版本號(hào)部分顯示
git log --graph      #查看分支合并圖

9.版本回退

執(zhí)行版本退回后,本地工作區(qū)的內(nèi)容會(huì)自動(dòng)和回退到的版本庫(kù)版本的內(nèi)容保持同步
git reset --hard HEAD^   回退到上一個(gè)版本
git reset --hard HEAD^^ 回退到上上個(gè)版本恋捆,以此類推照皆,一次提交即為一個(gè)版本
git reset --hard e9efa77  回退到 e9efa77  版本

10.git還原操作

丟棄工作區(qū)的操作,但不會(huì)丟失暫存區(qū)的操作(add操作能將更改添加到暫存區(qū))鸠信,實(shí)際上就是用版本庫(kù)里的版本替換工作區(qū)的版本纵寝,無論工作區(qū)是修改還是刪除,都可以“一鍵還原”

git checkout -- readme.txt

11.git暫存區(qū)撤銷操作

工作區(qū)修改了文件,而且執(zhí)行了add爽茴,但還沒執(zhí)行commit葬凳,暫存區(qū)還是可以撤銷的

git reset HEAD readme.txt

備注:git reset命令既可以回退版本,也可以把暫存區(qū)的修改回退到工作區(qū)室奏。當(dāng)我們用HEAD時(shí)火焰,表示最新的版本。

二.遠(yuǎn)程倉(cāng)庫(kù) github/gitee協(xié)同使用(git代碼托管服務(wù)器)

和GitHub相比胧沫,碼云(Gitee)也提供免費(fèi)的Git倉(cāng)庫(kù)昌简。此外,還集成了代碼質(zhì)量檢測(cè)绒怨、項(xiàng)目演示等功能纯赎。對(duì)于團(tuán)隊(duì)協(xié)作開發(fā),碼云還提供了項(xiàng)目管理南蹂、代碼托管犬金、文檔管理的服務(wù),5人以下小團(tuán)隊(duì)免費(fèi)六剥。

1.配置遠(yuǎn)程倉(cāng)庫(kù)免密登陸

(1)在用戶主目錄下晚顷,看看有沒有.ssh目錄,如果有疗疟,再看看這個(gè)目錄下有沒有id_rsa和id_rsa.pub這兩個(gè)文件该默,如果已經(jīng)有了,可直接跳到下一步策彤。如果沒有栓袖,打開Shell(Windows下打開Git Bash)命令腳本,創(chuàng)建SSH Key锅锨。

ssh-keygen -t rsa -C "xxx@foxmail.com"  #請(qǐng)用自己的郵箱

備注:一路回車叽赊,執(zhí)行生成 id_rsa 私鑰 和 id_rsa.pub 公鑰,Windows用戶在git bash中輸入上述指令

(2)獲得key的內(nèi)容必搞,復(fù)制下來必指,添加到gitHub的SSH key中
windows位置:C:\Users\用戶名.ssh\id_rsa.pub
Linux位置:cat ~/.ssh/id_rsa.pub

ssh -T git@github.com   #驗(yàn)證key,根據(jù)提示輸入yes恕洲,添加為信任主機(jī)塔橡,或者:
ssh -T git@git.oschina.net #驗(yàn)證key

2.添加遠(yuǎn)程倉(cāng)庫(kù)

git remote add origin https://github.com/xxx/LearnGit.git  #https方式

(ssh方式)
此處可以為https地址也可以是ssh地址,orign為設(shè)置的遠(yuǎn)程倉(cāng)庫(kù)的別名霜第,強(qiáng)烈建議使用ssh方式葛家,因?yàn)閔ttps方式每次都要輸入用戶名和密碼
如果需要修改傳輸協(xié)議:

git remote rm <遠(yuǎn)程主機(jī)名>(刪除遠(yuǎn)程倉(cāng)庫(kù))

設(shè)置傳輸方式和目標(biāo)遠(yuǎn)程倉(cāng)庫(kù)

git push -u <遠(yuǎn)程主機(jī)名> <本地分支名>

碼云的添加遠(yuǎn)程倉(cāng)庫(kù)方法:

git remote add origin git@gitee.com:xxx/LearnGit.git #ssh方式

如果git remote add失敗,并報(bào)錯(cuò):fatal: remote origin already exists.
說明本地庫(kù)已經(jīng)關(guān)聯(lián)了一個(gè)名叫origin的遠(yuǎn)程庫(kù)泌类,此時(shí)癞谒,可以先查看遠(yuǎn)程庫(kù)信息;

 git remote -v #查看遠(yuǎn)程庫(kù)信息。
origin  git@github.com:xxx/LearnGit.git (fetch)
origin  git@github.com:xxx/LearnGit.git (push)

表示本地庫(kù)已經(jīng)關(guān)聯(lián)了Github上的origin遠(yuǎn)程庫(kù)弹砚,需要先刪除已有的Github庫(kù):

git remote remove origin #刪除origin庫(kù)

再關(guān)聯(lián)碼云的遠(yuǎn)程庫(kù)(注意路徑中需要填寫正確的用戶名):

git remote add gitee git@gitee.com:xxx/LearnGit.git #關(guān)聯(lián)庫(kù)

因?yàn)間it本身是分布式版本控制系統(tǒng)双仍,可以同步到另外一個(gè)遠(yuǎn)程庫(kù),當(dāng)然也可以同步到另外兩個(gè)遠(yuǎn)程庫(kù)桌吃,所以一個(gè)本地庫(kù)可以既關(guān)聯(lián)GitHub朱沃,又關(guān)聯(lián)碼云!
使用多個(gè)遠(yuǎn)程庫(kù)時(shí)茅诱,要注意git給遠(yuǎn)程庫(kù)起的默認(rèn)名稱是origin逗物,如果有多個(gè)遠(yuǎn)程庫(kù),我們需要用不同的名稱來標(biāo)識(shí)不同的遠(yuǎn)程庫(kù)瑟俭。仍然以learngit本地庫(kù)為例翎卓,先刪除已關(guān)聯(lián)的名為origin的遠(yuǎn)程庫(kù):

git remote rm origin #刪除origin遠(yuǎn)程庫(kù)

然后,先關(guān)聯(lián)GitHub的遠(yuǎn)程庫(kù):

git remote add github git@github.com:xxx/LearnGit.git #關(guān)聯(lián)github遠(yuǎn)程庫(kù)

注意摆寄,遠(yuǎn)程庫(kù)的名稱叫g(shù)ithub莲祸,不叫origin了。
接著椭迎,再關(guān)聯(lián)碼云的遠(yuǎn)程庫(kù):

git remote add gitee git@gitee.com:xxx/LearnGit.git #關(guān)聯(lián)gitee遠(yuǎn)程庫(kù)

同樣注意,遠(yuǎn)程庫(kù)的名稱叫g(shù)itee田盈,不叫origin畜号。
現(xiàn)在,我們用git remote -v查看遠(yuǎn)程庫(kù)信息允瞧,可以看到兩個(gè)遠(yuǎn)程庫(kù):

gitee   git@gitee.com:xxx/LearnGit.git (fetch)
gitee   git@gitee.com:xxx/LearnGit.git (push)
github  git@github.com:xxx/LearnGit.git (fetch)
github  git@github.com:xxx/LearnGit.git (push)

如果要推送到GitHub简软,使用命令:

git push github master #把master分支推送到名為github的遠(yuǎn)程庫(kù)上。

如果要推送到碼云述暂,使用命令:

git push gitee master #把master分支推送到名為gitee的遠(yuǎn)程庫(kù)上痹升。

這樣一來,本地庫(kù)就可以同時(shí)與多個(gè)遠(yuǎn)程庫(kù)互相同步:

3.查看遠(yuǎn)程倉(cāng)庫(kù)及傳輸協(xié)議

git remote
git remote -v  查看名稱和詳細(xì)地址

4.刪除遠(yuǎn)程倉(cāng)庫(kù)

git remote remove <遠(yuǎn)程主機(jī)名>

5.推送本地分支到遠(yuǎn)程倉(cāng)庫(kù)

git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>
如果省略遠(yuǎn)程分支名畦韭,則表示將本地分支推送與之存在“追蹤關(guān)系”的遠(yuǎn)程分支(通常兩者同名)疼蛾,如果該遠(yuǎn)程分支不存在,則會(huì)被新建艺配。
git push origin <本地分支名>
git push origin master
如果當(dāng)前分支與多個(gè)主機(jī)存在追蹤關(guān)系察郁,則可以使用-u選項(xiàng)指定一個(gè)默認(rèn)主機(jī),這樣以后就可以不加任何參數(shù)使用git push转唉。
git push -u <遠(yuǎn)程主機(jī)名> <本地分支名>  例如:git push -u origin master

6.將遠(yuǎn)程倉(cāng)庫(kù)克隆為本地倉(cāng)庫(kù)

git clone git@github.com:xxx/LearnGit.git #將遠(yuǎn)程倉(cāng)庫(kù)克隆為本地倉(cāng)庫(kù)

注意:
(1)不能使用別名
(2)默認(rèn)情況下皮钠,從遠(yuǎn)程clone到本地的庫(kù)只能看到master分支,如果要將遠(yuǎn)程的分支同步到本地:

git checkout -b <本地分支名> <遠(yuǎn)程主機(jī)名>/<遠(yuǎn)程分支名> #將遠(yuǎn)程的分支同步到本地

前提是遠(yuǎn)程<遠(yuǎn)程主機(jī)名>必須存在名為<遠(yuǎn)程分支名>的分支赠法,而且<本地分支名>和<遠(yuǎn)程分支名>最好一致麦轰。

7.本地倉(cāng)庫(kù)更新

將遠(yuǎn)程存儲(chǔ)庫(kù)中的更改合并到當(dāng)前分支中。在默認(rèn)模式下,git pull是git fetch后跟git merge FETCH_HEAD的縮寫款侵。更準(zhǔn)確地說末荐,git pull使用給定的參數(shù)運(yùn)行g(shù)it fetch,并調(diào)用git merge將檢索到的分支頭合并到當(dāng)前分支中喳坠。 使用--rebase鞠评,它運(yùn)行g(shù)it rebase而不是git merge。
以下是一些示例:

git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>

比如壕鹉,要取回origin主機(jī)的next分支剃幌,與本地的master分支合并,需要寫成下面這樣 -

git pull origin next:master #合并分支 遠(yuǎn)程origin主機(jī)的next分支與本地master分支合并

如果遠(yuǎn)程分支(next)要與當(dāng)前分支合并晾浴,則冒號(hào)后面的部分可以省略负乡。上面命令可以簡(jiǎn)寫為:

git pull origin next

上面命令表示,取回origin/next分支脊凰,再與當(dāng)前分支合并抖棘。實(shí)質(zhì)上,這等同于先做git fetch狸涌,再執(zhí)行g(shù)it merge切省。

git fetch origin  =>  git merge origin/next

在某些場(chǎng)合,Git會(huì)自動(dòng)在本地分支與遠(yuǎn)程分支之間帕胆,建立一種追蹤關(guān)系(tracking)朝捆。比如,在git clone的時(shí)候懒豹,所有本地分支默認(rèn)與遠(yuǎn)程主機(jī)的同名分支芙盘,建立追蹤關(guān)系,也就是說脸秽,本地的master分支自動(dòng)“追蹤”origin/master分支儒老。Git也允許手動(dòng)建立追蹤關(guān)系:

git branch --set-upstream-to=遠(yuǎn)程主機(jī)名/<遠(yuǎn)程分支名>  <本地分支名>

比如git branch --set-upstream-to=origin/next master,指定master分支追蹤origin/next分支记餐。

git pull origin

上面命令表示驮樊,本地當(dāng)前分支自動(dòng)與對(duì)應(yīng)的origin主機(jī)”追蹤分支”(remote-tracking branch)進(jìn)行合并。
如果當(dāng)前分支只有一個(gè)追蹤分支片酝,連遠(yuǎn)程主機(jī)名都可以省略巩剖。

git pull

上面命令表示,當(dāng)前分支自動(dòng)與唯一一個(gè)追蹤分支進(jìn)行合并钠怯。
如果合并需要采用rebase模式佳魔,可以使用–rebase選項(xiàng)。

git pull --rebase <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>

git fetch和git pull的區(qū)別
(1)git fetch:相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地晦炊,不會(huì)自動(dòng)合并鞠鲜。
git fetch origin mastergit log -p master..origin/mastergit merge origin/master
以上命令的含義:
首先從遠(yuǎn)程的origin的master主分支下載最新的版本到origin/master分支上
然后比較本地的master分支和origin/master分支的差別
最后進(jìn)行合并
上述過程其實(shí)可以用以下更清晰的方式來進(jìn)行:

git fetch origin master:tmpgit diff tmp git merge tmp
git pull:相當(dāng)于是從遠(yuǎn)程獲取最新版本并merge到本地
git pull origin master #相當(dāng)于git fetch 和 git merge

在實(shí)際使用中宁脊,git fetch更安全一些,因?yàn)樵趍erge前贤姆,可以查看更新情況榆苞,然后再?zèng)Q定是否合并。

8.查看分支

git branch

9.創(chuàng)建分支

git branch <name>

10.創(chuàng)建并切換到分支

git checkout -b <name>
備注:git checkout命令加上-b參數(shù)表示創(chuàng)建并切換霞捡,相當(dāng)于以下兩條命令
git branch <name>git checkout <name>

11.切換分支

git checkout <name>
切換分支后坐漏,在git bash中顯示為綠色

12.刪除分支

git branch -d <name>
如果分支沒有合并,刪除分支就表示會(huì)丟失修改碧信,此時(shí)git無法使用-d刪除赊琳,可使用-D強(qiáng)行刪除
git branch -D <name>

13.合并分支

git合并默認(rèn)使用Fast forward模式,一旦刪除分支砰碴,會(huì)丟掉分支信息躏筏,也就看不出來曾經(jīng)做過合并
git merge <name>     #基于當(dāng)前分支,合并另外一個(gè)分支呈枉,前提需要保證分支之間不沖突
如果強(qiáng)制禁用Fast forward模式趁尼,即普通模式,Git就會(huì)在merge時(shí)生成一個(gè)新的commit
git merge --no-ff -m "there is a comment" <name>
因?yàn)楸敬魏喜⒁獎(jiǎng)?chuàng)建一個(gè)新的commit猖辫,所以加上-m參數(shù)酥泞,把commit描述寫進(jìn)去。
工作中啃憎,肯定需要不管有沒有分支被刪除婶博,都要從分支歷史上就查看所有的歷史分支信息,所以要使用普通模式合并荧飞。

14.創(chuàng)建tag

(1)git tag <tagname>   #默認(rèn)在HEAD版本
(2)對(duì)指定的commit版本創(chuàng)建tag
需要先找到歷史commit的id
git log --pretty=oneline --abbrev-commit
然后對(duì)指定的commit創(chuàng)建tag:
git tag <tagname> <commitid>
(3)創(chuàng)建帶有說明的tag,用-a指定標(biāo)簽名名党,-m指定說明文字
git tag -a <tagname> -m "there is a tag description" [<commitid>]
(4)通過-s用私鑰簽名一個(gè)標(biāo)簽叹阔,簽名采用PGP簽名
git tag -s <tagname> -m "there is a tag description" [<commitid>]
必須首先安裝gpg(GnuPG),如果沒有找到gpg传睹,或者沒有g(shù)pg密鑰對(duì)耳幢,就會(huì)報(bào)錯(cuò),參考GnuPG幫助文檔配置Key欧啤。

15.查看tag

git tag    #顯示的tag不是按時(shí)間順序排列睛藻,而是按字母順序排列
如果想查看tag和commit的對(duì)應(yīng)關(guān)系,可以用
git log --pretty=oneline --abbrev-commit
如果想查看tag的的詳細(xì)情況邢隧,可以用
git show <tagname>

16.刪除tag

創(chuàng)建的標(biāo)簽都只存儲(chǔ)在本地店印,不會(huì)自動(dòng)推送到遠(yuǎn)程。所以倒慧,打錯(cuò)的標(biāo)簽可以在本地安全刪除:
git tag -d <tagname>
如果標(biāo)簽已經(jīng)推送到遠(yuǎn)程按摘,要?jiǎng)h除遠(yuǎn)程標(biāo)簽就麻煩一點(diǎn):
(1)先本地刪除:git tag -d <tagname>
(2)再遠(yuǎn)程刪除:git push origin :refs/tags/<tagname>

17.推送標(biāo)簽至遠(yuǎn)程

git push origin <tagname>
或者包券,一次性推送全部尚未推送到遠(yuǎn)程的本地標(biāo)簽:
git push origin --tags

18.現(xiàn)場(chǎng)的保存與恢復(fù)

git stash      #將目前的工作現(xiàn)場(chǎng)保存
git stash list   #查看所有保存的工作現(xiàn)場(chǎng)
工作現(xiàn)場(chǎng)還在,Git把stash內(nèi)容存在某個(gè)地方了炫贤,但是需要恢復(fù)一下溅固,有兩個(gè)辦法:
一是用git stash apply stash@{0}恢復(fù),但是恢復(fù)后兰珍,stash內(nèi)容并不刪除侍郭,你需要用git stash drop stash@{0}來刪除;
另一種方式是用git stash pop掠河,恢復(fù)的同時(shí)把stash內(nèi)容也刪了亮元,這種方式省時(shí)省力
注意點(diǎn):
(1)如果在分支下新建文件,而尚未執(zhí)行add操作口柳,stash無法將新文件納入保存的現(xiàn)場(chǎng)苹粟,因?yàn)閟tash只對(duì)被修改的被追蹤的文件和暫存的變更有效,對(duì)于新文件必須先執(zhí)行add跃闹。
(2)如果修改分支下的已被追蹤的文件嵌削,不管有沒有對(duì)修改的文件進(jìn)行add操作,如果執(zhí)行stash望艺,所有修改會(huì)被納入保存的現(xiàn)場(chǎng)苛秕,而文件會(huì)恢復(fù)成修改前的狀態(tài)≌夷恢復(fù)現(xiàn)場(chǎng)后艇劫,文件又呈現(xiàn)被修改后的狀態(tài)。特別的是惩激,如果修改的文件在stash前已經(jīng)被add了店煞,恢復(fù)現(xiàn)場(chǎng)后,暫存區(qū)的內(nèi)容就會(huì)清空风钻,相當(dāng)于這個(gè)文件從未被add一樣顷蟀。

19.設(shè)置Git UI顏色

讓Git顯示顏色,會(huì)讓命令輸出看起來更醒目
git config --global color.ui true

20.忽略特殊文件

(1)在Git工作區(qū)的根目錄下創(chuàng)建一個(gè)特殊的.gitignore文件骡技,然后把要忽略的文件名填進(jìn)去鸣个,Git就會(huì)自動(dòng)忽略這些文件。不需要從頭寫.gitignore文件布朦,GitHub已經(jīng)為我們準(zhǔn)備了各種配置文件囤萤,只需要組合一下就可以使用了。所有配置文件可以直接在線瀏覽:https://github.com/github/gitignore
忽略文件的原則是:
忽略操作系統(tǒng)自動(dòng)生成的文件是趴,比如縮略圖等涛舍;
忽略編譯生成的中間文件、可執(zhí)行文件等唆途,也就是如果一個(gè)文件是通過另一個(gè)文件自動(dòng)生成的做盅,那自動(dòng)生成的文件就沒必要放進(jìn)版本庫(kù)缤削,比如Java編譯產(chǎn)生的.class文件;
忽略你自己的帶有敏感信息的配置文件吹榴,比如存放口令的配置文件亭敢。
比如一個(gè)完成的.gitignore文件,內(nèi)容如下:
------------------------------
# Windows:Thumbs.dbehthumbs.dbDesktop.ini

# Python:*.py[cod]*.so*.egg*.egg-infodistbuild
-------------------------------
(2)把.gitignore也提交到Git
git add .gitignore
git commit -m "there is a description"
就完成了图筹!當(dāng)然檢驗(yàn).gitignore的標(biāo)準(zhǔn)是git status命令是不是顯示working tree clean帅刀。
使用Windows的注意:如果在資源管理器里新建一個(gè).gitignore文件,系統(tǒng)會(huì)非常弱智地提示必須輸入文件名远剩,但是在文本編輯器里“保存”或者“另存為”就可以把文件保存為.gitignore了扣溺。

(3)如果確實(shí)想要添加已經(jīng)被.gitignore忽略的文件,可以用-f強(qiáng)制添加到Git
git add -f test.class

(4)懷疑.gitignore寫的有問題瓜晤,需要查找哪個(gè)規(guī)則寫錯(cuò)了锥余,可以用git check-ignore命令檢查:
git check-ignore -v App.class.gitignore:3:*.class    App.class
表示.gitignore的第3行規(guī)則忽略了App.class這個(gè)文件,于是我們就可以知道應(yīng)該修訂哪個(gè)規(guī)則痢掠。

21.為命令配置別名

(1)命令可以簡(jiǎn)寫驱犹,用git st表示git status,再比如用co表示checkout足画、ci表示commit雄驹、br表示branch:
git config --global alias.co checkoutgit config --global alias.ci commitgit config --global alias.br branch
以后提交就可以簡(jiǎn)寫成:
git ci -m "there is a description"
--global參數(shù)是全局參數(shù),也就是這些命令在這臺(tái)電腦的所有Git倉(cāng)庫(kù)下都有用淹辞。

(2)命令git reset HEAD <filename>可以撤銷暫存區(qū)的修改(unstage)医舆,重新放回工作區(qū)。既然是一個(gè)unstage操作象缀,就可以配置一個(gè)unstage別名:
git config --global alias.unstage 'reset HEAD'
就可以簡(jiǎn)化命令:
git unstage test.py   =   git reset HEAD test.py

(3)配置一個(gè)git last蔬将,讓其顯示最后一次提交信息:
git config --global alias.last 'log -1'
這樣,用git last就能顯示最近一次的提交:
git lastcommit 015851cbe2902bf01fbba198af5d6705dc0e03ac (HEAD -> dev)
Author: xxx <xxx@foxmail.com>
Date:   Mon Apr 23 13:52:44 2018 +0800
    add git ignore list
(4)還有把lg配置成了:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
來看看git lg的效果:

22.修改配置文件

配置Git的時(shí)候央星,加上--global是針對(duì)當(dāng)前用戶起作用的霞怀,如果不加,那只針對(duì)當(dāng)前的倉(cāng)庫(kù)起作用等曼。
每個(gè)倉(cāng)庫(kù)的Git配置文件都放在.git/config文件中:
cat .git/config
-----------------------------------------------------------------------------
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[branch "master"]
[branch "dev"]
[remote "github"]
        url = git@github.com:xxx/LearnGit.git
        fetch = +refs/heads/*:refs/remotes/github/*
[remote "gitee"]
        url = git@gitee.com:xxx/LearnGit.git
        fetch = +refs/heads/*:refs/remotes/gitee/*
-----------------------------------------------------------------------------

當(dāng)前用戶的Git配置文件

放在用戶主目錄下的一個(gè)隱藏文件.gitconfig中:

-----------------------------------------------------------------------------
[user]
    name = xxx
    email = xxx@foxmail.com
[gpg]
    program = C:\\Program Files (x86)\\gnupg\\bin\\gpg.exe
[color]
    ui = true
[alias]
    co = checkout
    ci = commit
    br = branch
    last = log -1
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
-----------------------------------------------------------------------------

刪除別名

別名就在[alias]后面交煞,要?jiǎng)h除別名盯蝴,直接把對(duì)應(yīng)的行刪掉即可。配置別名也可以直接修改這個(gè)文件僻澎,如果改錯(cuò)了废封,可以刪掉文件重新通過命令配置州泊。

多人協(xié)作的工作模式通常如下:
(1)首先將遠(yuǎn)程倉(cāng)庫(kù)克隆為本地倉(cāng)庫(kù)
git clone git@github.com:xxx/LearnGit.git
(2)在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支
git checkout -b <本地分支名> origin/<遠(yuǎn)程分支名>
本地和遠(yuǎn)程分支的名稱最好一致;
(3)在本地分支完成任務(wù)后漂洋,可以試圖用git push <遠(yuǎn)程主機(jī)名> <本地分支名>推送自己的修改遥皂;
(2)如果推送失敗力喷,則表明遠(yuǎn)程分支比本地更新,需要先用git pull試圖合并演训;
(3)如果pull失敗并提示“no tracking information”弟孟,則說明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建,用命令git branch --set-upstream-to=<遠(yuǎn)程主機(jī)名>/<遠(yuǎn)程分支名>  <本地分支名>創(chuàng)建鏈接样悟;
(4)如果合并有沖突拂募,則解決沖突,并在本地提交(add => commit)窟她;
(5)沒有沖突或者解決掉沖突后陈症,再用git push <遠(yuǎn)程主機(jī)名> <本地分支名>推送就能成功。

轉(zhuǎn)載:https://blog.csdn.net/xukai0110/article/details/80637902

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末震糖,一起剝皮案震驚了整個(gè)濱河市录肯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吊说,老刑警劉巖论咏,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異疏叨,居然都是意外死亡潘靖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門蚤蔓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卦溢,“玉大人,你說我怎么就攤上這事秀又〉ゼ牛” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵吐辙,是天一觀的道長(zhǎng)宣决。 經(jīng)常有香客問我,道長(zhǎng)昏苏,這世上最難降的妖魔是什么尊沸? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮贤惯,結(jié)果婚禮上洼专,老公的妹妹穿的比我還像新娘。我一直安慰自己孵构,他們只是感情好屁商,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颈墅,像睡著了一般蜡镶。 火紅的嫁衣襯著肌膚如雪雾袱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天官还,我揣著相機(jī)與錄音芹橡,去河邊找鬼。 笑死妻枕,一個(gè)胖子當(dāng)著我的面吹牛僻族,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屡谐,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼述么,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了愕掏?” 一聲冷哼從身側(cè)響起度秘,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饵撑,沒想到半個(gè)月后剑梳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滑潘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年垢乙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片语卤。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡追逮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粹舵,到底是詐尸還是另有隱情钮孵,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布眼滤,位于F島的核電站巴席,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏诅需。R本人自食惡果不足惜漾唉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望堰塌。 院中可真熱鬧赵刑,春花似錦、人聲如沸蔫仙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摇邦。三九已至恤煞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間施籍,已是汗流浹背居扒。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丑慎,地道東北人喜喂。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像竿裂,于是被迫代替她去往敵國(guó)和親玉吁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容