GitHub筆記記錄

基礎(chǔ)操作

0、本地安裝git ---Mac中自帶有g(shù)it崭篡,所以不用自己安裝

1、設(shè)置git的名字和郵箱(配置git的參數(shù))

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

# 這里設(shè)置的姓名和郵箱是在提交的時候用到的,是公開

3响蓉、去 githun官網(wǎng) 中注冊github賬號

4、要是自己本地的能夠方便的鏈接github的代碼庫哨毁,需要進(jìn)行SSH認(rèn)證枫甲,

  • 首先獲取SSHKey
$ ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

郵箱處輸入創(chuàng)建github賬號的郵箱,敲回車會出現(xiàn)下面的文字
# Generating public/private rsa key pair...
# Enter file in which to save the key(/Users/bihairui/.ssh/id_rsa): (這里敲回車)
如果之前已經(jīng)獲取過扼褪,會出現(xiàn)下面的
# /Users/bihairui/.ssh/id_rsa already exists.
# Overwrite (y/n)? y
# 已經(jīng)存在想幻,問是否重寫,輸入"y"话浇,按回車
在下面輸入兩次相同的密碼就可以
# Enter passphrase (empty for no passphrase): 
# Enter same passphrase again: 
  • 查看你的public key
$ cat ~/.ssh/id_rsa.pub

# (這個就是public key)ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
  • 添加 ssh 到github中
    id_rsa.pub 中的所有內(nèi)容脏毯,粘貼到下面網(wǎng)址的 key 框中。title自定
    添加SSH

  • 測試是否認(rèn)證成功

$ ssh -T git@github.com
# 出現(xiàn)下面提示就是成功了
# Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

這樣就添加好了SSH認(rèn)證凳枝,以后用認(rèn)證過的電腦就可以push文件到github中了

常用命令

git 創(chuàng)建

要使用git抄沮,首先要在需要git管理的目錄下創(chuàng)建git倉庫

$ git init
# Initialized empty Git repository in .....

查看git狀態(tài)

$ git status
$ git status -s #git狀態(tài)的簡短輸出命令

幾種狀態(tài)介紹
1跋核、剛剛commit后的狀態(tài)
# On branch master
# nothing to commit, working directory clean
2、在目錄新添加了文件叛买,還沒有add
# On branch master
# Initial commit
#Untracked files:
#  (use "git add <file>..." to include in what will be committed)
# nothing added to commit but untracked files present (use "git add" to track)
3砂代、執(zhí)行g(shù)it add . 后
# On branch master
# Changes to be committed:
#  (use "git reset HEAD <file>..." to unstage)
4、我們看到當(dāng)執(zhí)行 git add .命令后率挣,在查看狀態(tài)會有一個提示命令
$ git reset HEAD <file> 
# 這個命令就是撤銷暫存某個文件刻伊,<file>替換成文件名就可以了

添加到暫存區(qū)

$ git add .   # (注意后面的  空格 + . )
# 如果需要添加單一的文件
$ git add readme.md

保存到本地倉庫,并記錄提交

$ git commit -m "message"
# message
# 156 files changed, 7809 insertions(+) 

添加暫存椒功,提交一起完成
如果只是對之前的文件進(jìn)行修改捶箱,并沒有添加新的,可以直接用
$ git commit -a -m "message"
這一條命令代替  git add . 和 git commit -m "message"
如果有新文件添加动漾,就不能這樣用了

查看提交日志

$ git log
# commit c9e7440600a12b48a8bc04fce401ea1937065bcb(哈希值)
# Author: xxxx <xxxx@163.com>
# Date:   Mon Nov 23 21:39:48 2015 +0800
#    First commit (這個是提交的message)
# 按回車能夠打印更多l(xiāng)og
# 按q丁屎,退出狀態(tài)
$ git log --oneline # 簡短日志
# ad43a3d hahaha
# 5dd8db2 hahah
# 14153a2 hahaha

$ git log --oneline --graph
# 查看什么時候出現(xiàn)過分支

$ git log --pretty=short
# 執(zhí)行此語句,會打印簡單日志

