Git初階整理

談起開源疚脐,相信很多人就會(huì)想到Linux系統(tǒng)。Linux也在全世界熱心的志愿者的參與下,不斷壯大為全世界最大的系統(tǒng)軟件趟妥,但是Linux卻存在不同的版本分支,不同的Linux代碼的管理是一個(gè)很讓人頭疼的問題佣蓉。

一些機(jī)緣巧合之下披摄,Linux的創(chuàng)建者Linus用C寫了兩周時(shí)間的時(shí)間,完成了一個(gè)分布式版本控制系統(tǒng)勇凭,就是Git疚膊。在它出現(xiàn)的一個(gè)月后,Linux的源代碼就已經(jīng)由Git管理了虾标。至今寓盗,世界許多的開源項(xiàng)目都由其托管,Git也迅速成為世界上最為流行的分布式版本控制系統(tǒng)璧函。

簡(jiǎn)單地理解一下傀蚌,Git就是一個(gè)代碼管理倉(cāng)庫(kù),它可以幫你的項(xiàng)目管理你的項(xiàng)目伊始到后期維護(hù)的代碼蘸吓。同時(shí)善炫,全部的代碼還可以克隆給團(tuán)隊(duì)的任何一個(gè)人,其他人所做的任何修改库继,你也能夠知道箩艺。當(dāng)然,因?yàn)槭欠植际焦芾硐芴眩?dāng)你的電腦上壞掉了舅桩,其他人是有完整的版本庫(kù)的,直接重新復(fù)制一份即可雨膨,這相較于集中式版本控制自然安全很多擂涛。

Git安裝

Git的發(fā)明本身是為了Linux源代碼管理的,但是隨著它的發(fā)展聊记,常見的系統(tǒng)平臺(tái)已經(jīng)能夠很好支持了的撒妈。

這里簡(jiǎn)單介紹一下Git在Linux、Mac和Windows下的安裝排监。

  • 在不同的發(fā)型版本的Linux下狰右,打開系統(tǒng)下的Terminal終端環(huán)境,輸入命令即可舆床。下面是不同Linux版本系統(tǒng)下的安裝命令:

    Debian/Ubuntu:
    $ apt-get install git
    Fedora:
    $ yum install git (up to Fedora 21)
    $ dnf install git (Fedora 22 and later)
    Gentoo:
    $ emerge --ask --verbose dev-vcs/git
    Arch Linux:
    $ pacman -S git
    openSUSE:
    $ zypper install git
    Mageia:
    $ urpmi git
    FreeBSD:
    $ pkg install git
    Solaris 9/10/11 (OpenCSW):
    $ pkgutil -i git
    Solaris 11 Express:
    $ pkg install developer/versioning/git
    OpenBSD:
    $ pkg_add git
    Alpine:
    $ apk add git

  • 在Mac下棋蚌,打開這個(gè)網(wǎng)址 https://git-scm.com/download/mac 嫁佳,將Git的dmg安裝包下載下來,安裝即可谷暮。

    (圖片來源網(wǎng)上)

  • 在Windows下蒿往,從這個(gè)網(wǎng)址 https://git-for-windows.github.io/ ,將Git的安裝包下載下來湿弦,按照默認(rèn)選項(xiàng)一直NEXT下去瓤漏,安裝完成即可。

安裝完成之后颊埃,以Windows為例蔬充,在開始菜單找到"Git" > "Git Bash",或者打開命令提示符班利,輸入git饥漫,回車后出現(xiàn)命令選項(xiàng)即安裝成功。

安裝完成之后罗标,這里需要進(jìn)一步設(shè)置你的Git趾浅,在Git Bash命令行下,輸入以下命令:

? $ git config --global user.name "Your Name"
? $ git config --global user.email "email@example.com"


這里需要注意的是馒稍,需要你在 https://github.com/ 下先注冊(cè)屬于你的帳號(hào)皿哨。

創(chuàng)建版本庫(kù)

