多用 Git 少交稅

多用 Git 少交稅

一、為什麼要了解Git

Git是一套版本管理系統。看到“Git版本管理”,一大部分盆友已經轉身想走,在你握著門把手準備開門走人時,請最後聽我說完最後一句:人人都需要版本管理,git可以幫你少交停電/藍屏/死機稅,提高產出效率,不來一發嗎?

試過半夜寫彙報ppt嗎?'彙報ppt'→'彙報ppt1'→'彙報ppt11'→'彙報ppt2015-03-17'→'彙報ppt2015-03-17新'→'彙報ppt2015-03-17新1'……無休止的命名鬥爭,這就是自然而然的版本管理,只不過,沒有好的工具,所以顯得一團mess。

無論學生黨還是設計師(改20個版本後終於順利用回第1版),無論公眾號運營還是音樂人,都持續產出著自己的“半成品/作品”。99.99%的作品都不可能一氣呵成,比如這篇筆記的第一個commit版本,簡直慘不忍睹。如果有版本管理意識,以及高效、方便的工具,生活也許可以簡單許多,更不要說天有不測風雲的停電忘保存、腦殘刪備份等等好事等著我們。

來吧,fork有用有趣的東西,git你應該在意的東西,日拱一卒,打造我們的作品。

二、Git主要概念

Git實現在本地和遠端進行版本管理。

1.工作空間

四個空間概念:工作目錄(workspace),暫存區(index),本地倉庫(local repository),遠程倉庫(remote repository)

想象一下,我們開一個包子店(圖片做的不是同一款包子,見諒)~

  • 首先,得有一張大桌子用來和麵、擀皮兒、包餡等等,這張桌子相當於workspace,隨你折騰的地方,工作主要都在這裡進行。
多用 Git 少交稅

  • 然後,包好的包子們會放到一個蒸籠裡,等待被蒸,這個蒸籠就是index暫存區。蒸籠用來放我們想保留的成品或半成品,至於選哪些賣出去,這是以後考慮的事情。
多用 Git 少交稅

  • 下一步,蒸包子。蒸好的包子已經可以吃了,但是我們還是得先把它們從蒸籠拿出來放在
    盤子裡。盤子就類似本地倉庫local repository,裡面都是等待出貨的好東西。當然,你也可以在最後一刻把看不順眼的包子扔掉,或者自己吃掉。
多用 Git 少交稅

  • 最後一步就是把包子送到貨架/客人的桌上。公之於眾的貨架,就是遠程倉庫remote repository,醜媳婦終於見公婆啦。
多用 Git 少交稅

配合下面這張圖,我們對Git就有一個基本概念了。

多用 Git 少交稅

2.Head & branch & master & origin

Git系統的實質更像是一棵大樹,樹幹(就是Head啦)是最後一次提交的成果。在樹幹上,你可以開無數的分支(就是branch啦)胡弄,弄亂了也不怕,大不了剪掉再開一個,樹幹不受任何影響。折騰ok的分支,最後可以merge到默認branch也就是master上。

用技術性語言描述,分支用來將特性開發絕緣開來。在創建倉庫的時候,master 是“默認的”分支。在其他分支上進行開發,完成後再將它們合併到主分支上。


多用 Git 少交稅


那origin又是什麼?origin是遠程默認的倉庫。clone完成之後,Git會自動將遠程倉庫命名為origin。

那Head和master又是什麼關係?Head其實只是個指針,指向當前最近commit的branch。而master是本地默認的branch,所以Head經常都是指向master。另外Head是官方定義的,而master和origin都是大家常用的命名,並不一定要叫master和origin。[2]


3.工作流:add & commit & push

  • 把包子從桌子挪到蒸籠,叫add————已修改modified————彙報ppt初稿寫成;
  • 把包子從蒸籠挪到盤子,叫commit————已暫存staged————彙報ppt完稿存到u盤/網盤什麼的;
  • 把包子從盤子挪到貨架,叫push————已提交commited——彙報ppt發送到boss郵箱。
多用 Git 少交稅

Git的好處之一是,包子包好後,還可以回退……


多用 Git 少交稅


捷徑:


多用 Git 少交稅


三、配置

1.工作目錄 2.本地倉庫 3.遠程倉庫


四、常用命令

最常用:

<code>git command --help/<code>

1.創建

需要進入目標目錄進行操作

  • 創建新倉庫:git init
  • 創建一個本地倉庫的克隆版本:git clone /path/to/repository
  • 克隆遠端服務器上的倉庫: git clone username@host:/path/to/repository

2.查詢

<code>git status/<code>
  • staged:已在index,等待被commit.
  • unstaged:文件做了改動,但還不能被commit.
  • untracked:Git還沒有開始跟蹤,需要先add.
  • deleted:文件已被刪除,等待remove.

Staging Area:commit前把文件們收集到一起,以便打包commit。

3.add/添加

  • 添加到暫存區(讓Git開始跟蹤更改,也就是從 untracked變為tracked):git add <filename> 或 git add */<filename>
  • 添加全部文件:git add -A, -A 表示包含刪除的文件。
  • git reset: git reset <filename> 從staging area 移除文件。/<filename>

4.commit/提交

"commit" 可以理解為一次快照,幫助我們把所有改動以timeline的方式組織起來。

  • 提交改動(到head,但還沒到遠程服務器):git commit -m "代碼提交信息" git commit -m 'Add all files'
  • 把所有當前目錄下的文件加入暫存區域再運行commit:git commit -a
  • 提交到遠程倉庫:git push origin master (可以把 master 換成你想要推送的任何分支)。 如果還沒有克隆現有倉庫,並想將倉庫連接到某個遠程服務器:git remote add origin <server>。/<server>

5.push/推送

將文件推送到遠程倉庫中:git push -u origin master。遠程倉庫默認叫origin 。-u 告訴Git記住參數,下次可以直接使用push。

6.pull/拉取

更新本地倉庫至最新改動:git pull origin master

7.checkout/切換

checkout命令用於從歷史提交(或者暫存區域)中拷貝文件到工作目錄,也可用於切換分支

  • 切換分支: git checkout <branch> /<branch>
  • 新建並切換到分支:git checkout -b new_branch 等同於:git branch new_branch + git checkout new_branch
  • 把文件從暫存區域複製到工作目錄,用來丟棄本地修改:git checkout --<files>
  • 回滾到複製最後一次提交:git checkout HEAD -- <files>

8.diff/比對

git diff

9.reset/撤銷

  • 從index中撤銷所有文件:git reset
  • 從index中撤銷最後一次add的文件:git reset --<flies> /<flies>
  • 恢復之前版本:git reset --hard
  • 回滾到最近一次:git checkout -- <target>

10.merge

合併其他分支到當前分支:git merge

11.remove & clean

  • 從硬盤和index移除文件:git rm
  • 刪除分支git branch -d <branch>

Ref

  • Git簡明指南
  • What are the git concepts of HEAD, master, origin?
  • Try Git
  • 圖解Git
  • Pro Git中文版
  • Gitmagic中文版

  • HackYourself 關注普通人的心智升級,用知識的力量、用微小但持續有效的行動,每天做自我迭代升級。


    00 向你推薦:


    分享到:


    相關文章: