Git的使用筆記

? ? ? 說來慚愧止邮,雖然身為一個(gè)低端的android碼農(nóng)奏窑,但是我一直很害怕使用git良哲,原因是進(jìn)入工作后一直是一個(gè)人開發(fā)助隧,剛開始接觸git時(shí)并村,由于不知道什么是gitignore文件,導(dǎo)致將apk包提交推送上去了棚潦,也不知道為啥膝昆,后來一直就推送遠(yuǎn)端失敗,結(jié)果我就一用硬盤保存我寫的代碼妹窖。再后來骄呼,新開了一個(gè)倉庫,但是一個(gè)人也就隨便用用 add ,commit和push這三個(gè)方法隅茎,直到今年的二月下旬辟犀,我終于忍不了了耻蛇,下決心想學(xué)會git的命令。學(xué)完后跃捣,向眾位大佬學(xué)習(xí)疚漆,寫一篇文檔刁赦,記錄一下使用git的方方面面甚脉,以便于遺忘了進(jìn)行查找。

? ? ? git的歷史大家隨便百度就能知道狡耻,過去不會的時(shí)候感覺為啥會有g(shù)it這個(gè)東西猴凹,現(xiàn)在稍微會了一些郊霎,感覺確實(shí)方便了不少。下來我來記錄我學(xué)到的和常用的命令进倍。

? ? ? 首先給大家推薦一個(gè)b站上的將git命令的課,這個(gè)課我覺得是講的很詳細(xì)的毙籽,我也是跟他學(xué)的坑赡,大家可以看看視頻地址


? ?配置用戶名和郵箱

git config --global user.name "用戶名" ????????配置或修改用戶名

git config --global user.emal "532886747@qq.com"? 配置或修改郵箱

git config --list 查看配置項(xiàng)

git config user.name 查看用戶名

git help 查看git幫助

git config --global --replace-all user.name “你的用戶名” 修改你的用戶名

git config --global --replace-all user.email “你的郵箱”? 修改你的郵箱

其中毅否,當(dāng)輸入--list的時(shí)候會發(fā)現(xiàn)git還停留在:這個(gè)狀態(tài)蝇刀,這個(gè)時(shí)候我們按回車鍵,會一直顯示未顯示的下一行捆探,當(dāng)出現(xiàn)(END)的時(shí)候我們按q就可以了黍图,當(dāng)然也可以直接按q奴烙,這樣就退出了切诀。

?管理git項(xiàng)目

git init? 生成.git文件 ,被git管理

git init [name]? 如果加上文件名 則是先創(chuàng)建一個(gè)文件名丰滑,然后在生成.git文件

git add [filename]? 添加文件被追蹤褒墨,添加到暫存區(qū)

git add .? ? 添加所有文件被追蹤哄芜,添加到暫存區(qū)

git status? 查看文件的狀態(tài)

git commit -m “描述”

git commit -am 相當(dāng)于 add. + -m

每次commit的時(shí)候都會生成一個(gè)版本认臊。

當(dāng)時(shí)用git status 查看狀態(tài)的時(shí)候锄奢,只要文件有被更新過或者新創(chuàng)建一個(gè)文件,那就會顯示出來书在,如果文件沒有被add .拆又,就會顯示untracked files 該文件未被追蹤 帖族。

當(dāng)時(shí)用git add 后在查看狀態(tài),就會變成 文件就會變色

當(dāng)被commit 后甚垦, 會顯示 master(提交的分支) 艰亮, root-coomit (第一次提交)挣郭,0c5ae36(版本號)兑障,提交(提交時(shí)的說明)

1 file 一個(gè)文件被改動(dòng),1 insertion 一個(gè)文件被添加

commit -m “提交”

log追蹤

git log 相當(dāng)于你的提交日志

git log -p -2 最近兩次提交內(nèi)容的不同

git log --author?

git log --oneline 簡化版的git log,只顯示一行先蒋。

git log --graph 查看版本線圖

git log --pretty=format 打印出格式化的日志

追蹤文件修改前后的不同

git diff 查看文件和之前的修改的不同

git diff --staged 在stage狀態(tài)查看修改的不同 (就是當(dāng)git add .的時(shí)候)