以 F:\MyGit\PY_ML 文件夾為例,在 F:\MyGit\ 路徑下新建文件夾 PY_ML纽谒,做為版本庫(kù)证膨。打開該新建目錄,右鍵菜單鼓黔,出現(xiàn)箭頭所指選項(xiàng)央勒,點(diǎn)擊后出現(xiàn)Git Bash命令行窗口,輸入命令 git init 澳化,即初始化該版本庫(kù)崔步。


此時(shí)該目錄下即出現(xiàn)一個(gè)隱藏的名字為".git"的文件夾

添加文件

在添加文件之前,強(qiáng)調(diào)一點(diǎn)缎谷,Git無法對(duì)二進(jìn)制文件進(jìn)行版本跟蹤井濒,這里需要以純文本方式編寫文件。所以建議以'UTF-8'的編碼格式編寫文件列林。

這里推薦使用Notepad++軟件進(jìn)行文件的編寫瑞你。打開安裝好的Notepad++軟件,新建文件后希痴,輸入你對(duì)自己這個(gè)版本庫(kù)的介紹或者任意內(nèi)容者甲,以readme.txt的文件名保存在版本庫(kù)目錄下。


這時(shí)在命令行下輸入git status砌创,回車后出現(xiàn)

此時(shí)Git已經(jīng)識(shí)別到了該版本庫(kù)下出現(xiàn)了新的文件虏缸,但是此時(shí)版本庫(kù)還未添加該文件鲫懒。

輸入git add readme.txt命令,即可添加該文件刽辙。


但是窥岩,文件是已經(jīng)添加了,但是還需要一步扫倡,即提交到倉(cāng)庫(kù)中去,否則文件如果更改了竟纳,Git不會(huì)有記錄的撵溃,這時(shí)候輸入一下命令git commit -m "這里輸入你的提交說明",即可完成提交锥累。

版本控制

我們已經(jīng)成功提交了readme.txt缘挑,后來,我們對(duì)這個(gè)文件進(jìn)行了修改桶略,這時(shí)候如果輸入git status命令语淘,會(huì)出現(xiàn)一下情況:


Git發(fā)現(xiàn)了文件的變動(dòng),那么文件發(fā)生了那些變動(dòng)呢际歼?

輸入git diff后惶翻,出現(xiàn)了變動(dòng)的情況:


Bash告訴了我們,在readme.txt文件中鹅心,在“JasonJe的Python機(jī)器學(xué)習(xí)代碼倉(cāng)庫(kù)”行下吕粗,添加了兩行,一行為空行旭愧,另一行內(nèi)容為“123”的修改颅筋。此時(shí)我們?nèi)绻枰略撐募匦螺斎朊?code>git add readme.txt和git commit -m "修改說明"即可输枯。

在上述的操作中议泵,我們從創(chuàng)建readme.txt到修改它,共進(jìn)行了兩次版本更新桃熄,通過git log命令先口,可以看到你的操作情況:


這時(shí)候,我們希望將文件恢復(fù)到上一版本的時(shí)候瞳收,需要輸入命令git reset --hard HEAD^即可池充。這時(shí)候我們查看一下文件,輸入cat readme.txt命令進(jìn)行查看缎讼∈湛洌可以看到,文件已經(jīng)恢復(fù)到前一版本的時(shí)候血崭。


如果我們希望回復(fù)到任意版本的時(shí)候卧惜,就需要使用上述的git log命令厘灼,尋找需要回復(fù)的版本號(hào)(commit id),我們輸入以下命令git reset --hard 915b342a58198d8e018dab08709df4bff187cc19咽瓷,即可恢復(fù)到id為915b342a58198d8e018dab08709df4bff187cc19的版本设凹。


這里我們將readme.txt文件修改到最初的時(shí)候,輸入命令git status茅姜,會(huì)出現(xiàn)我們修改過該文件的提示闪朱,此時(shí)我們需要撤銷該修改,使用git checkout -- readme.txt即可钻洒。


我們?cè)诎姹編?kù)中再添加和提交一個(gè)"removeme.txt"文件奋姿,如果直接刪除該文件rm remove.txt,此時(shí)Git會(huì)提示你該文件被刪除了素标。這時(shí)候称诗,你需要使用git checkout -- removeme.txt來撤銷刪除;或者你需要使用git rm removeme.txtgit commit -m "刪除說明"來真正刪除該文件头遭。

