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 "[email protected]"

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

[user]
name = Firstname Lastname
email = [email protected]

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

  • 提高命令输出的可读性
    将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 "[email protected]"

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

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

ssh -T [email protected]

出现如下结果即为成功。

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 [email protected]: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 [email protected]:用户名/git-tutorial.git

“git remote add”命令将GitHub上创建的仓库设置为本地仓库的远程仓库。Git会自动将“[email protected]:用户名/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 [email protected]:用户名/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分支更新到最新的状态。

你可能感兴趣的:(GitHub学习笔记)