Github入门与实践学习笔记

这篇学习笔记是之前发在wordpress上的,现在迁移过来了。
介绍了一些git的使用,其实写的很辣鸡,但毕竟当初也是认真写的,所以直接迁过来了。




学习github,找了本书《github入门与实践》,想着做点笔记。这本书目前看着还是很舒服的,把命令记一记,先贴个书的pdf链接 https://pan.baidu.com/s/1oayFJbXvu2ZhoGmCtn82wg

密码:baua

只是自己的笔记,写的时候可能只顾让自己看懂,如果别人也在学这本书的话,可以看看2333

第一章

介绍了下github是什么,git与github的区别,没什么写的。

第二章

讲了安装git,按照书上写的安装完git后,然后初始化git,设置一下使用git时的姓名和邮件地址,名字注意用英文输入

$git config –global user.name “Firstname Lastname”//你的用户名
$git config –global user.email “your_email@example.com“//你的邮件地址
$git config –global color.ui auto
$git config –global core.autocrlf false

设置完之后用cat ~/.gitconfig查看,书上是写~/.gitconfig ,但是由于查看时.gitconfig不是可执行文件,所以要改成cat ~/.gitconfig

第三章

第三章名字叫使用github的前期准备,所以就是一些准备工作

  • 创建github账户,浏览器打开http://github.com/join 填写完自己的信息之后完成创建,创建完之后按照他的guide,新建hello-world项目。
  • 设置SSH Key

$ssh-keygen -t rsa -C “your_email@example.com
输入完命令之后可以在本地文件夹找到私钥:id_rsa和公钥id_rsa.pub

  • 添加公开密钥:按照书上添加即可

用私钥连接github $ssh -T git@github.com

  • 公开代码
    1. clone已有仓库 $git clone git@github.com:xxxx/xxxx.git //仓库路径去github上找
    2. 克隆下来之后就可以在本地文件夹中找到以克隆仓库为名的文件夹,在这个文件夹中可以放入想要同步到github上的文件,比如写一个hello_world.php文件放入
    3. 用命令$git status查看刚刚放入的文件,由于hello-world.php文件还没有添加至git仓库,所以显示为Untracked files
    4. 将hello-world.php文件提交至仓库 $git add hello-world.php //git add命令将文件加入暂存区(缓存区) $git commit -m “Add hello world script by php” //git commit命令将文件提交到本地仓库 $git push //git push命令将本地参库修改同步至服务器仓库 $git log //git log命令查看提交日志

先写这么一点开个头,待更…

2018/03/15 21:00更

第四章

通过实际操作学习Git,这章主要讲Git一些常用操作,基本熟练了这一章的话,日常使用GitHub应该没问题,我也打算先学到这里,先把github作为一个仓库使使,日后按需学习2333…

  • $git init—初始化仓库 直接上命令吧,详细的解释实在不记得可以翻书嘛
    1.先在本地建立一个目录作为仓库并初始化
    $mkdir d:/Github/git-tutorial //mkdir是linux命令,建立文件夹,因为书上用的是Git bash(linux环境)
    $cd git-tutorial //cd 命令切换目录,cd或cd ~是切换到主目录(home),cd ..是返回上一级,cd ../..是返回上两级,cd 指定路径
    $git init //进入到git-tutorial目录后,执行git init对仓库初始化,生成.git目录, .git 目录里存储着管理当前目录内容所需的仓库数据
    到这就初始化成功了,提示:如果再按着书操作的时候某一步操作错了不知道怎么修改的话,可以切换到git-tutorial的上一级目录,然后执行$rm -rf git-tutorial删除这个目录重新来过(为了更快熟悉这些指令(其实是自己输命令测试),我删了好几次…)
  • $touch README.md //创建README.md文件
  • $vim README.md //用vim编辑README.md(vim是真的好用), vim打开后按i进入插入模式编辑,添加内容后按esc退出编辑模 式,输入:wq保存并退出
  • $git status //显示仓库的状态
  • $git add README.md //README.md编辑好之后,$git add README.md将它添加至暂存区(暂存区的文件才可以提交)
  • $git commit -m “First commit” //git commit命令可以将当前暂存区中的文件实际保存到仓库的历史记录中。通过这些记录,我们就可以在工作树中复原文件,-m 参数后的 “First commit”称作提交信息,是对这个提交的概述,如果想详细描述的话用$git commit命令
  • $git log //通过$git commit提交之后,可以通过git log命令查看提交记录及该记录的其他信息,如这个命令的哈希值
  • $git diff 和$git diff HEAD //git diff是查看当前工作树与暂存区的差别,git diff HEAD是查看工作树与最新提交的区别
  • $git branch//查看当前所在分支
  • $git branch feature-A//建立一个新分支
  • $git checkout feature-A//切换到指定分支
  • $git checkout -b feature-A//创建一个新分支并切换到 feature-A 分支的更改不会影响到master 分支,这正是在开发中创建分支的优点。只要创建多个分支,就可以在不互相影响的情况下同时进行多个功能的开发。
  • $git merge –no-ff feature-A//合并分支,千万注意先切换回master分支再进行合并,为了在历史记录中明确记录下本次分支合并,我们需要创建合并提交。因此,在合并时加上 –no-ff参数
  • $git log –graph //git log –graph命令可以用图表形式输出提交日志,非常直观
  • $git reset –hard 哈希值(通过git log查看)// git reset——回溯历史版本,所有文件都回溯到了指定哈希值对应的时间点上。也要注意在master分支下操作
  • $git reflog //git log命令只能查看以当前状态为终点的历史日志。所以这里要使用 git reflog命令,查看当前仓库的操作日志。在日志中找出回溯历史之前的哈希值,通过 git reset –hard命令恢复到回溯历史前的状态。
  • $ git commit  – amend——修改提交信息,提交日志中的相应内容也会被修改。
  • $git rebase -i //在合并特性分支之前,如果发现已提交的内容中有些许拼写错误等,不妨提交一个修改,然后将这个修改包含到前一个提交之中,压缩成一个历史记录。
  • $git rebase -i HEAD~2 //用上述方式执行 git rebase命令,可以选定当前分支中包含HEAD(最新提交)在内的两个最新历史记录为对象,并在编辑器中打开。 用fixup替换pick,可以将提交历史压缩。