$ git reflog
# 當(dāng)reset到之前的一個狀態(tài)旱眯,git log只能打印以此處為終點的日志
# git reflog 能打印所有的操作日志
# 只要不進(jìn)行 git 的 GC(Garbage Collection 垃圾回收)晨川,就能恢復(fù)到任意狀態(tài)

$ git log --decorate
# 這個命令能夠打印出帶有標(biāo)簽的日志

查看更改前后的差別

$ git diff    (只有在修改文件,但是還沒有add的時候删豺,才有作用)
# git diff 是區(qū)分本地工作庫和暫存區(qū)的文件不同
$ git diff HEAD   #查看工作樹和最新狀態(tài)的區(qū)別

好建議:在 git commit 之前先執(zhí)行以下 git diff HEAD 查看以下有什么區(qū)別

移除git控制的文件

$ git rm 
# git rm 刪除本地的文件和版本庫的文件

添加標(biāo)簽

$ git tag -a "1.1.0" -m "This is a tag"
# 添加版本和描述的標(biāo)簽

$ git log --decorate
# 這個命令能夠打印出帶有標(biāo)簽的日志

$ git tag
# 列出所有tag

$ git tag [tag]
# 新建一個tag在當(dāng)前commit

$ git tag [tag] [commit]
# 新建一個tag在指定commit

$ git show [tag]
# 查看tag信息

$ git push [remote] [tag]
# 提交指定tag

$ git push [remote] --tags
# 提交所有tag

$ git checkout -b [branch] [tag]
# 新建一個分支共虑,指向某個tag

分支的操作

因為 git 是分散式的,開發(fā)過程中會有過個分支呀页。在這類的開發(fā)中妈拌,往往同時存在多個最新代碼狀態(tài)。從master分支中創(chuàng)建多個其他分支蓬蝶,進(jìn)行開發(fā)尘分。master是git默認(rèn)的分支,基本上所有的開發(fā)都是一個這個分支為中心進(jìn)行開發(fā)的疾党。

不同分支可以完成不同的作業(yè)音诫,完成以后再和master分支合并惨奕,利用分支可以提高開發(fā)效率

特性分支 顧名思義雪位,是集中實現(xiàn)單一特性(主題),除此之外不進(jìn)行任何作業(yè)的分支梨撞,在日常開發(fā)中雹洗,往往會創(chuàng)建數(shù)個特性分支,同時在此之外卧波,在保留一個隨時可以發(fā)布軟件的穩(wěn)定分支时肿,穩(wěn)定分支的角色通常由mastre分支擔(dān)任。

我們之前創(chuàng)建了feature-A分支港粱,這一分支主要實現(xiàn)feature-A 螃成,除feature-A的功能之外旦签,不進(jìn)行任何作業(yè)。即使開發(fā)中發(fā)現(xiàn)bug寸宏,也需要再創(chuàng)建新分支宁炫,在新分支中修正。

完成feature-A的功能以后氮凝,在合并到master分支中

查看分支狀態(tài)

$ git branch
#  * master  只有master一個分支

創(chuàng)建分支羔巢,并轉(zhuǎn)到分支

$ git branch 分支名字   #創(chuàng)建分支
$ git checkout 分支名字    #切換到分支
$ git checkout master    #切換到master分支

一句話搞定上面兩個命令
$ git checkout -b 分支名稱 # 創(chuàng)建b分支,并切換到b

當(dāng)切換到其他分支的時候罩阵,所有的 add commit 操作都是在這個分支里進(jìn)行的竿秆。當(dāng)前的文件也是在次分支的狀態(tài)。這個時候如果切換到master分支稿壁,在master分支中修改文件幽钢,在feature-A 分支文件中是看不到的。但是需要注意的時傅是,有可能會產(chǎn)生沖突搅吁。

切換到上一分支(快速切換)

$ git check -

合并分支

一般合并分支,首先要切換到master分支落午,然后在master分支中合并想要合并的分支

$ git merge --no-ff feature-A
# --no-ff:不使用fast-forward方式合并谎懦,保留分支的commit歷史
# --squash:使用squash方式合并,把多次分支commit歷史壓縮為一次

合并的時候如果出現(xiàn)沖突溃斋,就解決沖突界拦。刪除==== >>>>>>>> <<<<<<<
這樣的標(biāo)記,然后執(zhí)行 git add .git commit 就可以了梗劫。


