Git的前因后果

《Git的前因后果》因何而來天揖?

2018年3月份之前摸屠,番茄開發(fā)一直使用的是svn作為版本管理工具,對git知之甚少。4月份步入新的工作環(huán)境顶别,也隨著潮流接觸到了Git以及GitHub谷徙、GitLab、碼云這類遠(yuǎn)端管理工具驯绎。雖然git和svn完全是兩種模式完慧,但是我更傾向于git,為什么剩失?不怕笑話屈尼,我是2017年下半年才接觸到了分布式開發(fā),Spring Boot和Spring Boot兩大框架拴孤,而git也是一種分布式理念的產(chǎn)物脾歧,自然而然就摒棄掉了svn。而且在我看來演熟,git以及類似GitHub這類遠(yuǎn)端代碼管理工具鞭执,給我?guī)淼淖畲笫芤嬷幘褪潜WC了代碼不易丟失并省去了代碼存儲工具(如svn的中央服務(wù)器)。因此自然而然投入了Git的懷抱中芒粹。

Git 工作流程:

  • 克隆 Git 資源作為工作目錄兄纺。
  • 在克隆的資源上添加或修改文件。
  • 如果其他人修改了是辕,你可以更新資源囤热。
  • 在提交前查看修改猎提。
  • 提交修改获三。
  • 在修改完成后,如果發(fā)現(xiàn)錯誤锨苏,可以撤回提交并再次修改并提交疙教。
Git 工作流程圖

Git 工作區(qū)、暫存區(qū)和版本庫:

  • 工作區(qū):就是你在電腦里能看到的目錄伞租。
  • 暫存區(qū):英文叫stage, 或index贞谓。一般存放在 ".git目錄下" 下的index文件(.git/index)中,所以我們把暫存區(qū)有時也叫作索引(index)葵诈。
  • 版本庫:工作區(qū)有一個隱藏目錄.git裸弦,這個不算工作區(qū),而是Git的版本庫作喘。
Git 工作區(qū)理疙、暫存區(qū)和版本庫關(guān)系圖

備注:圖中的 objects 標(biāo)識的區(qū)域為 Git 的對象庫,實際位于 ".git/objects" 目錄下泞坦,里面包含了創(chuàng)建的各種對象及內(nèi)容窖贤。

Git 命令(基礎(chǔ)):

$ git config --global user.name 'username' //Git為你的每一個提交都記錄你的名字與電子郵箱地址,所以第一步需要配置用戶名和郵箱地址
$ git config --global user.email 'email'
$ git init                                 //使用當(dāng)前目錄作為Git倉庫。
$ git init <newrepo>                       //當(dāng)前目錄下新建newrepo文件夾作為Git倉庫赃梧。
$ git add <file>                           //當(dāng)對工作區(qū)修改(或新增)的文件執(zhí)行 "git add" 命令時滤蝠,暫存區(qū)的目錄樹被更新,同時工作區(qū)修改(或新增)的文件內(nèi)容被寫入到對象庫中的一個新的對象中授嘀,而該對象的ID被記錄在暫存區(qū)的文件索引中物咳。
$ git commit -m '<remark>'                 //暫存區(qū)的目錄樹寫到版本庫(對象庫)中,master 分支會做相應(yīng)的更新蹄皱。即 master 指向的目錄樹就是提交時暫存區(qū)的目錄樹所森。
$ git clone <repo>                         //從現(xiàn)有Git倉庫中拷貝項目。
$ git clone <repo> <directory>             //從現(xiàn)有Git倉庫中拷貝項目到指定的目錄夯接。
$ git status                               //文件狀態(tài)查詢焕济。
$ git status -s
$ git remote add origin <repo>             //新增遠(yuǎn)端倉庫路徑。
$ git push -u origin master                //將本地更新推送到遠(yuǎn)端倉庫的主分支上盔几。

git status -s 狀態(tài)碼解析:

狀態(tài)碼 含義
A 你本地新增的文件(服務(wù)器上沒有)
C 文件的一個新拷貝
D 你本地刪除的文件(服務(wù)器上還在)
M 文件的內(nèi)容或者mode被修改了
R 文件名被修改了
T 文件的類型被修改了
U 文件沒有被合并(你需要完成合并才能進(jìn)行提交)
X 未知狀態(tài)(很可能是遇到git的bug了晴弃,你可以向git提交bug report)
? 未被git進(jìn)行管理,可以使用git add file1把file1添加進(jìn)git能被git所進(jìn)行管理

Git 命令(高級):

$ git diff          //尚未緩存的改動逊拍。
$ git diff --cached //查看已緩存的改動上鞠。
$ git diff HEAD     //查看已緩存的改動與未緩存的所有改動。
$ git diff --stat   //顯示摘要而非整個芯丧。
$ git reset HEAD    //取消已緩存的內(nèi)容芍阎。

