Git 使用

?Git操作

一、創(chuàng)建git倉(cāng)庫(kù)

git init --bare fasloan.git

授權(quán)限

chown -R git:git fasloan.git ????

遠(yuǎn)程庫(kù)克隆

git clone git@X.X.X.X:/home/yd_fasloan/fasloan.git

二甸赃、創(chuàng)建與合并分支

(分支管理:你創(chuàng)建了一個(gè)屬于你自己的分支,別人看不到上枕,還繼續(xù)在原來(lái)的分支上正常工作丸卷,而你在自己的分支上干活,想提交就提交捐名,直到開(kāi)發(fā)完畢后旦万,再一次性合并到原來(lái)的分支上,這樣镶蹋,既安全纸型,又不影響別人工作。其他版本控制系統(tǒng)如SVN等都有分支管理梅忌,但是用過(guò)之后你會(huì)發(fā)現(xiàn),這些版本控制系統(tǒng)創(chuàng)建和切換分支比蝸牛還慢除破,簡(jiǎn)直讓人無(wú)法忍受牧氮,結(jié)果分支功能成了擺設(shè),大家都不去用瑰枫。但Git的分支是與眾不同的踱葛,無(wú)論創(chuàng)建、切換和刪除分支光坝,Git在1秒鐘之內(nèi)就能完成尸诽!無(wú)論你的版本庫(kù)是1個(gè)文件還是1萬(wàn)個(gè)文件。)

1.創(chuàng)建dev分支盯另,然后切換到dev分支:

$ git checkout -b dev

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

git checkout命令加上-b參數(shù)表示創(chuàng)建并切換性含,相當(dāng)于以下兩條命令:

$ git branch dev

$ git checkout dev

Switchedto branch'dev'

2.?用git branch命令查看當(dāng)前分支:

$ git branch? ? ? ? ? ? ? ? ? ?

* dev? ? ? ? ? ? ? ?

master

git branch命令會(huì)列出所有分支,當(dāng)前分支前面會(huì)標(biāo)一個(gè)*號(hào)鸳惯。

查看當(dāng)前分支

在dev分支上正常提交商蕴,比如對(duì)fasloan_view.py 做個(gè)修改,刪除一行:print111然后提交:

3. 先查看當(dāng)前狀態(tài):

當(dāng)前狀態(tài)

表示修改了fasloan_view.py的文件內(nèi)容芝发,現(xiàn)在提交一下將文件加入暫存區(qū):

添加暫存區(qū)

對(duì)剛提交的文件進(jìn)行描述绪商,實(shí)際上是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支:

描述修改

簡(jiǎn)單解釋一下git commit命令,-m后面輸入的是本次提交的說(shuō)明辅鲸,可以輸入任意內(nèi)容格郁,當(dāng)然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動(dòng)記錄独悴。查看現(xiàn)在的狀態(tài)例书,該工作區(qū)是干凈的沒(méi)有任務(wù)去提交:

當(dāng)前狀態(tài)

現(xiàn)在,dev分支的工作完成刻炒,我們就可以切換回master分支:

切換分支

查看fasloan_view.py文件茬射,發(fā)現(xiàn)剛才刪除那行仍然存在:

1.查看fasloan_view.py文件

查看文件內(nèi)容

2.內(nèi)容未修改:

未改動(dòng)內(nèi)容

解決辦法:

因?yàn)槟莻€(gè)提交實(shí)在dev分支上碑诉,而master分支此刻提交點(diǎn)并沒(méi)有變。我們把dev分支上的工作修改合并到master分支上:

合并分支

git merge命令用于合并指定分支到當(dāng)前分支诬乞。合并后,再查看fasloan_view.py的內(nèi)容糊肤,就可以看到,和dev分支的最新提交是完全一樣的。

修改文件內(nèi)容

現(xiàn)在將所有改動(dòng)都合并到主分支了旺嬉,用git log看看分支歷史:

查看分支歷史

在實(shí)際開(kāi)發(fā)中,我們應(yīng)該按照幾個(gè)基本原則進(jìn)行分支管理:

(首先厨埋,master分支應(yīng)該是非常穩(wěn)定的邪媳,也就是僅用來(lái)發(fā)布新版本,平時(shí)不能在上面干活荡陷;

那在哪干活呢雨效?干活都在dev 分支上,也就是說(shuō)废赞,dev 分支是不穩(wěn)定的徽龟,到某個(gè)時(shí)候,比如1.0版本發(fā)布時(shí)唉地,再把dev分支合并到master上据悔,在master分支發(fā)布1.0版本;你和你的小伙伴們每個(gè)人都在dev分支上干活耘沼,每個(gè)人都有自己的分支极颓,時(shí)不時(shí)地往dev分支上合并就可以了。)

合并分支時(shí)群嗤,加上--no-ff參數(shù)就可以用普通模式合并菠隆,合并后的歷史有分支,能看出來(lái)曾經(jīng)做過(guò)合并狂秘,而fast forward合并就看不出來(lái)曾經(jīng)做過(guò)合并浸赫。