當(dāng)你需要對比和上一次提交代碼之前修改代碼不同的時(shí)候竞漾,可以用這兩個(gè)命令來實(shí)現(xiàn)

文件忽略.gitignore

/node_modules? 忽略node_modules文件夾下所有文件

*.log? 忽略.log結(jié)尾的文件

&.zip 忽略.zip結(jié)尾的文件

git rm? -r -- cached. 把已追蹤的文件忽略

撤銷追蹤操作? 一鍵還原

git checkout -- [filename]? ? ? ? ?恢復(fù)到上一次的狀態(tài) 就是切到上一步提交的版本

git reset HEAD [filename]? ? ? ? 撤銷當(dāng)前文件的追蹤

版本回退(慎用)

git?reset --hard HEAD ^? ? ? ? ? ?回退到上一個(gè)版本

git reset --hard HEAD ^^? ? ? ? ?回退到上上一個(gè)版本

git reset --hard HEAD [hash號]? ? ????回退到指定hash的版本

git reflog? 指針理解

回到舊版本(推薦)

git checkout [hash號] -- [filename]???????? 將某一個(gè)文件切回到版本號

git checkout [hash好] -- .???????? 將所有切回到這個(gè)版本

版本回退和回到版本的概念是不同的鳞仙,如果是版本回退 :v1 -> v2 -> v3 笔时,如果我要回退到v2這個(gè)版本,那么v3這個(gè)版本就會被刪掉借笙。回到某個(gè)版本則不會刪掉v3這個(gè)版本盗痒,而是v3的指針會指到v2俯邓,變成v1 -> v2 -> v3 -> v2熔号。

建立切換分支刪除分支(重點(diǎn))

git branch [name]? ?????????創(chuàng)建一個(gè)分支跨嘉,不加名字就是展示分支

git checkout [branch name]????????????切換分支

git checkout -b [branch name]??????????建立和切換同時(shí)進(jìn)行

git branch [name] -d????????????刪除一個(gè)分支

git branch [name] -D????????????強(qiáng)制刪除分支

分支的作用就是當(dāng)多人開發(fā)的時(shí)候祠乃,不影響生產(chǎn)分支的情況下 ,大家各自開發(fā)各自的琴拧,當(dāng)需要合并的時(shí)候蚓胸,再合并。

當(dāng)你誤刪了分支怎么辦除师?1.拿到被刪分支的hash值沛膳。2.git branch [hash值] 分支就會回來了。這個(gè)方法我沒試驗(yàn)過汛聚。?

分支的創(chuàng)建和切換非常重要锹安,我之前就怕合并(原罪是自己too young),一定要練習(xí)熟練倚舀。

合并分支和沖突的解決(重點(diǎn))

git merge [branch name]? ????????講name分支合并到目前所處的分支

git status ????????查看分支沖突的原因

git merge --abort ????????忽略合并

手動(dòng)選擇正確內(nèi)容

git commit?

首先在dev-test的分支下修改了代碼

dev-test分支

這時(shí)commit代碼叹哭,在test分支下已經(jīng)生成了一個(gè)版本

提交代碼并生成分支

這時(shí)我切換分支到develop并在相同的位置寫了這樣的代碼并提交。

develop分支

這時(shí)风罩,我打算將develop分支上的內(nèi)容合并到dev-test分支 于是有了以下的操作,當(dāng)我打算合并的時(shí)候舵稠,git報(bào)錯(cuò)超升,分支沖突在myActivity這個(gè)類入宦,翻譯為(自動(dòng)合并失敗,修復(fù)沖突并提交結(jié)果)

合并分支發(fā)生沖突

在android studio中會顯示出沖突的地方廓俭,HEAD到=代碼 當(dāng)前分支的內(nèi)容 =到develop 代表develop分支(即你打算合并的分支)的內(nèi)容,這個(gè)時(shí)候就可以取舍了唉工,可以根據(jù)自己的需求刪除或保留沖突的地方研乒。(git status也可以查看出具體沖突的文件)

沖突的內(nèi)容
我選擇將兩個(gè)都保留

接下來就是用git add. ,git commit 這兩個(gè)方法 然后會出現(xiàn)以下情況,這時(shí)候你將沖突的描述寫完后

添加描述淋硝,然后摁下ESC 輸入:wq雹熬。最后回車,這樣沖突就解決了谣膳。

