在公司用Git作為版本控制管理工具已經(jīng)一年了吨娜,對(duì)Git的各項(xiàng)操作也了然于心了屁使。相比剛開(kāi)始使用Git時(shí)常常被Git各種奇葩問(wèn)題阻塞住開(kāi)發(fā)進(jìn)度的我陆淀,現(xiàn)在的我確實(shí)已經(jīng)踩過(guò)了很多坑幅恋,也對(duì)自己感興趣的Git相關(guān)原理進(jìn)行了分析炭庙。本來(lái)打算就把這篇blog作為Git使用經(jīng)驗(yàn)的備忘錄饲窿,可看到新來(lái)的同事還是被Git的各種坑折磨得很痛苦的樣子時(shí),我意識(shí)到還是有必要把自己使用Git的經(jīng)驗(yàn)分享出來(lái)的焕蹄,這件事還是有價(jià)值的逾雄!
你能想到的、可能遇到的Git問(wèn)題,都可能會(huì)在如下的文字里~
一鸦泳、Git小白需要知道的操作:
以下介紹的每一個(gè)操作银锻,都是我能想到的最基本,也最常用的Git操作做鹰,要想入門(mén)使用Git击纬,了解這些就夠了!
1钾麸、?本地分支:
(1)查看本地分支更振,git?branch;
創(chuàng)建本地分支饭尝,git?branch?name肯腕;
刪除本地分支git?branch?-d;
切換本地分支钥平,git?checkout?name实撒。
(2)git?checkout?-b?iss53(常用):
新建并切換到該分支,相當(dāng)于帖池,git?branch?iss53奈惑,git?checkout?iss53。
(3)合并分支:git?checkout?master切回主分支睡汹,git?merge?iss53合并分支
2肴甸、遠(yuǎn)程分支:
(1)查看遠(yuǎn)程分支,git?branch?-a
(2)查看遠(yuǎn)程倉(cāng)庫(kù) git remote
(3)查看本地分支對(duì)應(yīng)的遠(yuǎn)程分支(常用) git branch -vv
3囚巴、刪除文件(常用)
刪除文件跟蹤&刪除文件系統(tǒng)中的文件:git rm xxx
刪除文件跟蹤&不刪除文件系統(tǒng)的文件:git?rm--cached?xxx
4原在、pull時(shí)把未提交文件放到暫存區(qū)(常用)
git?stash放進(jìn)去
git?stash?pop
5、不同分支間提交(常用)
git?checkout?old_branch
git?cherry-pick?commit-id
6彤叉、拉取代碼
git pull --rebase
7庶柿、放棄本地修改 強(qiáng)制更新
git fetch --all
git reset --hard origin/master
8、git刷新
git?fetch?--prune
9秽浇、查看歷史
一行顯示 git log --pretty=oneline
顯示某一作者提交歷史 git log --author=
10浮庐、檢查配置信息
git config --list
11、添加遠(yuǎn)程分支(分兩步)
git checkout -b newbranch
git push origin newbranch
二柬焕、git進(jìn)階學(xué)習(xí):
在實(shí)戰(zhàn)中難免會(huì)有疏忽审残,要參與項(xiàng)目級(jí)開(kāi)發(fā),以下操作必須要學(xué)會(huì)0呔佟=两巍!
git撤銷(xiāo)(重中之重8荤琛璧坟!最后一道防線<饶隆)
1、git add 文件取消
實(shí)際操作可用git reset HEAD
2雀鹃、commit修改:
(1)修改最近一次commit的描述:
git commit --amend
相關(guān)vi命令:(1)插入 i幻工;(2)保存并退出 esc窿吩,:wq
(2)修改最近一次commit的文件或少提交了文件:
git add <修改的文件>
git commit --amend
(3)修改歷史commit:git reset --soft commit_id
3贰拿、commit放棄修改某文件苦丁,還原成上次提交的樣子(謹(jǐn)慎使用区丑,修改會(huì)被抹掉)
git checkout --
4版述、取消commit(比如重寫(xiě)commit信息)
git?reset?--soft HEAD
5澎灸、取消commit炸宵、add(重新提交代碼和commit)
git reset HEAD
git reset --mixed HEAD
實(shí)際操作過(guò):git reset HEAD~1
6瓜客、取消commit俭正、add奸鬓、工作區(qū)修改(需要完全重置)
git reset --hard HEAD
7、取消pull(精)
git stash
git log 查看commit_id掸读,找到我想回到的version
git reset —hard
8串远、撤銷(xiāo)全部本地修改,與遠(yuǎn)程庫(kù)上保持一致
git reset --hard origin/rel/7.6
三儿惫、Git原理相關(guān)
1澡罚、git merge與git rebase區(qū)別:
(1)兩者都是用來(lái)將兩個(gè)分支merge到一起
(2)區(qū)別:
兩個(gè)使用場(chǎng)景是不一樣的,merge只是合并另外一個(gè)分支的內(nèi)容肾请,rebase也合并另外一個(gè)分支的內(nèi)容留搔,但是會(huì)把本分支的commits頂?shù)阶铐敹恕?/p>
2、git?pull與fetch區(qū)別:
git?pull相當(dāng)于git?fetch铛铁,git?merge隔显;git?pull會(huì)merge,git?fetch不merge饵逐。
3括眠、git?clone與git?checkout區(qū)別:
clone?is?for?fetching?repositories?you?don't?have,checkout?is?for?switching?between?branches?in?a?repository?you?already?have.
4倍权、git pull --rebase這個(gè)命令做了什么掷豺?
a.把你 commit 到本地倉(cāng)庫(kù)的內(nèi)容,取出來(lái)放到暫存區(qū)(stash)(這時(shí)你的工作區(qū)是干凈的)
b.然后從遠(yuǎn)端拉取代碼到本地薄声,由于工作區(qū)是干凈的当船,所以不會(huì)有沖突
c.從暫存區(qū)把你之前提交的內(nèi)容取出來(lái),跟拉下來(lái)的代碼合并
四奸柬、工作簡(jiǎn)單記錄
1、新建一個(gè)本地分支婴程,把另外一個(gè)遠(yuǎn)程分支的代碼拉到這個(gè)本地分支
(1)我的做法:新建一個(gè)本地分支廓奕,把那個(gè)遠(yuǎn)程分支代碼pull到本地
(2)推薦做法:git checkout -b rel/7.2 origin/rel.7.2
2、我的重命名
(1)status ==st
(2)checkout ==co
(3)commit -m == cm
(4)branch == br
(5)pull -- rebase origin == plr
(6)reset HEAD ==rh
(7)push origin ==psh
3、待解決:
pull到有問(wèn)題代碼桌粉,如何撤銷(xiāo)pull蒸绩?
4、修改公鑰
ssh-keygen -t rsa -C zhshan@Ctrip.com szh單振華 -N ?-f zhshan.rsa.ctrip
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
個(gè)人github上傳修改
git push -u origin master
git remote add origingit@github.com:colinNaive/MultiTypeRecyclerView.git
注意:git push -u origin master -f為強(qiáng)制推送