Git操作手冊(cè)

配置 GitHub

  1. 進(jìn)入 Github的SSH keys
  2. 如果頁面里已經(jīng)有一些 key示弓,就點(diǎn)「delete」按鈕把這些 key 全刪掉刻撒。如果沒有,就往下看
  3. 點(diǎn)擊 New SSH key,你需要輸入 TitleKey随闽,但是你現(xiàn)在沒有 key,往下看
  4. 打開 Git Bash
  5. 復(fù)制并運(yùn)行 rm -rf ~/.ssh/* 把現(xiàn)有的 ssh key 都刪掉嫁审,這句命令行如果你多打一個(gè)空格征绸,可能就要重裝系統(tǒng)了,建議復(fù)制運(yùn)行甘有。
  6. 運(yùn)行 ssh-keygen -t rsa -b 4096 -C "你的郵箱"诉儒,注意填寫你的郵箱!
  7. 按回車三次
  8. 運(yùn)行 cat ~/.ssh/id_rsa.pub亏掀,得到一串東西忱反,完整的復(fù)制這串東西
  9. 回到上面第 3 步的頁面,在 Title 輸入「我的第一個(gè) key」
  10. 在 Key 里粘貼剛剛你你復(fù)制的那串東西
  11. 點(diǎn)擊 Add SSH key
  12. 回到 Git Bash
  13. 運(yùn)行 ssh -T git@github.com滤愕,你可能會(huì)看到這樣的提示:
    輸入 yes 回車……問你話你就答温算,別傻在那
  14. 然后如果你看到 Permission denied (publickey). 就說明你失敗了,請(qǐng)回到第 1 步重來间影,是的注竿,回到第 1 步重來;如果你看到 Hi FrankFang! You've successfully authenticated, but GitHub does not provide shell access. 就說明你成功了宇智!
    好了蔓搞,終于 TMD 添加了一個(gè)無聊的 SSH key,不要問我這個(gè)有什么用随橘,因?yàn)橐粫?huì)兒你就會(huì)用到它喂分,你想了解原理就看這篇文章

如果要講清楚,太浪費(fèi)時(shí)間了机蔗,我們只是想用用 GitHub 而已蒲祈。

  • 一臺(tái)電腦只需要一個(gè) SSH key
  • 一個(gè) SSH key 可以訪問你的所有倉庫,即使你有 1000000 個(gè)倉庫萝嘁,都沒問題
  • 如果你新買了電腦梆掸,就在新電腦上重新生成一個(gè) SSH key,把這個(gè) key 也上傳到 GitHub牙言,它可以和之前的 key 共存在 GitHub 上
  • 如果你把 key 從電腦上刪除了酸钦,重新生成一個(gè) key 即可,替換之前的 key

配置 git

git config --global user.name //user.name改為你的英文名
git config --global user.email //user.email你的郵箱
git config --global push.default matching
git config --global core.quotepath false
git config --global core.editor "vim"

五句話咱枉,依次運(yùn)行卑硫。不執(zhí)行的話徒恋,電腦可能會(huì)爆炸你信不信。

使用 git

使用 git 有三種方式欢伏,請(qǐng)按照你的需求選擇

  • 只在本地使用
  • 將本地倉庫上傳到 GitHub
  • 下載 GitHub 上的倉庫

1.只在本地使用

1.1 初始化

  1. 創(chuàng)建目錄作為我們的項(xiàng)目目錄:mkdir git-demo-2
  2. 進(jìn)入目錄 cd git-demo-2
  3. git init入挣,這句命令會(huì)在 git-demo-1 里創(chuàng)建一個(gè) .git 目錄
  4. ls -la 你就會(huì)看到 .git 目錄,它就是一個(gè)「倉庫」硝拧,不要進(jìn)去看径筏,這倉庫里面有毒,別進(jìn)去障陶!
  5. 在 git-demo-1 目錄里面添加任意文件滋恬,假設(shè)我們添加了兩個(gè)文件,分別是 index.html 和 css/style.css

touch index.html
mkdir css
touch css/style.css

  1. 運(yùn)行 git status -sb 可以看到文件前面有 ?? 號(hào)

Initial commit on master

?? css/
?? index.html

這個(gè) ?? 表示 git 一臉懵逼抱究,不知道你要怎么對(duì)待這些變動(dòng)夷恍。

  1. 使用 git add 將文件添加到「暫存區(qū)」
  • 你可以一個(gè)一個(gè)地 add

git add index.html
git add css/style.css

  • 你也可以一次性 add

git add . 意思是把當(dāng)前目錄(.表示當(dāng)前目錄)里面的變動(dòng)都加到「暫存區(qū)」

  1. 再次運(yùn)行 git status -sb,可以看到 ?? 變成了 A

Initial commit on master

A css/style.css
A index.html

A 的意思就是添加媳维,也就是說你告訴 git酿雪,這些文件我要加到倉庫里

  1. 使用 git commit -m "信息" 將你 add 過的內(nèi)容「正式提交」到本地倉庫(.git就是本地倉庫),并添加一些注釋信息侄刽,方便日后查閱
  • 你可以一個(gè)一個(gè)地 commit

git commit index.html -m '添加index.html'
git commit css/style.css -m "添加 css/style.css"

  • 你也可以一次性commit

git commit . -m "添加了幾個(gè)文件"

  1. 再再次運(yùn)行 git status -sb指黎,發(fā)現(xiàn)沒有文件變動(dòng)了,這是因?yàn)槲募淖儎?dòng)已經(jīng)記錄在倉庫里了州丹。
    這時(shí)你使用 git log 就可以看到歷史上的變動(dòng):

commit f0d95058cd32a332b98967f6c0a701c64a00810a
Author: phoebechoi phoebechoi.isme@gmail.com
Date: Thu Sep 28 22:30:43 2017 +0800

添加幾個(gè)文件

  1. 以上就是 git add / git commit 的一次完整過程醋安,可以看到,挺復(fù)雜的墓毒。原則上吓揪,錯(cuò)了任何一步,都從頭來一遍所计,做到你不會(huì)再手抖為止柠辞。

1.2 文件變動(dòng)

如果我想繼續(xù)改文件,應(yīng)該怎么做呢主胧?

  1. start css/style.css 會(huì)使用默認(rèn)的編輯器打開 css/style.css(macOS 上對(duì)應(yīng)的命令是 open css/style.css
  2. 然后我們?cè)?css/style.css 里寫入 body {background: red}叭首,保存退出
  3. 運(yùn)行 git status -sb 發(fā)現(xiàn)提示中有一個(gè) M

master

M css/style.css

這個(gè) M 的意思就是 Modified,表示這個(gè)文件被修改了

  1. 此時(shí)你如果想讓改動(dòng)保存到倉庫里踪栋,你需要先 git add css/style.css 或者也可以git add .
    注意焙格,由于這個(gè) css/style.css 以前被我們 add 過,你往文章上面看夷都,我們是 add 過 css/style.css 的眷唉,所以此處的 git add 操作可以省略,但我建議你使用 git 的前一個(gè)月,不要省略 git add冬阳。
    換句話說荣瑟,每一次改動(dòng),都要經(jīng)過 git addgit commit 兩個(gè)命令摩泪,才能被添加到 .git 本地倉庫里。
  2. 再次運(yùn)行 git status -sb 發(fā)現(xiàn) M 由紅色變成了綠色劫谅,紅色和綠色有啥區(qū)別呢见坑?別管它們的區(qū)別,記住我說的捏检,先 add荞驴,再 commit,等你熟練之后再去理解區(qū)別贯城。
    先形成肌肉記憶熊楼,在去形成大腦記憶!
  3. 運(yùn)行 git commit -m "更新 css/style.css"能犯,這個(gè)改動(dòng)就被提交到 .git 本地倉庫了鲫骗。再說一次,不要去 .git 目錄里面踩晶,那里的東西你一無所知执泰。
  4. 再再次運(yùn)行 git status -sb,會(huì)發(fā)現(xiàn)沒有變更了渡蜻,這說明所有變動(dòng)都被本地倉庫記錄在案了术吝。
    這里來透露一下 git status -sb 是什么意思:git status 是用來顯示當(dāng)前的文件狀態(tài)的,哪個(gè)文件變動(dòng)了茸苇,方便你進(jìn)行 git add 操作排苍。-sb 選項(xiàng)的意思就是,SB都能看懂学密,哈淘衙,這是開玩笑,-s 的意思是顯示總結(jié)(summary)腻暮,-b 的意思是顯示分支(branch)幔翰,所以 -sb 的意思是顯示總結(jié)和分支。

1.3 總結(jié)

至此西壮,我們來總結(jié)一下用到的命令

  1. git init遗增,初始化本地倉庫 .git
  2. git status -sb,顯示當(dāng)前所有文件的狀態(tài)
  3. git add 文件路徑款青,用來將變動(dòng)加到暫存區(qū)
  4. git commit -m "信息"做修,用來正式提交變動(dòng),提交至 .git 倉庫
  5. 如果有新的變動(dòng),我們只需要依次執(zhí)行 git add xxxgit commit -m 'xxx' 兩個(gè)命令即可饰及。別看本教程廢話那么多蔗坯,其實(shí)就這一句有用!先 addcommit燎含,行了宾濒,你學(xué)會(huì) git 了。
  6. git log 查看變更歷史

2 將本地倉庫上傳到 GitHub

如何將我們這個(gè) git-demo-2 上傳到 GitHub 呢屏箍?

  1. 在 GitHub 上新建一個(gè)空倉庫绘梦,名稱隨意,一般可以跟本地目錄名一致赴魁,也叫做 git-demo-2


按照截圖所示卸奉,除了倉庫名,其他的什么都別改颖御,其他的什么都別改榄棵,其他的什么都別改,其他的什么都別改潘拱,這樣你才能創(chuàng)建一個(gè)空倉庫

  1. 點(diǎn)擊創(chuàng)建按鈕之后疹鳄,GitHub 就會(huì)把后續(xù)的操作全告訴你,如圖
  2. 看圖芦岂,點(diǎn)擊 SSH 按鈕尚辑,點(diǎn)擊 SSH 按鈕,點(diǎn)擊 SSH 按鈕盔腔,我想你現(xiàn)在肯定不會(huì)忘了點(diǎn)擊 SSH 按鈕了吧~~~~如果不點(diǎn)擊這個(gè)按鈕杠茬,你就會(huì)使用默認(rèn)的 HTTPS 地址。但是千萬不要使用 HTTPS 地址弛随,因?yàn)?HTTPS 地址使用起來特別麻煩瓢喉,每次都要輸入密碼,而 SSH 不用輸入用戶名密碼舀透。
    為什么 SSH 不用密碼呢栓票,因?yàn)槟阋呀?jīng)上傳了 SSH public key。

  3. 由于我們已經(jīng)有本地倉庫了愕够,所以看圖走贪,圖中下面半部分就是你需要的命令,我們一行一行拷貝過來執(zhí)行

  • 找到圖中的「…or push an existing repository from the command line」這一行惑芭,你會(huì)看到 git remote add origin https://github.com/xxxxxxxxxx/git-demo-1.git坠狡, 如果你發(fā)現(xiàn)這個(gè)地址是 https 開頭的,那你就做錯(cuò)了遂跟,還記得嗎逃沿,我們要使用 SSH 地址婴渡,GitHub 的 SSH 地址是以 git@github.com 開頭的。
  • 再次點(diǎn)擊 SSH 按鈕凯亮,不管我強(qiáng)調(diào)多少遍边臼,總會(huì)有人忘記點(diǎn)擊 SSH 按鈕,為什么呢假消?我也不知道柠并,為了防止你忘了點(diǎn)擊 SSH 按鈕,我最后再說一遍富拗,「點(diǎn)擊 SSH按鈕」臼予,點(diǎn)擊之后,整個(gè)世界就會(huì)變得美好起來媒峡。
  • 得到新的命令 git remote add origin git@github.com:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/git-demo-1.git,復(fù)制并運(yùn)行它
  • 復(fù)制第二行 git push -u origin master葵擎,運(yùn)行它
  • 刷新當(dāng)前頁面谅阿,你的倉庫就上傳到 GitHub 了!是不是特別簡單酬滤?只要你按照我說的做签餐,一絲不茍,即可盯串。

3 直接在 GitHub 創(chuàng)建一個(gè)倉庫氯檐,然后下載到本地

上面兩步講了

  • 在本地創(chuàng)建倉庫
  • 將本地倉庫上傳到 GitHub

這里有第三種用法,那就是直接在 GitHub 創(chuàng)建一個(gè)倉庫体捏,然后下載到本地冠摄。

  1. 在GitHub 上新建一個(gè)倉庫 git-demo-3,這次就不創(chuàng)建空倉庫了几缭,而是自帶 README 和 Lisence 的倉庫河泳,創(chuàng)建截圖如下:

    請(qǐng)按圖中所示,填寫一模一樣的內(nèi)容年栓,然后點(diǎn)擊創(chuàng)建按鈕拆挥。

  2. 這樣一來,這個(gè)倉庫就會(huì)自動(dòng)擁有兩個(gè)文件(有些人可能會(huì)有三個(gè)文件某抓,還有一個(gè)文件是.gitignore):
  1. 這兩個(gè)文件的作用請(qǐng)自行了解:README.md 的作用 以及 LISENCE 的作用

  2. 好了纸兔,現(xiàn)在遠(yuǎn)程倉庫已經(jīng)創(chuàng)建好了,怎么下載到我們的本地(也就是我們的電腦上)呢否副?答案是使用 git clone 命令

  3. 點(diǎn)擊頁面中唯一的綠色按鈕「clone or download」汉矿,會(huì)看到一個(gè)彈出層


  4. 請(qǐng)確保彈出層里的地址是 SSH 地址,也就是 git@github.com 開頭的地址备禀,如果不是负甸,就點(diǎn)擊 Use SSH 按鈕流强,就點(diǎn)擊 Use SSH 按鈕,就點(diǎn)擊 Use SSH 按鈕呻待。然后復(fù)制這個(gè)地址打月。

  5. 打開 Git Bash,找一個(gè)安全的目錄蚕捉,比如 ~/Desktop 桌面目錄就很安全:cd ~/Desktop奏篙。運(yùn)行。

  6. 運(yùn)行 git clone 你剛才得到的以git@github.com開頭的地址迫淹,運(yùn)行完了你就會(huì)發(fā)現(xiàn)秘通,桌面上多出一個(gè) git-demo-3 目錄。我再說一遍敛熬,桌面上多出一個(gè) git-demo-3 目錄肺稀。我再說一遍,桌面上多出一個(gè) git-demo-3 目錄应民。這個(gè)細(xì)節(jié)很重要话原,很多人發(fā)現(xiàn)不了這個(gè)細(xì)節(jié),我也不知道他們是眼瞎還是怎么了……

  7. 然后cd git-demo-3诲锹,對(duì)的繁仁,你肯定會(huì)忽略這一步。

  8. 然后cd git-demo-3归园,對(duì)的黄虱,你肯定會(huì)忽略這一步。

  9. 然后cd git-demo-3庸诱,對(duì)的捻浦,你肯定會(huì)忽略這一步。

  10. 好了你進(jìn)入了這個(gè)目錄了桥爽,如果沒有默勾,我就要吐血了,因?yàn)槲业奶崾竞苊黠@聚谁。

  11. 運(yùn)行 ls -la 你會(huì)看到母剥,遠(yuǎn)程目錄的所有文件都在這里出現(xiàn)了,另外你還看到了 .git 本地倉庫形导。這時(shí)你就可以添加文件环疼,git add,然后 git commit 了朵耕。

三種方式都說完了炫隶,它們分別是:

  1. 在本地創(chuàng)建倉庫
  2. 將本地倉庫上傳到 GitHub
  3. 下載 GitHub 上的倉庫到本地

其實(shí)呢,我還可以說很多種不同的方式阎曹,但是伪阶,你記住這幾種就行了煞檩,夠你用的了。我們并不想要了解 git 的所有高級(jí)用法栅贴,我們的目的很明確:能通過 Git 命令使用 GitHub 就行斟湃。

我們?cè)倩仡櫼槐橐呀?jīng)學(xué)到的命令:(這次只多了一個(gè) git clone 命令)

  1. git clone git@github.com:xxxx,下載倉庫
  2. git init檐薯,初始化本地倉庫 .git
  3. git status -sb凝赛,顯示當(dāng)前所有文件的狀態(tài)
  4. git add 文件路徑,用來將變動(dòng)加到暫存區(qū)
  5. git commit -m "信息"坛缕,用來正式提交變動(dòng)墓猎,提交至 .git 倉庫
  6. 如果有新的變動(dòng),我們只需要依次執(zhí)行 git add xxxgit commit -m 'xxx'兩個(gè)命令即可赚楚。別看本教程廢話那么多毙沾,其實(shí)就這一句有用!先 add 再 commit宠页,行了左胞,你學(xué)會(huì) git 了。
  7. git log 查看變更歷史

如何上傳更新

你在本地目錄有任何變動(dòng)勇皇,只需按照以下順序就能上傳:

  1. git add 文件路徑
  2. git commit -m "信息"
  3. git pull(相信我罩句,你一定會(huì)忘記這一個(gè)命令)
  4. git push

下面是例子

  1. cd git-demo-1
  2. touch index2.html
  3. git add index2.html
  4. git commit -m "新建 index2.html"
  5. git pull
  6. git push
    然后你去 git-demo-1 的 GitHub 頁面焚刺,就能看到 index2.html 出現(xiàn)在里面了敛摘。是不是很……簡……單……呢……

其他

還有一些有用的命令

git remote add origin git@github.com:xxxxxxx.git 將本地倉庫與遠(yuǎn)程倉庫關(guān)聯(lián)
git remote set-url origin git@github.com:xxxxx.git 上一步手抖了,可以用這個(gè)命令來挽回

  • git branch新建分支
  • git merge 合并分支
  • git stash 通靈術(shù)
  • git stash pop 反轉(zhuǎn)通靈術(shù)
  • git revert 后悔了
  • git reset 另一種后悔了
  • git diff 查看詳細(xì)變化
    學(xué) git 命令都?jí)蚰銈儗W(xué)一周的乳愉,所以別妄想現(xiàn)在就掌握它兄淫,切記。

資源

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捕虽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坡脐,更是在濱河造成了極大的恐慌泄私,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件备闲,死亡現(xiàn)場離奇詭異晌端,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)恬砂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門咧纠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泻骤,你說我怎么就攤上這事漆羔∥嗌荩” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵演痒,是天一觀的道長亲轨。 經(jīng)常有香客問我,道長嫡霞,這世上最難降的妖魔是什么瓶埋? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮诊沪,結(jié)果婚禮上养筒,老公的妹妹穿的比我還像新娘。我一直安慰自己端姚,他們只是感情好晕粪,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渐裸,像睡著了一般巫湘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上昏鹃,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天尚氛,我揣著相機(jī)與錄音,去河邊找鬼洞渤。 笑死阅嘶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的载迄。 我是一名探鬼主播讯柔,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼护昧!你這毒婦竟也來了魂迄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤惋耙,失蹤者是張志新(化名)和其女友劉穎捣炬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绽榛,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡湿酸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒜田。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稿械。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖冲粤,靈堂內(nèi)的尸體忽然破棺而出美莫,到底是詐尸還是另有隱情页眯,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布厢呵,位于F島的核電站窝撵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏襟铭。R本人自食惡果不足惜碌奉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寒砖。 院中可真熱鬧赐劣,春花似錦、人聲如沸哩都。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漠嵌。三九已至咐汞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間儒鹿,已是汗流浹背化撕。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留约炎,地道東北人植阴。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像章钾,于是被迫代替她去往敵國和親墙贱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子热芹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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

  • 配置 GitHub 進(jìn)入 https://github.com/settings/keys 如果頁面里已經(jīng)有一些 ...
    joker731閱讀 257評(píng)論 0 0
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git贱傀,從https:/...
    落魂灬閱讀 12,667評(píng)論 4 54
  • 本文為 Git教程的學(xué)習(xí)筆記,教程源自廖雪峰的博客伊脓。這是一個(gè)由淺入深府寒,學(xué)完后能立刻上手的Git教程。另报腔,附上另一本...
    七弦桐語閱讀 6,248評(píng)論 5 47
  • 飲血龍泉藏閨樓株搔,溫柔鄉(xiāng)里說風(fēng)流。 自古楚地多戰(zhàn)火纯蛾,何來借醉笑列侯纤房。
    鄭是某某閱讀 271評(píng)論 0 0