//如果只是簡單地從工作目錄中手動刪除文件,運行 git status 時就會在 Changes not staged for commit 的提示缨恒。
$ git rm <file>                //從Git中移除某個文件谴咸,就必須要從已跟蹤文件清單中移除,然后提交骗露。
$ git rm -f <file>             //如果刪除之前修改過并且已經(jīng)放到暫存區(qū)域的話岭佳,則必須要用強制刪除選項 -f。
$ git rm --cached <file>       //如果把文件從暫存區(qū)域移除萧锉,但仍然希望保留在當(dāng)前工作目錄中珊随,換句話說,僅是從跟蹤清單中刪除柿隙,使用 --cached 選項即可叶洞。
$ git mv <filename> <filename> //用于移動或重命名一個文件、目錄禀崖、軟連接衩辟。

Git 命令(查看提交歷史):

$ git log                                              //列出歷史提交記錄。
$ git log --oneline                                    //查看歷史記錄的簡潔的版本帆焕。
$ git log --oneline --graph                            //查看歷史中什么時候出現(xiàn)了分支惭婿、合并不恭。以下為相同的命令,開啟了拓?fù)鋱D選項财饥。
$ git log --reverse --oneline                          //逆向顯示所有日志换吧。
$ git log --author=<name>                              //只查找指定用戶的提交日志。

//指定日期钥星,可以執(zhí)行幾個選項:--since 和 --before沾瓦,以及--until 和 --after。
$ git log --oneline --before={} --after={} --no-merges //查看Git項目中三周前且在四月十八日之后的所有提交(--no-merges 選項以隱藏合并提交)谦炒。

Git 分支管理(必殺技)

$ git branch                   //列出全部分支贯莺。
$ git branch <branchname>      //創(chuàng)建分支。
$ git checkout <branchname>    //切換分支宁改。
$ git checkout -b <branchname> //創(chuàng)建新分支并立即切換到該分支下缕探,從而在該分支中操作。
$ git branch -d <branchname>   //刪除分支还蹲。

//合并分支爹耗,首先切換到要合并的分支(如,我要將branchtest合并到master上谜喊,那么就要先切到master分支上)潭兽。
$ git merge <branchname>       //合并branchname分支到當(dāng)前分支。

合并沖突:這是很多第一次接觸git的小白最害怕發(fā)生的狀況斗遏,其實大可不必山卦,三步解決。
1.git merge <branchname>之后提示沖突诵次,在提示內(nèi)容中會明確告訴你沖突的位置账蓉。
2.手動解決沖突。
3.將修改的文件藻懒,git add剔猿,git commit即完成沖突的解決,不需要再次執(zhí)行g(shù)it merge <branchname>命令嬉荆。


參考:RUNOOB.COM Git教程git status -s 狀態(tài)碼解析

愚見:實戰(zhàn)一次git的常用命令酷含,親手解決一次沖突鄙早,你便不再覺得git是你的“BUG”了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末椅亚,一起剝皮案震驚了整個濱河市限番,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呀舔,老刑警劉巖弥虐,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扩灯,死亡現(xiàn)場離奇詭異,居然都是意外死亡霜瘪,警方通過查閱死者的電腦和手機珠插,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颖对,“玉大人捻撑,你說我怎么就攤上這事$偷祝” “怎么了顾患?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長个唧。 經(jīng)常有香客問我江解,道長,這世上最難降的妖魔是什么徙歼? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任膘流,我火速辦了婚禮,結(jié)果婚禮上鲁沥,老公的妹妹穿的比我還像新娘呼股。我一直安慰自己,他們只是感情好画恰,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布彭谁。 她就那樣靜靜地躺著,像睡著了一般允扇。 火紅的嫁衣襯著肌膚如雪缠局。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天考润,我揣著相機與錄音狭园,去河邊找鬼。 笑死糊治,一個胖子當(dāng)著我的面吹牛唱矛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播井辜,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼绎谦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粥脚?” 一聲冷哼從身側(cè)響起窃肠,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刷允,沒想到半個月后冤留,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碧囊,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年纤怒,在試婚紗的時候發(fā)現(xiàn)自己被綠了糯而。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肪跋,死狀恐怖歧蒋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情州既,我是刑警寧澤谜洽,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站吴叶,受9級特大地震影響阐虚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚌卤,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一实束、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逊彭,春花似錦咸灿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至囊榜,卻和暖如春审胸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卸勺。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工砂沛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人曙求。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓碍庵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親圆到。 傳聞我的和親對象是個殘疾皇子怎抛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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

  • 1、別人的婚禮上居然把自己感動哭了芽淡。 2、姐姐來看我豆赏,還給我買了冰淇淋挣菲。 3富稻、小琴阿姨、爸爸媽媽的勤勞讓我很動容白胀。...
    Scccarlett閱讀 262評論 0 0
  • 因為有愛椭赋,每句話好好說;做情緒的主人——今天沒有做到或杠。晚上跟先生打電話說明天順路接姐姐的事哪怔,電話里先生的口...
    芳菲_0128閱讀 134評論 0 0
  • 星期五中午 天兒有點熱 微信群里有人問:食堂今天有燉牛肉么? 吃牛肉向抢,長力氣认境! 因為我們下午 要拔河 百度上面說:...
    高小花0218閱讀 369評論 0 1