在本地仓库操作完之后,接下来就可以推送至远程仓库了。

在Github上新建一个仓库,注意不要选择Initialize this repository with a README (自动生成README.md文件)选项,因为本地仓库自己生成了。然后上命令

  • $git remote add origin git@github.com:你的用户名/git-tutorial.git //在 GitHub 上创建的仓库路径为“git@github.com:用户名 /git-tutorial.git”。现在我们用 git remote add命令将它设置成本地仓库的远程仓库。按照上述格式执行 git remote add命令之后,Git 会自动将git@github.com:用户名/git-tutorial.git远程仓库的名称设置为 origin(标识符)。
  • $git remote remove origin //移除与远程仓库的关联
  • $git push -u origin master //在master分支进行该操作,像这样执行 git push命令,当前分支的内容就会被推送给远程仓库origin 的 master分支。-u参数可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的 upstream(上游)。添加了这个参数,将来运行 git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从 origin 的 master 分支获取内容,省去了另外添加参数的麻烦(其实这段话只懂个大概2333,所以就照着用就好吧)。执行该操作后,当前本地仓库 master 分支的内容将会被推送到GitHub 的远程仓库中。在 GitHub 上也可以确认远程 master 分支的内容,和本地 master 分支相同。
  • $ git push -u origin feature-D(其他分支名) //除了 master 分支之外,远程仓库也可以创建其他分支。

从远程仓库获取

上一节中我们把在 GitHub 上新建的仓库设置成了远程仓库,并向这个仓库 push 了 feature-D 分支。现在,所有能够访问这个远程仓库的人都可以获取 feature-D 分支并加以修改。本节中我们从实际开发者的角度出发,在另一个目录下新建一个本地仓库,学习从远程仓库获取内容的相关操作。这就相当于我们刚刚执行过 push 操作的目标仓库又有了另一名新开发者来共同开发。

  • $ git clone git@github.com:用户名/git-tutorial.git // git clone——获取远程仓库 ,注意不要与之前操作的同名仓库在同一目录下

执行 git clone命令后我们会默认处于 master 分支下,同时系统会自动将 origin 设置成该远程仓库的标识符。也就是说,当前本地仓库的 master 分支与 GitHub 端远程仓库(origin)的 master 分支在内容上是完全相同的。

  • $git branch -a //用 git branch -a命令查看当前分支的相关信息。添加 -a参数可以同时显示本地仓库和远程仓库的分支信息。
  • $git checkout -b feature-D origin/feature-D //我们试着将 feature-D 分支获取至本地仓库

b 参数的后面是本地仓库中新建分支的名称。为了便于理解,我们仍将其命名为 feature-D,让它与远程仓库的对应分支保持同名。新建分支名称后面是获取来源的分支名称。例子中指定了 origin/feature-D,就是说以名为 origin 的仓库(这里指 GitHub 端的仓库)的 feature-D 分支为来源,在本地仓库中创建 feature-D 分支。

现在假定我们是另一名开发者,我们可以对feature-D仓库进行修改提交,完善之后通过 $git push将修改同步到Github上去。从远程仓库获取 feature-D 分支,在本地仓库中提交更改,再将feature-D 分支推送回远程仓库,通过这一系列操作,就可以与其他开发者相互合作,共同培育 feature-D 分支,实现某些功能。

  • $ git pull origin feature-D //获取最新的远程仓库分支

GitHub 端远程仓库中的 feature-D 分支是最新状态,如果本地仓库没有更新的话,可以通过git pull origin feature-D更新。今后只需要像平常一样在本地进行提交再 push 给远程仓库,就可以与其他开发者同时在同一个分支中进行作业,不断给 feature-D 增加新功能。如果两人同时修改了同一部分的源代码,push 时就很容易发生冲突。所以多名开发者在同一个分支中进行作业时,为减少冲突情况的发生,建议更频繁地进行 push 和 pull 操作。

就写到这里把,留个笔记,以后用来查询

ヾノ≧∀≦)o 来呀!快活呀!~
-------- 本文结束 --------