GitHub学习笔记

参考书籍:《GitHub入门与实践》

第一章:欢迎来到GitHub的世界

1. GitHub与Git的区别

在Git中,开发者将源代码存入名叫“Git仓库”的资料库中并加以使用。
GitHub则是在网络上提供Git仓库的一项服务。

2. Pull Request

开发者在本地对源代码进行更改后,向GitHub中托管的Git仓库请求合并的功能。开发者可以在Pull Request上通过评论交流。

第二章:Git的导入

1. 初始设置

  • 设置姓名和邮箱地址

git config --global user.name "Firstname Lastname"
git config --global user.email "your_email@example.com"

这个命令,会在“~/.gitconfig”中以如下形式输出设置文件。

[user]
name = Firstname Lastname
email = your_email@example.com

想更改这些信息时,可以直接编辑该设置文件。

  • 提高命令输出的可读性
    将color.ui设置为auto可以让命令的输出拥有更高的可读性。

git config --global color.ui auto

“~/.gitconfig”中会增加下面一行。

[color]
ui = auto

第三章:使用GitHub的前期准备

1. 使用前的准备

  • 创建账户:创建GitHub账户
  • 设置SSH Key:创建公开密钥认证所需的SSH Key,并将其添加至GitHub。

ssh-keygen -t rsa -C "your_email@example.com"

设置密码后,会生成id_rsaid_rsa.pub两个文件,分别是私有密钥和公开密钥。

  • 添加公开密钥:在GitHub中添加公开密钥,今后就可以用私有密钥进行认证了。
    点击账户设定按钮(Account Settings),选择SSH Keys菜单。点击Add SSH Key之后,出现添加SSH Key的输入框。在Title中输入适当的密钥名称。Key部分输入id_rsa.pub文件里的内容
  • 测试:与GitHub进行认证和通信

ssh -T git@github.com

出现如下结果即为成功。

Hi hirocastest! You've successfully authenticated, but GitHub does not provide shell access.

2. 实际动手使用

  • 创建仓库:创建一个公开的仓库。
    点击New repository图标,创建新的仓库。
  • Repository name:仓库的名称。
  • Description:仓库的说明。
  • Public vs Private:设置访问权限,公开仓库或者非公开仓库。
  • Initialize this repository with a README:自动初始化仓库并设置README文件,使用户可以立刻clone该仓库。如果想向GitHub添加手中已有的Git仓库,建议不要勾选,直接手动push。
  • Add .gitignore:初始化时自动生成.gitignore文件。该设定会帮助把不需要在Git仓库中进行版本管理的文件记录在.gitignore文件中。
  • Add a license:添加许可协议文件。
  • 连接仓库:下述URL便是创建的仓库的页面

https://github.com/username/repositoryname

  • 公开代码:在已有仓库中添加代码并加以公开。
  • clone已有仓库
    git clone git@github.com:hirocastest/repositoryname.git
    此处会要求输入密码,认证成功后,仓库便会clone至仓库名后的目录中。
  • 编写代码
    git status
    当新编写的代码没有添加至Git仓库时,该文件状态会显示为Untracked files。
  • 提交:将新代码提交至仓库
    git add newCode.xxx
    git commit -m "Add new code by xxxProgramLanguage"
    通过“git add”命令将文件加入暂存区,再通过命令“git commit”提交。
    git log
    添加成功后,通过“git log”命令查看提交日志。
  • 进行push:执行push后,GitHub上的仓库就会被更新。
    git push
    这样一来代码就在GitHub上公开了。

第四章:通过实际操作学习Git

1. 基本操作

  • git init——初始化仓库
    Git是使用“git init”命令进行初始化。

mkdir git-tutorial
cd git-tutorial
git init

创建一个目录并初始化仓库。初始化成功后,在当前目录下就会生成.git目录。这个.git目录里存储着仓库数据——用于管理当前目录内容,该目录的内容被称为“附属于该仓库的工作树”。

  • git status——查看仓库的状态

touch README.md
git status

新建README.md文件,并查看其状态。工作树和仓库在被操作的过程中,状态会不断发生变化。

  • git add——向暂存区中添加文件

