GitHub入門與實(shí)踐

本文是對《GitHub入門與實(shí)踐》一本書的總結(jié)和歸納心铃,方便日后查看Git各種命令的使用

image

目錄

image

git初始設(shè)置

git config --global user.name  # 姓名

git config --global user.email  # 郵箱

讓輸出命令具有更好的可讀性:

$ git config --global color.ui auto

設(shè)置SSH Key

GitHub上連接已有倉庫是通過SSH Key來進(jìn)行的笆搓,創(chuàng)建SSH Key:

$ ssh-keygen -t rsa -C

兩個重要的文件:

  • id_rsa:私有密鑰
  • Is_rsa.pub:公開密鑰

在GitHub中添加公開密鑰赂鲤,就可以用私有密鑰來訪問的

$ cat ~/.ssh/id_rsa.pub

完成設(shè)置之后八拱,用手中的私有密鑰與GitHub進(jìn)行通信:

$ ssh -T git@github.com

下面是實(shí)際操作部分:

創(chuàng)建倉庫

新建一個git上的\color{red}{遠(yuǎn)程倉庫}换帜,見下圖楔壤,不要勾選初始化的read.me文件

image
image

上面的私有和公開寫反了。惯驼。蹲嚣。哈哈哈哈哈

初始化

在本地新建一個和遠(yuǎn)程倉庫同名字的本地倉庫,進(jìn)行初始化

git init   # 生成.git目錄
image

查看狀態(tài)git status

  • 未加入到緩存區(qū):紅色

  • 加入到緩存區(qū):綠色

git status
image

緩存區(qū)git add

向緩存區(qū)添加文件祟牲。上面的栗子中有使用git add命令隙畜。緩存區(qū)是提交前的一個臨時區(qū)域。

提交commit

提交指的是激勵工作樹中所有文件的當(dāng)前狀態(tài)说贝。通過參數(shù)m可以加上本次的提交信息议惰。還可以修改提交信息。

git commit -m "first commit"
git commit --amend "重新提交"
image

添加和提交

將上面的兩個動作同時進(jìn)行的語句

git commit -am "添加和提交同時進(jìn)行"

查看日志

  1. 輸入q即可退出
git log
image
  1. 只看一行信息
image
  1. 查看指定文件乡恕、目錄的信息

在后面直接跟上文件名稱即可

image

如果想看到提交帶來的改動言询,加上參數(shù)-p俯萎。

$ git log -p README.md

git reflog

查看當(dāng)前倉庫執(zhí)行過的操作日志

只要不進(jìn)行Git的GC(Garbage Collection,垃圾回收)运杭,就可以通過日志隨意調(diào)取近期的歷史狀態(tài)夫啊。

前面表示的是哈希值。哈希值只要輸入4位以上就可以執(zhí)行的

image

差別git diff

git diff查看更改前后的差別

git diff head  # 查看和最新提交的差別

養(yǎng)成好的習(xí)慣:在執(zhí)行g(shù)it commit命令之前辆憔,先執(zhí)行g(shù)it diff命令撇眯,查看本次提交和上次提交的差別,確認(rèn)完畢再提交

分支操作

master分支是git的主分支虱咧,其他分支都是以這個分支為中心進(jìn)行的熊榛。

image

顯示分支列表

git branch   # 分支名列表顯示,同時顯示現(xiàn)在所處的分支
git branch -a  # 同時顯示遠(yuǎn)程倉庫和本地倉庫的分支信息
image

當(dāng)前只有master分支腕巡,星號表示當(dāng)前所處的分支

新建分支并切換

git checkout -b feature-A   # 創(chuàng)建的同時切換到分支feature-A

上面??的語句等同于:

git branch feature-A   # 創(chuàng)建分支
git checkout feature-A   # 切換分支

git checkout -  # 短橫線表示切換到上一個分支
  • 分支feature-A 的操作不會影響到主分支master
  • 分支之間的操作互不影響来候,能夠同時進(jìn)行

特性分支Topic

  1. 特性分支是集中實(shí)現(xiàn)單一特性(主題),除此之外不進(jìn)行任何作業(yè)的分支逸雹。

  2. 在實(shí)際的開發(fā)中营搅,往往會創(chuàng)建多個特性分支,保留一個隨時可以發(fā)布軟件的穩(wěn)定分支梆砸。穩(wěn)定分支通常由master分支擔(dān)當(dāng)转质。

  3. 基于特定主題的作業(yè)在特定分支中進(jìn)行,主題完成后再和master分支合并

image

分支合并git merge

git checkout master   # 先切換到主分支
git merge --no-ff feature-A   # 合并分支:創(chuàng)建合并并提交帖世,記錄本次合并

圖表形式git log —graph

用圖表的形式輸出提交日志休蟹,非常直觀

git log --graph
image

回溯歷史版本

