git 分布式版本控制系統(tǒng)

git 工作原理

Workspace工作區(qū)
程序員進行開發(fā)改動的地方晶伦,是你當(dāng)前看到的聪黎,也是最新的。
平常我們開發(fā)就是拷貝遠程倉庫中的一個分支胳岂,基于該分支進行開發(fā)。在開發(fā)過程中就是對工作區(qū)的操作舔稀。

Index / Stage 暫存區(qū)
.git目錄下的index文件, 暫存區(qū)會記錄git add添加文件的相關(guān)信息(文件名乳丰、大小、timestamp...)内贮,不保存文件實體, 通過id指向每個文件實體产园。可以使用git status查看暫存區(qū)的狀態(tài)夜郁。暫存區(qū)標(biāo)記了你當(dāng)前工作區(qū)中什燕,哪些內(nèi)容是被git管理的。
當(dāng)你完成某個需求或功能后需要提交到遠程倉庫竞端,那么第一步就是通過git add先提交到暫存區(qū)屎即,被git管理。

Repository 本地倉庫
保存了對象被提交 過的各個版本事富,比起工作區(qū)和暫存區(qū)的內(nèi)容技俐,它要更舊一些。
git commit后同步index的目錄樹到本地倉庫统台,方便從下一步通過git push同步本地倉庫與遠程倉庫的同步雕擂。

遠程倉庫
遠程倉庫的內(nèi)容可能被分布在多個地點的處于協(xié)作關(guān)系的本地倉庫修改,因此它可能與本地倉庫同步贱勃,也可能不同步井赌,但是它的內(nèi)容是最舊的。

1.任何對象都是在工作區(qū)中誕生和被修改募寨;
2.任何修改都是從進入index區(qū)才開始被版本控制族展;
3.只有把修改提交到本地倉庫,該修改才能在倉庫中留下痕跡拔鹰;
4.與協(xié)作者分享本地的修改仪缸,可以把它們push到遠程倉庫來共享。

四個區(qū)域之間的關(guān)系
branch 分支
分支策略

在實際開發(fā)中列肢,應(yīng)該按照幾個基本原則進行分支管理:
(1).master分支應(yīng)該是非常穩(wěn)定的恰画,僅用來發(fā)布新版本;
(2).開發(fā)都在dev分支,比如1.0版本發(fā)布時瓷马,再把dev分支合并到master上拴还,在master分支發(fā)布1.0版本;
(3).每個人都在dev分支上干活欧聘,每個人都有自己的特性分支片林,時不時地往dev分支上合并就可以了。

image


merge 操作會生成一個新的節(jié)點,之前的提交分開顯示

      D---E test branch
     /
A---B---C---F master branch

master執(zhí)行git merge test,然后會得到如下結(jié)果:

      D--------E
     /          \
A---B---C---F----G   master branch
在我們遇到:

1.自己本地add 并commit 但是還沒有 push 到遠端時,發(fā)現(xiàn)代碼有問題,
2.改完代碼匆忙提交,上線發(fā)現(xiàn)有問題,怎么辦?
3.改完代碼測試也沒有問題,但是上線發(fā)現(xiàn)你的修改影響了之前運行正常的代碼報錯,必須回滾.

處理上面的問題我們分 A.沒有push 使用 reset 和B.已經(jīng)push 使用 revert 兩種方式處理方式
1.沒有push 時 : 用到 reset (重置)
git reset [ --soft | --mixed | --hard ]  [提交版本號]

(a) --soft (溫柔的)保留源碼,只回退到commit 信息到某個版本.不涉及index的回退,如果還需要提交,直接commit即可.
(b) --mixed (混合):會保留源碼,只是將git commitindex 信息回退到了某個版本.
為默認(rèn)方式
git reset --mixed 等價于 git reset
(c) --hard (牢固地) 源碼也會回退到某個版本,commitindex 都會回退到某個版本.(注意,這種方式是改變本地代碼倉庫源碼)

注意:當(dāng)在push代碼以后,也使用 git reset --hard <commit...> 回退代碼到某個版本之前,這樣會有一個問題,你線上的代碼沒有變,線上commit,index都沒有變,當(dāng)你把本地代碼修改完強制提交的時候可能會存在沖突

2.已經(jīng)push 需要使用 git revert (恢復(fù)原狀)
git revert [提交版本號]


git revert用于反轉(zhuǎn)提交,執(zhí)行revert命令時要求工作樹必須是干凈的.
git revert用一個新提交來消除一個歷史提交所做的任何修改.
revert 之后你的本地代碼會回滾到指定的歷史版本,這時你再 git push 既可以把線上的代碼更新.

git reset 與 git revert 區(qū)別

區(qū)別 git revert是用一次新的commit來回滾之前的commit费封,git reset是直接刪除指定的commit

看似達到的效果是一樣的,其實完全不同.
第一:上面我們說的如果你已經(jīng)push到線上代碼庫, reset 刪除指定commit以后,你git push可能導(dǎo)致一大堆沖突,如果落后于線上的版本提交時需要 使用 git push -f force強制提交.但是revert 并不會.
第二:reset是在正常的commit歷史中,刪除了指定的commit,這時 HEAD 是向后移動了,而 revert 是在正常的commit歷史中再commit一次,只不過是反向提交,他的 HEAD 是一直向前的.

問題

A:push 文件1.txt
B:push 文件1.txt(顯然沖突)焕妙,所以先pull,然后手工合并弓摘,假如合并過程中焚鹊,A又push 文件1.txt了。等B合并完韧献,push 文件1.txt時末患,又沖突掉了。

常用命令
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锤窑,一起剝皮案震驚了整個濱河市璧针,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渊啰,老刑警劉巖陈莽,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異虽抄,居然都是意外死亡走搁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門迈窟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來私植,“玉大人,你說我怎么就攤上這事车酣∏冢” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵湖员,是天一觀的道長贫悄。 經(jīng)常有香客問我,道長娘摔,這世上最難降的妖魔是什么窄坦? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮凳寺,結(jié)果婚禮上鸭津,老公的妹妹穿的比我還像新娘。我一直安慰自己肠缨,他們只是感情好逆趋,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晒奕,像睡著了一般闻书。 火紅的嫁衣襯著肌膚如雪名斟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天魄眉,我揣著相機與錄音蒸眠,去河邊找鬼。 笑死杆融,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的霜运。 我是一名探鬼主播脾歇,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淘捡!你這毒婦竟也來了藕各?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤焦除,失蹤者是張志新(化名)和其女友劉穎激况,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膘魄,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡乌逐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了创葡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浙踢。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖灿渴,靈堂內(nèi)的尸體忽然破棺而出洛波,到底是詐尸還是另有隱情,我是刑警寧澤骚露,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布蹬挤,位于F島的核電站,受9級特大地震影響棘幸,放射性物質(zhì)發(fā)生泄漏焰扳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一误续、第九天 我趴在偏房一處隱蔽的房頂上張望蓝翰。 院中可真熱鬧,春花似錦女嘲、人聲如沸畜份。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爆雹。三九已至停蕉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钙态,已是汗流浹背慧起。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留册倒,地道東北人蚓挤。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像驻子,于是被迫代替她去往敵國和親灿意。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

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