git add README.md
git status

要想让文件成为Git仓库的管理对象,需要用“git add”命令将其加入暂存区。

  • git commit——保存仓库中的历史记录

git commit -m "First commit"
git status

“git commit”命令将当前暂存区中的文件实际保存到仓库的历史记录中。
“-m”参数后的信息称作提交信息,是对该提交的概述。

  • git log——查看提交日志

git log

“git log”命令可以查看以往仓库中提交的日志。

git log --pretty=short:只显示提交信息的第一行
git log README.md:只显示指定目录、文件的日志
git log -p:显示文件的改动
git log -p README.md:显示指定文件的提交日志及提交前后的差别

  • git diff——查看工作树、暂存区、最新提交之间的差别

git diff:查看工作树与暂存区的差别
git diff HEAD: 查看工作树和最新提交的差别

好习惯:在执行“git commit”之前先执行“git diff HEAD”命令

2. 分支的操作

master分支是Git默认创建的分支。

  • git branch——显示分支一览表

git branch

“git branch”命令可以显示分支列表,同时确认当前所在分支(标有“*”)。

  • git checkout -b——创建、切换分支

git checkout -b feature-A

git branch feature-A
git checkout feature-A

创建feature-A分支,并将当前分支切换到feature-A分支。

  • git merge——合并分支

git checkout master
git merge --no-ff feature-A

切换到master分支,然后合并feature-A分支。
“--no-ff”参数会打开编辑器,用于录入合并提交的信息。

  • git log --graph——以图表形式查看分支

3. 更改提交的操作

  • git reset——回溯历史版本

git reset --hard PastHashValue

git reset --hard”命令可以让仓库的HEAD、暂存区、当前工作树回溯到指定状态,只要提供目标时间点的哈希值。

git checkout -b fix-B
XXXXX #修改README.md文件(README.md文件内容也恢复了状态)
git add README.md
git commit -m "Fix B"

创建fix-B分支,对README.md文件进行修改,并提交。

git reflog
git checkout master
git reset --hard CurHashValue

“git log”命令只能查看以当前状态为终点的历史日志,所以这里使用“git reflog”命令,查看当前仓库的操作日志。
在日志中找出回溯历史之前的哈希值,通过“git reset --hard”命令恢复到回溯历史前的状态。

  • 消除冲突

git megre --no-ff fix-B

合并fix-B分支,但是系统提示README.md文件发生冲突。

git add README.md
git commit -m "Fix conflict"

修正README.md文件,执行“git add”命令和“git commit”命令。

  • git commit --amend——修改上一条提交信息
  • git rebase -i——压缩历史

4. 推送至远程仓库

先在GitHub上创建一个仓库,仓库名与本地仓库保持一致,创建时不要勾选Initialize this repository with a README选项

  • git remote add——添加远程仓库

git remote add origin git@github.com:用户名/git-tutorial.git

“git remote add”命令将GitHub上创建的仓库设置为本地仓库的远程仓库。Git会自动将“git@github.com:用户名/git-tutorial.git`”远程仓库的名称设置为origin。

  • git push——推送至远程仓库

git push -u origin master

假定现在在master分支下进行操作,“git push”命令,将当前分支的内容推送给远程仓库origin的master分支。
“-u”参数在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的upstream(上游)。

git checkout -b feature-D
git push -u origin feature-D

在本地仓库中创建feature-D分支,并将其以同名形式push至远程仓库。

5. 从远程仓库获取

  • git clone——获取远程仓库

git clone git@github.com:用户名/anotherDir/xxx.git

执行“git clone”命令后默认处于master分支下,同时系统会自动将origin设置成该远程仓库的标识符。

git branch -a

查看当前分支的相关信息。
“-a”参数同时显示本地仓库和远程仓库的分支信息。

git checkout -b feature-D origin/feature-D

将feature-D分支获取至本地仓库。
“-b”参数后面是本地仓库中新建分支的名称。新建分支名称后面是获取来源的分支名称。

  • git pull——获取最新的远程仓库分支

git pull origin feature-D

当前分支为feature-D分支,将本地的feature-D分支更新到最新的状态。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343