從0開始打造個人工作平臺——Git版本控制篇

為什么要做版本控制?

在平時的工作中午阵,經(jīng)常會遇到寫文檔的事情,而寫文檔基本都不會一蹴而就享扔,總是會修修改改很多次底桂,而版本控制能夠記錄每次修改的版本,能夠進(jìn)行回溯惧眠。有很多版本控制工具籽懦,但是作為一個程序員,肯定是首推 Git 不解釋氛魁,由于我暫時還只是一個人自己鼓搗暮顺,所以不存在多人協(xié)作流程相關(guān)的東西,但是我有多臺設(shè)備秀存,我希望能夠在多臺設(shè)備上都能操作同樣的文件捶码,再結(jié)合對文件需要進(jìn)行版本控制,所以下面配置 Git 版本控制環(huán)境分需求進(jìn)行介紹或链,大家可以根據(jù)自己的需求進(jìn)行配置惫恼,環(huán)境是在windows系統(tǒng)下。

必需工具

基于需求 命令行 英文界面 中文界面
單人本地 Git Git + TortoiseGit Git + TortoiseGit + LanguagePack
單人遠(yuǎn)程 Git + ssh-keygen Git + TortoiseGit + PuTTY Git + TortoiseGit + PuTTY+ LanguagePack
多人遠(yuǎn)程 GitHub + Git + ssh-keygen Git + TortoiseGit + PuTTY GitHub no Chinese version, same as above
  • 單人本地:表示版本庫僅被單人在本地一臺機(jī)器上修改澳盐、更新祈纯、使用,能夠?qū)Ρ镜氐奈募M(jìn)行版本控制洞就,需求不高的話盆繁,這種情況下就可以滿足了;
  • 單人遠(yuǎn)程:仍然是單人旬蟋,但是可能會有多個設(shè)備都想對這個版本庫進(jìn)行操作油昂,如果通過不斷的拷貝太過麻煩,可以自己建立一個遠(yuǎn)程的 Git 服務(wù)器,配置此多個設(shè)備都可以連接到 Git 服務(wù)器獲取版本庫冕碟,先拉后推拦惋,相當(dāng)于在模擬多人協(xié)同工作流程了;
  • 多人遠(yuǎn)程:這里主要指 GitHub 提供的社交化編程安寺,可以把自己的東西上傳到 GitHub 上進(jìn)行開源厕妖,可能可以吸收到志同道合的朋友一起來維護(hù)一個項目,也是一種展示自己項目實力的方式挑庶;
  • 命令行:通過 Git 提供的 bash 來執(zhí)行相關(guān) Git 命令言秸,可以練習(xí) Git 命令,不過的確上手比較困難一點(diǎn)迎捺,當(dāng)然举畸,大神就盡管用了;
  • 英文界面:可以練習(xí)英語表達(dá)凳枝,可能初步上手會有點(diǎn)點(diǎn)困惑抄沮;
  • 中文界面:可能是最適合小白新手入門的配置,推薦岖瑰;
  • PS:Git其實也提供了界面的 GUI 操作叛买,右鍵選擇 Git GUI Here 個人覺得非常簡陋,還不如命令行敲起來舒服蹋订,所以如果用界面的話率挣,還是建議用 TortoiseGit 比較好。

工具分類

  1. Git:最基礎(chǔ)的工具辅辩,支持 Git 的相關(guān)命令难礼;
  2. ssh-keygen/PuTTY:生成公私鑰對的工具,如果要連接遠(yuǎn)程 Git 服務(wù)器玫锋,就需要生成一個公鑰和一個私鑰蛾茉,把公鑰放到遠(yuǎn)端的 Git 服務(wù)器中,私鑰保存在本地撩鹿,每次從遠(yuǎn)程克隆或拉取文件到本地和從本地推送文件到遠(yuǎn)程時都需要使用這一對公私鑰作為認(rèn)證手段谦炬,其中PuTTY是專門用來生成 TortoiseGit 可以識別的公私鑰對,普通由ssh-keygen生成的公私鑰無法被 TortoiseGit 所使用节沦;
  3. TortoiseGit:windows下的界面工具键思,支持通過各種按鈕進(jìn)行方便的克隆、拉取甫贯、推送吼鳞、對比、分支操作等叫搁;
  4. LanguagePack:是 TortoiseGit 的語言包赔桌,TortoiseGit 默認(rèn)為全英文界面供炎,可以安裝語言包轉(zhuǎn)換成中文;

