小白次幂的Git使用教程
当今世界有众多开发者在使用GItHub进行开发,当然,也有一些学校在学生项目训练的时候,要求使用Git进行版本控制。在中国,主流的网站有GitHub、Coding和SourceTree。笔者只用过前两种。其中最初学习是GitHub,但因为学院项目的特殊性,防止同学复制我们的代码然后进行简单的修改最终提交,导致成绩出现问题,于是转移阵地到了Coding。其二者核心原理相同,命令行操作也都相同,因此我们均以GitHub为例。
二者最大的区别在于,英文和中文,公开与私有。这些内容都可以百度到,在你建立自己的仓库的时候,可以直接进行选择。
学习之前,先推荐一本用来学习Git的书籍《GitHub入门与实践》,作者是日本的大塚弘记。如果看了本文觉得还有不太懂的地方,可以买来看一看。
下面我们开始正式的学习。
我们会跳过很多你可以百度到的Git的介绍,直接开始操作
第一步 安装Git
- Mac与Linux环境
你们都预装了好不好。直接用呗 - Windows环境
打开msysGit,安装Download的向导下载,安装,结束。打开时只需要点击鼠标右键,忽略Git GUI Here,只需要点Git Bash Here即可
第二步 初始化设置
设置姓名和邮箱
在打开的Git命令行窗口页面输入以下命令,注意名字用英文输入,设置你的名字和邮箱
git config –global user.name”eName”
git config –global user.email”eEmail@example.com”
提高命令行输出的可读性
使用这个命令,可以让你的Git命令行窗口变得丰富多彩,具有更好的可读性
git config –global color.ui auto
总的来说,这里你什么都不用管,写下这几行命令就好,他不会有任何提示。虽然确实修改了一些东西,如果你真的想要知道,百度,或者找本书去研究。之后的命令行中,需要根据你的实际情况进行调整的部分,都会以e+你需要修改的内容开头,例如eName
第三步 使用前期准备
创建账户
这里需要讲吗,不需要的。
设置SSH Key
先打开你的Git命令行窗口输入以下命令,会弹出提示,然后下面的不是命令的,而是告诉你怎么去做的,我会用do:开头
ssh-keygen -t rsa -C “eEmail@example.com”
do:Press Enter
do:Input Password
do:Input Password again
添加公开密钥
你需要先获取的你的公开密钥,在GItHub的账户设定上选择SSH Keys菜单,然后选择Add SSH Keys,填写好你的Title,在你的GIt命令行窗口输入以下命令
cat ~/.ssh/id_rsa.pub
复制 ssh-rsa 公开密钥内容 eEmail@example.com 的全部内容,粘贴到Key部分中
之后你可以进行认证,输入以下命令
ssh -T git@github.com
你会看到成功的结果,如果没有成功,请重新认真仔细的重新操作一遍
创建仓库
创建仓库,你认为最简单的方式创建就好了呀,只需要点点点
使用仓库
clone已有仓库
clone时候的路径,可以选择git@github.com:username/repositoryname.git或者http协议,具体路径可以在GitHub的clone按钮下看到
git clone git@github.com:username/repositoryname.git
或者
git clone https://github.com/Username.git
编写代码
就是,把你下载好的文件,改改改,改改改,就好了
提交
通过git status命令查看当前状态
git status
通过git add命令将文件加入缓存区
git add efilename
用add . 可以全部添加
git add .
通过git commit命令提交
git commit -m “description”
当然,如果使用git commit命令无“describion”版本,可以打开编辑器具体编写,后面我们会详细讲到
git commit -m
通过 git commit -am命令直接提交
git commit -am “description”
通过git log命令查看提交日志
git log
通过git push命令更新github上的仓库
git push
后面我们讲学习git pull命令,就是在每一次修改之前,保证自己本地仓库的版本是最新的,如果你是一个人开发,当然没有什么必要,但是如果是多人协同开发,就需要使用到
第四步 实际操作学习git
基本操作
初始化仓库
mkdir eProName //新建文件夹
cd eProName //打开文件夹
git init //初始化git
touch README.md //新建.md文件
查看仓库状态
git status
向缓存区中添加文件
git add
保存仓库的历史记录
git commit
记录一行信息
git commit -m “First commit”
详细记录信息
git commit
第一行:用一行文字简述提交的更改内容
第二行:空行
第三行以后:技术更改的详细内容
退出:q
保存退出:wq
查看提交日志
git log
只显示提交的第一行
git log –pretty=short
只显示指定目录、文件的日志
git log filename
显示文件的改动
git log -p
git log -p filename
查看更改先后的差别
git diff
查看工作数和最新提交的差别
git diff HEAD
分支的操作
显示分支一览表
git branch
创建、切换分支
切换到feature-A分支并进行提交
git checkout -b feature-A
等价于
git brance feature-A
git check feature-A
切换到master分支
git checkout master
切换回上一个分支
git checkout -
合并分支
git checkout master
git merge –no-ff feature-A
以图表形式查看分支
git log –graph
更改提交的操作
回溯历史版本
git reset
回溯到创建feature分支之前
git reset –hard fd0cbf0d4a23f747430674d73caclbe43d44331d
推进至feature-A分支合并后的状态
git reflog
消除冲突
修改提交的信息
git commit –amend
压缩历史
修正拼写错误
git commit -am “fix typo”
git rebase -i HEAD~2
pick -> fixup
推送至远程仓库
添加远程仓库
git remote add origin git@github.com:username/repositoryname.git
git push -u origin master-u参数可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的upstream。添加了这个参数,将来运行git pull命令就可以直接从origin的master分支获取内容,省去了另外添加参数的麻烦。
从远程仓库获取
git clone git@github.com:github-book/git-tutorial.git
获取远程的feature-D仓库
git checkout -b feature-D origin/feature-D
推送feature-D分支
git push
获取最新的远程仓库分支
git pull origin feature-D
甚至可以直接
git pull
给原仓库设置名称以及更新
git remote add upstream git://github.com/forkname/username.git
git fetch upstream
git merge upstream/master
记得,当你添加到远处仓库之后,新建一个pull request, 之后便可以将你的分支合并到master上,实现版本的控制。切忌直接使用master进行修改,具体的版本控制方式,我将会在之后的更新中说明。