?因?yàn)楸敬魏喜⒁獎(jiǎng)?chuàng)建一個(gè)新的commit,所以加上-m參數(shù)赃绊,把commit描述寫(xiě)進(jìn)去既峡。

$ git merge --no-ff? -m "merge with no-ff " dev

$ git log--graph --pretty=oneline --abbrev-commit

三、查看遠(yuǎn)程庫(kù)的信息用git remote::

遠(yuǎn)程庫(kù)信息

或者碧查,用git remote -v顯示更詳細(xì)的信息:

遠(yuǎn)程庫(kù)信息

上面顯示了可以抓取和推送的origin的地址运敢。如果沒(méi)有推送權(quán)限,就看不到push的地址忠售。

四传惠、推送分支

1.推送分支,就是把該分支上的所有本地提交推送到遠(yuǎn)程庫(kù)稻扬。推送時(shí)卦方,要指定本地分支,這樣泰佳,Git就會(huì)把該分支推送到遠(yuǎn)程庫(kù)對(duì)應(yīng)的遠(yuǎn)程分支上

推送分支

并不是一定要把本地分支往遠(yuǎn)程推送

master分支是主分支盼砍,因此要時(shí)刻與遠(yuǎn)程同步尘吗;

dev分支是開(kāi)發(fā)分支,團(tuán)隊(duì)所有成員都需要在上面工作浇坐,所以也需要與遠(yuǎn)程同步睬捶;

2. 多人協(xié)作工作模式:

(1)使用git push origin ?<分支名> 推送自己的修改

(2)如果推送失敗,則因?yàn)檫h(yuǎn)程分支比你的本地更新近刘,需要先用git pull試圖合并

(3)]如果和并有沖突擒贸,則解決沖突,并在本地提交

(4)沒(méi)有沖突或者解決掉沖突后觉渴,再用git push origin <分支名>就能推送成功

如果git pull提示no tracking information, 則說(shuō)明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒(méi)有創(chuàng)建介劫,用命令git branch --set-upstream-to <分支名> origin/<分支名>

五、解決沖突:

新分支開(kāi)發(fā)feature1:

創(chuàng)建新分支

修改fasloan_view.py,添加了一行print(11)

添加一行內(nèi)容

提交:

提交到當(dāng)前分支

在master分支上把fasloan_view.py文件修改添加print(1111)案淋, 文件已被修改:

添加一行

添加文件到暫存區(qū)并提交:

添加到當(dāng)前分支

這種情況git無(wú)法執(zhí)行快速合并座韵,只能試圖把各自的修改合并起來(lái),但這種合并可能會(huì)有沖突:

合并分支

Git告訴我們哎迄,fasloan_view.py文件存在沖突,必須手動(dòng)解決沖突后再提交隆圆。git status也可以告訴我們沖突的文件:

沖突文件內(nèi)容

修改內(nèi)容之后保存漱挚,再提交:

修改提交文件

刪除feature1分支:

刪除分支

最后推到遠(yuǎn)程:

同步到遠(yuǎn)程庫(kù)

六、版本回退

Git每當(dāng)文件修改到一定程度的時(shí)候渺氧,就可以“保存”一個(gè)快照旨涝,這個(gè)快照在Git里被稱為commit,一旦把文件改亂了侣背,或者誤刪了文件白华,還可以從最近的一個(gè)commit恢復(fù),繼續(xù)工作贩耐。

git log命令顯示從最近到最遠(yuǎn)的提交日志弧腥,如果嫌輸出信息太多,看得眼花繚亂的潮太,可以試試加上--pretty=oneline參數(shù):

提交日志

看到一大串類似7feo2的是commit id(版本號(hào))管搪, 一個(gè)通過(guò)SHA1計(jì)算出來(lái)的非常大的數(shù)字,用十六進(jìn)制表示铡买。

回到上個(gè)版本更鲁,首先Git要知道當(dāng)前版本是哪個(gè),在Git中奇钞,用HEAD表示當(dāng)前版本澡为,也就是最新。上個(gè)版本HEAD^景埃,上上個(gè)版本時(shí)HEAD^^, 當(dāng)然網(wǎng)上100個(gè)版本媒至,寫(xiě)成HEAD~100.

回退上一個(gè)版本:

回退版本

已被還原:

還原版本

若想再回去顶别,只要命令行窗口還沒(méi)有被關(guān)掉,可以順著找commit id塘慕,于是就可以回到未來(lái)的某個(gè)版本筋夏,版本號(hào)沒(méi)必要寫(xiě)全,前幾位就可以了图呢,Git會(huì)自動(dòng)去找条篷。當(dāng)然也不能只寫(xiě)前一兩位,因?yàn)镚it可能會(huì)找到多個(gè)版本號(hào)蛤织,就無(wú)法確定是哪一個(gè)了:

回到指定版本

你回退到了某個(gè)版本赴叹,關(guān)掉了電腦,第二天早上就后悔了指蚜,想恢復(fù)到新版本乞巧,Git提供了一個(gè)命令git reflog用來(lái)記錄你的每一次命令:

查看記錄

又找回了你想回到指定版本的commit id。

七摊鸡、撤銷修改:

git checkout -- file可以丟棄工作區(qū)的修改:把文件在工作區(qū)的修改全部撤銷有兩種情況:

(1)文件自修改后還沒(méi)有被放到暫存區(qū)绽媒,現(xiàn)在撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài)。

(2)文件已經(jīng)添加到暫存區(qū)免猾,又做了修改是辕,現(xiàn)在撤銷修改就回到添加到暫存區(qū)后的狀態(tài)×蕴幔總之获三,就是讓文件回到最近一次git commit或者git add時(shí)的狀態(tài)。

修改文件并添加到了暫存區(qū)锨苏,慶幸的是在commit之前疙教,用git status查看,修改到了暫存區(qū)伞租,還沒(méi)有提交;

用命令git reset HEAD fasloan_view.py可以把暫存區(qū)的修改撤銷掉贞谓,重新放回工作區(qū)。假設(shè)不但改錯(cuò)東西葵诈,還從暫存區(qū)提交到了版本庫(kù)经宏,就只能回到上一個(gè)版本(條件是還沒(méi)把本地版本庫(kù)推送到遠(yuǎn)程)

總結(jié):

(1)當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容,想直接丟棄工作區(qū)的修改時(shí)驯击,用命令git checkout -- file烁兰。

(2)當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí)徊都,想丟棄修改沪斟,分兩步,第一步用命令git reset HEAD ,就回到了場(chǎng)景1主之,第二步按場(chǎng)景1操作择吊。

(3)已經(jīng)提交了不合適的修改到版本庫(kù)時(shí),想要撤銷本次提交槽奕,只能回退版本几睛,不過(guò)前提是沒(méi)有推送到遠(yuǎn)程庫(kù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粤攒,一起剝皮案震驚了整個(gè)濱河市所森,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌夯接,老刑警劉巖焕济,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盔几,居然都是意外死亡晴弃,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門逊拍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)上鞠,“玉大人,你說(shuō)我怎么就攤上這事芯丧∩盅郑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵注整,是天一觀的道長(zhǎng)能曾。 經(jīng)常有香客問(wèn)我度硝,道長(zhǎng)肿轨,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任蕊程,我火速辦了婚禮椒袍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘藻茂。我一直安慰自己驹暑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布辨赐。 她就那樣靜靜地躺著优俘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掀序。 梳的紋絲不亂的頭發(fā)上帆焕,一...
    開(kāi)封第一講書(shū)人閱讀 52,246評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音不恭,去河邊找鬼叶雹。 笑死财饥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的折晦。 我是一名探鬼主播钥星,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼满着!你這毒婦竟也來(lái)了谦炒?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤漓滔,失蹤者是張志新(化名)和其女友劉穎编饺,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體响驴,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡透且,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了豁鲤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秽誊。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖琳骡,靈堂內(nèi)的尸體忽然破棺而出锅论,到底是詐尸還是另有隱情,我是刑警寧澤楣号,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布最易,位于F島的核電站,受9級(jí)特大地震影響炫狱,放射性物質(zhì)發(fā)生泄漏藻懒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一视译、第九天 我趴在偏房一處隱蔽的房頂上張望嬉荆。 院中可真熱鬧,春花似錦酷含、人聲如沸鄙早。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)限番。三九已至,卻和暖如春呀舔,著一層夾襖步出監(jiān)牢的瞬間弥虐,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留躯舔,地道東北人驴剔。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像粥庄,于是被迫代替她去往敵國(guó)和親丧失。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

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

  • (預(yù)警:因?yàn)樵敿?xì)惜互,所以行文有些長(zhǎng)布讹,新手邊看邊操作效果出乎你的預(yù)料) 一:Git是什么? Git是目前世界上最先進(jìn)的...
    axiaochao閱讀 1,936評(píng)論 1 8
  • 聲明:這篇文章來(lái)源于廖雪峰老師的官方網(wǎng)站训堆,我僅僅是作為學(xué)習(xí)之用 Git簡(jiǎn)介 Git是什么描验? Git是目前世界上最先...
    橫渡閱讀 3,959評(píng)論 3 27
  • 一、電腦本地初始化一個(gè)倉(cāng)庫(kù) 1. git init: 初始化一個(gè)電腦上本地倉(cāng)庫(kù) 終端進(jìn)入項(xiàng)目目錄坑鱼,輸入: 該命令將...
    dragon_li閱讀 2,945評(píng)論 1 4
  • git 使用筆記 git原理: 文件(blob)對(duì)象膘流,樹(shù)(tree)對(duì)象,提交(commit)對(duì)象 tree對(duì)象 ...
    神刀閱讀 3,778評(píng)論 0 10
  • ――2017·7月·桂林水災(zāi)有感 呯鲁沥,呯呼股,呯 從地底而來(lái)的聲音, 有許許多多的溪流画恰, 組...
    零方程閱讀 320評(píng)論 2 2