總結(jié):當(dāng)合并分支發(fā)生沖突的時(shí)候竿报,有兩種解決方式:1.手動(dòng)解決沖突,看哪些代碼需要留下继谚,哪些代碼需要?jiǎng)h除烈菌。這種方式的前提是你知道哪些代碼需要合并。2.忽略合并花履,當(dāng)前代碼不知道哪些需要留下芽世,哪些需要?jiǎng)h掉的時(shí)候,就是用--abort方法诡壁。

通過命令查看版本線圖

git log --graph

git log --oneline --graph? ??

git log --oneline --graph --all? ? 查看所有分支下的線圖

git log --oneline --graph -[number]? ??

快轉(zhuǎn)機(jī)制的意義

快轉(zhuǎn)實(shí)際就是當(dāng)前master的將來時(shí)

git merge branchname --no-ff? ?

更多合并的方法

git merge --no-ff --no-commit [branchname]

git merge --squash [branchname]????不想在合并分支時(shí)體現(xiàn)你多次commit記錄的話济瓢,就用這個(gè)方法

git reset --hard ORIG_HEAD? ????????回退到源版本,也就是最初的版本

一次性刪掉所有不想要的分支

git branch --merged i egrep -v "(^|maseter|develop)" | xargs git branch -d ????????括號里代表不想刪的分支


今天先記錄這么多妹卿,過兩天補(bǔ)充跟遠(yuǎn)端有關(guān)的筆記旺矾。

補(bǔ)充一下?

如何合并分支中的部分提交?

1.首先查看需要合并的分支中提交的hash號

2.切換到主分支, 使用? git cherry-pick hash號 (這個(gè)hash號是分支中提交的hash號)

3.然后就ok了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夺克,一起剝皮案震驚了整個(gè)濱河市箕宙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铺纽,老刑警劉巖扒吁,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異室囊,居然都是意外死亡雕崩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門融撞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盼铁,“玉大人,你說我怎么就攤上這事尝偎∪幕穑” “怎么了鹏控?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肤寝。 經(jīng)常有香客問我当辐,道長,這世上最難降的妖魔是什么鲤看? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任缘揪,我火速辦了婚禮,結(jié)果婚禮上义桂,老公的妹妹穿的比我還像新娘找筝。我一直安慰自己,他們只是感情好慷吊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布袖裕。 她就那樣靜靜地躺著,像睡著了一般溉瓶。 火紅的嫁衣襯著肌膚如雪急鳄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天堰酿,我揣著相機(jī)與錄音攒岛,去河邊找鬼。 笑死胞锰,一個(gè)胖子當(dāng)著我的面吹牛灾锯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嗅榕,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼顺饮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了凌那?” 一聲冷哼從身側(cè)響起兼雄,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帽蝶,沒想到半個(gè)月后赦肋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡励稳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年佃乘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驹尼。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡趣避,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出新翎,到底是詐尸還是另有隱情程帕,我是刑警寧澤住练,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站愁拭,受9級特大地震影響讲逛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜岭埠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一盏混、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧枫攀,春花似錦括饶、人聲如沸株茶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽启盛。三九已至蹦掐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間僵闯,已是汗流浹背卧抗。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鳖粟,地道東北人社裆。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像向图,于是被迫代替她去往敵國和親泳秀。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

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

  • git 使用筆記 git原理: 文件(blob)對象榄攀,樹(tree)對象嗜傅,提交(commit)對象 tree對象 ...
    神刀閱讀 3,771評論 0 10
  • 原文地址主要用到的命令: git config user.name 設(shè)置用戶名 git config user....
    AFinalStone閱讀 468評論 0 2
  • 1. 安裝 安裝完成后,需要一步設(shè)置檩赢,在命令行中輸入: git config --global user.name...
    kevenZheng閱讀 320評論 0 0
  • 教程:Git教程 - 廖雪峰的官方網(wǎng)站 各系統(tǒng)安裝git git init 把目錄變?yōu)閭}庫git add rea...
    皮丘吉爾閱讀 333評論 0 0
  • Git簡介 Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)吕嘀。 作用 創(chuàng)建版本庫 1. 新建一個(gè)文件夾 ,通過git ...
    petite_chen閱讀 193評論 0 0