更改提交操作

回滾歷史版本

$ git reset --hard 哈希值(前七位即可)
# 哈希值可以用個git log 和 git reflog獲取

修改上一個提交信息

$ git commit --amend

書的58-63頁享甸,后面的目前還不知道什么時候使用,暫且不看梳侨,等以后用到再看蛉威,暫且?guī)紫?br> git rebase -i 壓縮歷史

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

上面所有的操作都是在本地倉庫中進(jìn)行的操作
接下來擴(kuò)展到遠(yuǎn)程倉庫

  • 首先在github中 新創(chuàng)建 一個倉庫。然后拿到倉庫的地址
  • 通過該地址走哺,為本地倉庫添加遠(yuǎn)程倉庫

查看遠(yuǎn)程倉庫

$ git remote
# 查看遠(yuǎn)程倉庫
# origin
$ git remote -v
# 查看所有遠(yuǎn)程倉庫
# origin    git@github.com:github/git-reference.git (fetch)
# origin    git@github.com:github/git-reference.git (push)

添加遠(yuǎn)程倉庫

$ git remote add origin 遠(yuǎn)程倉庫地址

移除遠(yuǎn)程倉庫

$ git remote rm origin

推送至遠(yuǎn)程倉庫

$ git push -u origin master   # 推送主分支
$ git push -u origin feature-A   # 推送feature-A分支到同一個倉庫
推送遠(yuǎn)程倉庫以后蚯嫌,在提交新的代碼皆可以直接使用
$ git push

從倉庫中獲取

$ git clone 倉庫地址
$ git pull 從倉庫中拿到最新的代碼

修改遠(yuǎn)程地址

$ git clone 倉庫地址
$ git pull 從倉庫中拿到最新的代碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市丙躏,隨后出現(xiàn)的幾起案子择示,更是在濱河造成了極大的恐慌,老刑警劉巖晒旅,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栅盲,死亡現(xiàn)場離奇詭異,居然都是意外死亡废恋,警方通過查閱死者的電腦和手機(jī)谈秫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門扒寄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拟烫,你說我怎么就攤上這事旗们。” “怎么了构灸?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵上渴,是天一觀的道長。 經(jīng)常有香客問我喜颁,道長稠氮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任半开,我火速辦了婚禮隔披,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寂拆。我一直安慰自己奢米,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布纠永。 她就那樣靜靜地躺著鬓长,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尝江。 梳的紋絲不亂的頭發(fā)上涉波,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音炭序,去河邊找鬼啤覆。 笑死,一個胖子當(dāng)著我的面吹牛惭聂,可吹牛的內(nèi)容都是我干的窗声。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辜纲,長吁一口氣:“原來是場噩夢啊……” “哼笨觅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起侨歉,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤屋摇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后幽邓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡火脉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年牵舵,在試婚紗的時候發(fā)現(xiàn)自己被綠了柒啤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡畸颅,死狀恐怖担巩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情没炒,我是刑警寧澤涛癌,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站送火,受9級特大地震影響拳话,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜种吸,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一弃衍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坚俗,春花似錦镜盯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至恩闻,卻和暖如春激涤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背判呕。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工倦踢, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侠草。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓辱挥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親边涕。 傳聞我的和親對象是個殘疾皇子晤碘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,661評論 9 163
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,663評論 4 54
  • CSS Sprite(雪碧圖|精靈圖)指什么? 有什么作用CSS Sprite指的是包含許多不同的圖標(biāo)功蜓、按鈕或圖形...
    coolheadedY閱讀 305評論 1 2
  • 良辰美景大多數(shù)時只是一場泡沫的幻影式撼。我曾天真的以為喜歡一個人就是把她當(dāng)做自己的全世界童社,可是有一天發(fā)現(xiàn)我錯...
    lwt我明白愛閱讀 354評論 4 0
  • 奈何 奈何 今日雨滂沱 滂沱雨比相思意 意比相思雨更多 奈何 奈何 今日雨滂沱 這雨一直漂落在那年的夜里 可曾記
    月陵無聲閱讀 284評論 0 3