Git的另一個特征是可以靈活地操作歷史版本。

要讓倉庫的HEAD日矫、暫存區(qū)赂弓、當(dāng)前工作樹回溯到指定狀態(tài),需要使用git reset --hard命令哪轿。

需要目標(biāo)時間點(diǎn)的哈希值盈魁。什么是哈希值?窃诉?杨耙?

image
git reset --hard 9154998......  # 恢復(fù)到該時間點(diǎn)的狀態(tài)

壓縮歷史git rebase -i

使用場景:如果發(fā)現(xiàn)已經(jīng)提交的內(nèi)容中有錯誤(拼音、內(nèi)容等小錯誤)飘痛,可以提交一個修改珊膜,將這個修改包含到前一個提交之中,壓縮成一個歷史記錄

git rebase -i HEAD~2   # 壓縮最近的兩個歷史記錄

git log --graph  # 樹形查看提交日志

推動到遠(yuǎn)程倉庫

添加遠(yuǎn)程倉庫-add

Git是分散性版本管理系統(tǒng)宣脉。為了防止和其他倉庫混淆车柠,遠(yuǎn)程的倉庫名盡量保持和本地倉庫相同

創(chuàng)建遠(yuǎn)程倉庫的時候不要勾選添加初始化文件

現(xiàn)在假設(shè)有個test的本地倉庫,現(xiàn)在創(chuàng)建了一個同名的遠(yuǎn)程倉庫,將通過如下的語句將該其設(shè)置成本地倉庫的遠(yuǎn)程倉庫

git remote add origin git@github.com:username/test.git

推送到遠(yuǎn)程倉庫-push

將當(dāng)前分支下本地倉庫中的內(nèi)容推送到遠(yuǎn)程倉庫中竹祷,使用如下語句:

git push -u origin master   # -u參數(shù)是指在推送的同時介蛉,將origin倉庫的master分支設(shè)置成本地倉庫當(dāng)前分支的上游

-u參數(shù)是指在推送的同時,將origin倉庫的master分支設(shè)置成本地倉庫當(dāng)前分支的上游溶褪。好處:將來能夠直接從遠(yuǎn)程倉庫拉缺揖伞:

git pull

如果不是推送到master分支,比如是feature-D

git checkout -b feature-D   # 先切換到該分支
git push -u origin feature-D   # 推送該分支

獲取遠(yuǎn)程倉庫

默認(rèn)處在maste分支下面

git clone "倉庫地址"
image

假設(shè)遠(yuǎn)程有個分支feature-A猿妈,我們想獲取該分支下的內(nèi)容:

  • 在本地創(chuàng)建同名的分支
git checkout -b feature-A origin/feature-A  # -b后面的feature-A 是本地的分支吹菱,和遠(yuǎn)程同名

# 修改內(nèi)容之后進(jìn)行推送
git push

獲取最新的遠(yuǎn)程

假設(shè)本地中有個分支feature-A,想把它更新到最新遠(yuǎn)程倉庫的狀態(tài)

git pull origin feature-A

hub

  1. 安裝
$ brew install hub
  1. 添加環(huán)境變量
$ echo 'export PATH=“~/bin:$PATH”'
>> ~/.bash_profile
  1. 重啟之后即可使用彭则。
$ hub --version  # 查看版本
  1. 將相應(yīng)的git設(shè)置成hub的別名
$ vim /.bash_profile
# add
eval "$(hub alias -s)"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鳍刷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子俯抖,更是在濱河造成了極大的恐慌输瓜,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芬萍,死亡現(xiàn)場離奇詭異尤揣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)柬祠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門北戏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人漫蛔,你說我怎么就攤上這事嗜愈。” “怎么了莽龟?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵蠕嫁,是天一觀的道長。 經(jīng)常有香客問我毯盈,道長剃毒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任奶镶,我火速辦了婚禮迟赃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘厂镇。我一直安慰自己,他們只是感情好左刽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布捺信。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪迄靠。 梳的紋絲不亂的頭發(fā)上秒咨,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機(jī)與錄音掌挚,去河邊找鬼雨席。 笑死,一個胖子當(dāng)著我的面吹牛吠式,可吹牛的內(nèi)容都是我干的陡厘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼特占,長吁一口氣:“原來是場噩夢啊……” “哼糙置!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起是目,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谤饭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后懊纳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揉抵,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年嗤疯,在試婚紗的時候發(fā)現(xiàn)自己被綠了功舀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡身弊,死狀恐怖辟汰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阱佛,我是刑警寧澤帖汞,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站凑术,受9級特大地震影響翩蘸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淮逊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一催首、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泄鹏,春花似錦郎任、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春霉猛,著一層夾襖步出監(jiān)牢的瞬間尺锚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工惜浅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘫辩,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓坛悉,卻偏偏與公主長得像伐厌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吹散,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355