配置工作

  • Git:直接下載安裝疾党,下一步往下點(diǎn)音诫,最后確定,只需要再配置一下全局的提交人信息即可雪位,隨便在某個文件夾下右鍵選擇 Git Bash Here
    • 輸入 git config --global user.name "Chayeen"竭钝,Chayeen修改成你自己的名字,這里是在配置每次 Git 提交文件到版本庫時的提交人信息雹洗,主要用于多人協(xié)作時可以看到到底是誰進(jìn)行的此次提交香罐,方便找人;
    • git config --global user.email "chayeenhuang@126.com"时肿,同樣穴吹,把chayeenhuang@126.com修改成你自己的郵箱即可;
  • ssh-keygen:主要工作就是生成公私鑰對嗜侮,windows應(yīng)該自帶該軟件,安裝 Git 后啥容,隨便在某個文件夾下右鍵選擇 Git Bash Here
    • 輸入cd ~/.ssh:查看是否已經(jīng)有 id_rsa 和 id_rsa.pub 兩個文件锈颗,如果有,跳過下一步咪惠,沒有就下一步击吱;
    • 輸入ssh-keygen.exe -t rsa -C "郵箱名"回車,如ssh-keygen.exe -t rsa -C "chayeenhuang@126.com"遥昧,回車之后要求輸入公私鑰存儲的文件名覆醇,如果直接回車,默認(rèn)文件名為 id_rsa炭臭,否則就是你輸入的名字永脓,建議直接回車(后續(xù) GitHub 默認(rèn)讀取的就是 id_rsa 名字的私鑰);然后會要求輸入密碼鞋仍,這個密碼其實是在對私鑰加密常摧,如果沒有輸密碼,別人如果拿到你的私鑰威创,他在使用的時候就可以直接使用落午,否則就需要輸入密碼才行。建議還是輸一個簡單的密碼肚豺,只是輸了之后溃斋,推送到遠(yuǎn)端 Git 服務(wù)器時,有時候就需要輸入密碼才能用吸申,稍微讓自己的操作又麻煩了點(diǎn)梗劫;
  • TortoiseGit 和 PuTTY:配置工作同上類似享甸,只是上面是通過命令行,而這里是通過界面按鈕在跳,正常安裝枪萄,下一步往下點(diǎn),最后確定即可猫妙;
    • 安裝完成后瓷翻,在任意文件夾下右鍵,可看到 TortoiseGit 按鈕割坠,點(diǎn)擊齐帚;
    • Settings 設(shè)置,彈出一個框彼哼,點(diǎn)擊確定对妄;
    • General,點(diǎn)擊 Re-run First Start Wizard敢朱;
    • 彈出一個框剪菱,第一頁設(shè)置語言,默認(rèn)英文拴签;第二頁可以不看孝常,跳過;第三頁蚓哩,瀏覽選中 Git.exe 的安裝路徑构灸;第四頁,配置 Git 提交的姓名和郵箱岸梨, Chayeenchayeenhuang@126.com 喜颁;第五頁,把默認(rèn) OpenSSH 修改成 TortoiseGitPlink;
    • 還是在第五頁曹阔,點(diǎn)擊右側(cè)的 Generate PuTTY key pair 半开,彈出生成公私鑰的界面,點(diǎn)擊 Generate次兆,在 該界面框內(nèi) 移動鼠標(biāo)稿茉,直至進(jìn)度條滿生成公私鑰,然后點(diǎn)擊 Save public KeySave private key 保存公私鑰在某個位置(后面要用)芥炭;這里可以輸入公私鑰密碼 Key passphrase漓库,之后如果要使用這個公私鑰之前就需要使用這個密碼才能使用,也可以不輸入园蝠,這樣任何人只要拿到這對公私鑰就可以使用渺蒿,同 ssh-keygen 相似;
    • TortoiseGit 還需要多做一步彪薛,在 pageant.exe 中還要進(jìn)一步配置才行:
      • 找到 PuTTY 的安裝路徑茂装,找到執(zhí)行文件 pageant.exe雙擊運(yùn)行怠蹂;
      • 打開桌面底部工作條右邊折疊起來的地方(就是一般收qq等軟件小圖標(biāo)的地方),找到 pageant 的圖表少态,右鍵 Add Key城侧,找到上面 PuTTY 生成的私鑰添加即可;
  • LanguagePack:更沒有什么配置工作彼妻,只是在安裝它之前必須要先安裝 TortoiseGit 嫌佑,然后再安裝它,重啟即可侨歉。

至此屋摇,本地的配置工作告一段落,利用 Git 完成了基本軟件環(huán)境幽邓,然后利用 TortoiseGit 安裝了界面環(huán)境炮温,利用 ssh-keygen 和 PuTTY 完成了生成公私鑰的任務(wù),下面的配置則是在服務(wù)器端的操作牵舵。

  • Git 服務(wù)器搭建及配置
    • 如果是能夠聯(lián)外網(wǎng)的服務(wù)器柒啤,比如說阿里云這種,直接登錄到遠(yuǎn)端服務(wù)器畸颅,使用包管理工具 yum intall git白修,依賴yum包管理工具就可以安裝了;
    • 建立專門操作版本控制的用戶 git重斑,并禁止它通過shell遠(yuǎn)程登錄:
      • useradd git回車;
      • passwd git肯骇,回車輸入密碼2次窥浪,linux不會顯示密碼,這是正常的笛丙,直接輸就行了漾脂;
      • vim /etc/passwd,修改git用戶權(quán)限胚鸯,git:x:1000:1000::/home/git:/usr/bin/git-shell骨稿,主要是把/home/git:后面修改成/usr/bin/git-shell即可;
    • 建立遠(yuǎn)程倉庫姜钳,之后可以讓本地克隆它然后就開始開發(fā)了:
      • mkdir 文件夾坦冠,在遠(yuǎn)端新建一個文件夾,作為遠(yuǎn)端倉庫位置哥桥,假設(shè)就是/home/demo辙浑,后續(xù)會用到;
      • cd demo拟糕,進(jìn)入文件夾判呕;
      • git init倦踢,回車在該文件夾內(nèi)建立一個版本庫;
      • git config --bool core.bare true侠草,把該版本庫修改成一個 bare 裸倉庫辱挥,如果不是裸倉庫的話,在本地提交到遠(yuǎn)端的時候就會出現(xiàn) 遠(yuǎn)端已經(jīng)存在工作樹边涕,本地工作樹提交沖突的問題(深層次的原因不清楚晤碘,反正用這個命令就可以解決問題);
      • cd ..回到上層文件夾奥吩;
      • chown -R git:git demo修改該文件夾的用戶權(quán)限哼蛆,由于之前在服務(wù)器上搭建 git 的時候,新建了一個 git 用戶并限制了它的 shell 登錄(即不能使用 git 賬號登錄該服務(wù)器)霞赫,所以 sudo 切換到 git 用戶下建立倉庫不可行腮介,上述文件夾及操作都是在 root 用戶下,需要修改成 git 用戶端衰,這樣本地推送的時候才能夠正確推送上去叠洗,否則會出現(xiàn) git 用戶沒有對 root 建立的文件夾的寫權(quán)限而推送失敗。
    • 添加公鑰到服務(wù)器上:
      • 前面在本地建立了一對公私鑰旅东,但是并沒有在服務(wù)器上進(jìn)行配置灭抑,需要把公鑰配置到服務(wù)器中,這樣抵代,當(dāng)本地與服務(wù)器建立連接的時候腾节,就可以用本地的私鑰和服務(wù)器的公鑰進(jìn)行匹配了;
      • 登錄遠(yuǎn)程服務(wù)器荤牍,打開git用戶主目錄下的.ssh目錄案腺,注意這里使用 cd ~/.ssh 是進(jìn)不去的,原因是登錄時是root用戶康吵,如果這么進(jìn)就進(jìn)入root主目錄了劈榨,所以只能 cd /home/git/.ssh回車;
      • vim authorized_keys晦嵌,把公鑰復(fù)制粘貼到文件里同辣,如果沒有這個文件,vim會自動新建一個新的惭载,文件名一定不能錯旱函。
  • GitHub配置
    • 申請一個 GitHub 的賬號;
    • 添加公鑰到 GitHub 的賬號中:
      • 道理是一樣的描滔,登錄 GitHub 后陡舅,點(diǎn)擊個人頭像,選擇Setting伴挚;
      • 點(diǎn)擊SSH and GPG keys靶衍,點(diǎn)擊按鈕New SSH key灾炭,給公鑰取一個名字作為區(qū)分,然后把內(nèi)容貼在下面的內(nèi)容框中颅眶,保存即可蜈出;
      • 如果采用命令行,添加 ssh-keygen.exe 生成的那個涛酗,GitHub 默認(rèn)到 ~/.ssh文件下找 id_rsa 文件铡原,一定不能改變位置和名稱;
      • 如果要用 TortoiseGit 商叹,必須添加 PuTTY 生成的那個燕刻,只要在 pageant 中配置過即可。