提交遠(yuǎn)程庫(kù)

一開始你已經(jīng)注冊(cè)了自己的GitHub帳號(hào)寓免,這時(shí)候你可能需要將代碼文件上傳到自己的GitHub倉(cāng)庫(kù)中,以便不同地點(diǎn)進(jìn)行你的文件同步管理计维。

在這開始袜香,你需要進(jìn)行一些設(shè)置,在Git Bash下鲫惶,輸入命令ssh-keygen -t rsa -C "youremail@example.com",如果不需要處于安全過多的考慮困鸥,一直回車即可。


這時(shí)候剑按,在你的用戶目錄下C:\Users\Username\.ssh就產(chǎn)生了id_rsa和id_rsa.pub這兩個(gè)文件疾就,其中id_rsa是私鑰,不能泄露出去艺蝴,id_rsa.pub是公鑰猬腰,可以放心地告訴任何人。

這時(shí)候利用記事本文件打開id_rsa.pub文件猜敢,復(fù)制里面的內(nèi)容姑荷,進(jìn)入你的GitHub,設(shè)置你的SSH keys



"Title"的內(nèi)容隨意設(shè)置即可缩擂,在"Key"下粘貼剛剛復(fù)制的內(nèi)容后鼠冕,點(diǎn)擊"Add SSH key"即可。

此時(shí)需要在你的GitHub下添加你的倉(cāng)庫(kù)胯盯。在你的GitHub界面下懈费,在右上角點(diǎn)擊"+"號(hào),選擇"New repository"新建一個(gè)倉(cāng)庫(kù)博脑,在新建倉(cāng)庫(kù)頁(yè)面下進(jìn)行如下設(shè)置憎乙。


需要注意的是票罐,倉(cāng)庫(kù)的名字需要設(shè)置為你本地倉(cāng)庫(kù)的名字。

這時(shí)候回到Bash界面泞边,輸入一下命令即可git remote add origin git@github.com:yourname/repositoryname.gitgit push -u origin master即可该押。


待到上傳完成,重新回到你的GitHub阵谚,刷新即可看到你的倉(cāng)庫(kù)已經(jīng)提交成功蚕礼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市梢什,隨后出現(xiàn)的幾起案子奠蹬,更是在濱河造成了極大的恐慌,老刑警劉巖绳矩,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罩润,死亡現(xiàn)場(chǎng)離奇詭異玖翅,居然都是意外死亡翼馆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門金度,熙熙樓的掌柜王于貴愁眉苦臉地迎上來应媚,“玉大人,你說我怎么就攤上這事猜极≈薪” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵跟伏,是天一觀的道長(zhǎng)丢胚。 經(jīng)常有香客問我,道長(zhǎng)受扳,這世上最難降的妖魔是什么携龟? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮勘高,結(jié)果婚禮上峡蟋,老公的妹妹穿的比我還像新娘。我一直安慰自己华望,他們只是感情好蕊蝗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赖舟,像睡著了一般蓬戚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宾抓,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天碌更,我揣著相機(jī)與錄音裕偿,去河邊找鬼。 笑死痛单,一個(gè)胖子當(dāng)著我的面吹牛嘿棘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旭绒,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼鸟妙,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了挥吵?” 一聲冷哼從身側(cè)響起重父,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忽匈,沒想到半個(gè)月后房午,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丹允,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年郭厌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雕蔽。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡折柠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出批狐,到底是詐尸還是另有隱情扇售,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布嚣艇,位于F島的核電站承冰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏食零。R本人自食惡果不足惜困乒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一液南、第九天 我趴在偏房一處隱蔽的房頂上張望阁谆。 院中可真熱鬧吏饿,春花似錦据途、人聲如沸姐仅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怀各。三九已至频伤,卻和暖如春恳谎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工因痛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留婚苹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓鸵膏,卻偏偏與公主長(zhǎng)得像膊升,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谭企,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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