至此剖笙,所有的配置工作完成卵洗,這里簡單的梳理一下流程:

  1. 下載軟件、安裝弥咪;
  2. 生成公私鑰對过蹂;
  3. 把公鑰配置到遠(yuǎn)端;
  4. 開始工作聚至!

工作基本流程

  1. 僅使用Git:——命令行
    • 新建一個文件夾酷勺;
    • 進(jìn)入文件夾,右鍵扳躬,點(diǎn)擊 Git Bash Here脆诉;
    • 輸入git init,在這個文件夾下新建了一個本地版本庫贷币,此時在文件夾下可以看到一個隱藏文件.git库说;
    • 在該文件夾下,新建一個文件片择,如 test.txt
    • git add test.txt骚揍,添加文件到本地的暫存區(qū)字管,表示想要git跟蹤該文件的修改歷史;
    • git commit -m "注釋"信不,每次提交必須寫注釋嘲叔,用來解釋這次提交干了什么,便于回溯抽活,表示把該文件提交到本地倉庫硫戈,如果前面沒有配置提交人信息的話,這里就需要補(bǔ)充上下硕,否則不能提交丁逝;
    • 至此汁胆,僅在本地的版本控制基本就夠了,還有更多的 git 命令霜幼,如果用到再查就行嫩码。
  2. Git + 遠(yuǎn)端服務(wù)器 or GitHub:——命令行
    • 如果要提交到遠(yuǎn)端,如前所述罪既,需要先在遠(yuǎn)端建立一個空的版本庫克隆到本地進(jìn)行操作铸题;
    • 確定遠(yuǎn)端要克隆的文件夾路徑后,在本地進(jìn)入一個父文件夾琢感,右鍵丢间,點(diǎn)擊 Git Bash Here輸入 git clone git@1.1.1.1:/home/demo 遠(yuǎn)程倉庫的鏈接,回車即可驹针,如果是 GitHub 命令I(lǐng)P地址的地方應(yīng)該是 github.com 烘挫,另外,如果公私鑰的配置有點(diǎn)問題牌捷,可能會需要輸入該 git 用戶遠(yuǎn)端服務(wù)器密碼墙牌;
    • git add 文件名,文件名連續(xù)寫多個暗甥,用空格分隔即可喜滨,添加文件到本地的工作空間,表示想要跟蹤該文件的修改歷史撤防;
    • git commit -m "注釋"虽风,每次提交必須寫注釋,用來解釋這次提交干了什么寄月,便于回溯辜膝,表示把該文件提交到本地倉庫;
    • git push漾肮,推送厂抖,表示把本地倉庫里面的東西提交到遠(yuǎn)程倉庫中;
    • git pull克懊,拉取忱辅,記住四個字 先拉后推,每次推送到遠(yuǎn)程倉庫之前谭溉,或者說墙懂,每次工作之前,都需要先從遠(yuǎn)端拉取內(nèi)容扮念,然后再進(jìn)行開發(fā)损搬,這個時候可能會遇到一些沖突的情況,解決沖突就是稍微麻煩一點(diǎn)的事情了,命令行暫時不會巧勤,開始使用界面解決沖突嵌灰,比較好看。
  3. 使用 TortoiseGit :—— windows 界面
    • 克绿吖亍:
      • 找一個沒有進(jìn)行版本控制的文件夾伞鲫,直接右鍵選擇克隆 Git Clone
      • 在彈出來的框中签舞,填寫URLDirectory秕脓,分別表示遠(yuǎn)端的版本庫鏈接和本地的版本庫名稱,和前面命令行一樣儒搭,URL填寫如git@github.com:Chayeen/chayeen.github.io.git吠架,名稱默認(rèn)會是chayeen.github.io,點(diǎn)擊OK即可搂鲫;
    • 提交文件到本地倉庫:
      • 進(jìn)入一個進(jìn)行版本控制的文件傍药,右鍵選擇提交到主分支Git commit -> master
      • 在彈出來的框中魂仍,選擇需要進(jìn)行版本控制的文件拐辽,并設(shè)置提交人的信息,確定提交即可擦酌;
      • 顯示成功提交俱诸,則文件作為一個版本存到了本地的版本倉庫;
    • 推送文件到遠(yuǎn)端倉庫:
      • 上面的框別關(guān)赊舶,確定的左側(cè)睁搭,有一個推送push按鈕,點(diǎn)擊之后笼平,推送文件到了遠(yuǎn)端园骆;
      • 顯示成功推送,則文件作為一個版本存到了遠(yuǎn)程的版本倉庫寓调。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锌唾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子夺英,更是在濱河造成了極大的恐慌晌涕,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秋麸,死亡現(xiàn)場離奇詭異,居然都是意外死亡炬太,警方通過查閱死者的電腦和手機(jī)灸蟆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炒考,你說我怎么就攤上這事可缚。” “怎么了斋枢?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵帘靡,是天一觀的道長。 經(jīng)常有香客問我瓤帚,道長描姚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任戈次,我火速辦了婚禮轩勘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怯邪。我一直安慰自己绊寻,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布悬秉。 她就那樣靜靜地躺著澄步,像睡著了一般。 火紅的嫁衣襯著肌膚如雪和泌。 梳的紋絲不亂的頭發(fā)上村缸,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機(jī)與錄音允跑,去河邊找鬼王凑。 笑死,一個胖子當(dāng)著我的面吹牛聋丝,可吹牛的內(nèi)容都是我干的索烹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼弱睦,長吁一口氣:“原來是場噩夢啊……” “哼百姓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起况木,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤垒拢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后火惊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體求类,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年屹耐,在試婚紗的時候發(fā)現(xiàn)自己被綠了尸疆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖寿弱,靈堂內(nèi)的尸體忽然破棺而出犯眠,到底是詐尸還是另有隱情,我是刑警寧澤症革,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布筐咧,位于F島的核電站,受9級特大地震影響噪矛,放射性物質(zhì)發(fā)生泄漏量蕊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一摩疑、第九天 我趴在偏房一處隱蔽的房頂上張望危融。 院中可真熱鬧,春花似錦雷袋、人聲如沸吉殃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛋勺。三九已至,卻和暖如春鸠删,著一層夾襖步出監(jiān)牢的瞬間抱完,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工刃泡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巧娱,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓烘贴,卻偏偏與公主長得像禁添,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子桨踪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理老翘,服務(wù)發(fā)現(xiàn),斷路器锻离,智...
    卡卡羅2017閱讀 134,600評論 18 139
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,632評論 9 163
  • 不知道從前的歌為什么那么好聽铺峭,聽了多少遍還是那樣讓人瞬間沉淀下來。心里真正的安靜汽纠,腦袋里空白只想一直這樣卫键。時常在想...
    海鮮粥吃個宵夜吧閱讀 147評論 0 0
  • 新西蘭由北島、南島兩個主島和斯圖爾特島虱朵、坎貝爾島等幾十個小島組成莉炉,境內(nèi)多山啤呼,河流多短而湍急。北島多火山呢袱、溫泉,南島...
    蘆瘋子閱讀 697評論 2 8