Git身为目前世界上最先进的分布式版本控制系统,本菜鸟也是刚刚开始学习,目前上手还是有点难度,记录下来,希望更多的初学者看到,也可以让自己需要用到的适合可以方便的查阅。
1.Git的安装
Git最早使用在Linux系统中,后来才有人慢慢地将他移植到MAC,WINDOW上。下面介绍Git在Linux和window的安装。
1.1Git在Linux的安装
Git在Linux的安装最为方便,几行代码便可以完成。
sudo apt-get install git
1.2Git在window下的安装
window环境下点击下载,默认安装即可。安装完成后,在>开始菜单>所有程序>Git>点击Git Bush即可打开Git。
2.初步使用Git
本文演示的是Git在window下的使用。
打开Git后如下图所示,则表示安装成功了。
接着在命令行内输入
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
这样就相当于在你的window下“注册”了你的用户名了。注意git config命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置。
3.创建一个本地仓库
本地仓库,这里可以看做是我们大部分时间时的工作区域,相当于你的办公室。
创建一个本地仓库非常简单。首先,选择一个合适的地方创建一个空目录:
mkdir my_github
cd my_github
若在Windows系统上,为了避免遇到各种莫名其妙的问题,避免所含目录中出现中文!!!
接着在新建好的my_github
目录下使用下面的命令行:
git init
则瞬间Git就把仓库建好了,而且告诉你是一个空的仓库。
接着我们就可以在这个仓库上边开始我们的工作啦~~~
4.添加文件到本地仓库
我们使用Vim新建一个readme.txt的文件
vim readme.txt
接着在里边写入:
This is my first git,I'm working on it!
oh对了,在进入vim时可以按下键盘的a
或者i
还有o
都可以进入插入(编辑)模式,输入完成后按下ESC
之后再按下:wq
表示保存退出。vim也是一款很强大方便的软件,参考这里了解更多。
接着使用命令添加(git add
)和提交(git commit
)文件到仓库:
git add readme.txt
或者 git add .
git commit -m "wrote a readme"
其中"wrote a readme"
我的理解是提示符,就是在你上传到GitHub的时候的描述一样,后面再细细道来,这只要知道双引号里边的东西不算进语法,写的东西只是为了让自己弄清自己commit的东西是干啥用的就可以了,只是一个提交的说明。
接着使用git log
可以查看我们的提交记录:
git log
当然我们也可以查看简要的提交信息,用下面的命令即可:
git log --pretty=oneline
5.本地仓库推送到远程仓库
上一小节我们已经创建了一个本地仓库后,又想在GitHub创建一个远程仓库,并且让这两个仓库进行远程同步。这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作了。
1.本地仓库与GitHub的匹配
这里一开始要把你的密钥上传到你的GitHub上,简单理解就是蓝牙连接时的配对码一样,你才能时远程仓库和本地仓库相匹配,并且能够从本地推送到远程。
我们在黑框框输入以下命令:
1.ssh-keygen -t rsa -C "你的邮箱地址"
2.接着默认一直按回车键直到提示完成即可。之后可以在用户主目录里找到.ssh目录,里面有id_rsa
和id_rsa.pub
两个文件,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
3.随后登录你的GitHub账号,右上角点击你的头像>选择settings>再选择SSH and GPG keys>接着点击New SHH key.
4.Title任意填写即可,接着把id_rsa.pub
里边的内容复制到Key文本框,点击Add SHH key
即可完成添加。
2.在GitHub上建立一个Project
然后我们登录GitHub,点击start a project,接着输入Repository name:git_test
,然后点击绿色的按键Create repository即可完成创建。如下图
目前,在GitHub上的这个git_test
仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
git remote add origin git@github.com:DrRico/git_test.git
注意DrRico
要换成你的用户名,不然你电脑本地的仓库关联的是我的GitHub上的远程仓库了。
接着输入:
git push -u origin master
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master
推送到远程。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令而直接使用git push
即可。
推送之后我们到GitHub上查看自己的项目,果然与本地的仓库同步了。
完成以上步骤之后,只要想要推送新的内容与远程端同步,只需要输入下列命令即可:
git push
6.远程仓库克隆到本地仓库
上一小节我介绍了本地仓库到远程仓库的推送更新,但我们要是参加了别人的开源项目,就得从别人的远程仓库克隆到自己的本地仓库中了,下面我们便开始介绍。
1.首先,登陆GitHub,创建一个新的仓库,取名叫my_first_github
,并且勾选Initialize this repository with a README
,之后点击Create repository
,可以看到,GitHub便给我们自动生成了一个README.md
文件。
2.接着,我们便切换到本地仓库,即在Git窗口操作,输入以下命令:
git clone git@github.com:DrRico/my_first_github.git
注意要把DrRico
换成你自己的用户名。
之后使用命令
ls
cd my_first_github
ls
就可以进入目录并且查看到README.md
文件了。到此为止,便可以在把远程仓库克隆到本地,在本地进行开发了。若开发完毕需要与远程同步,请参考第4和第5小结的文件的添加、提交以及推送的命令。
7.分支的使用和管理
分支作为GitHub最强大的功能之一,将在本小节进行介绍。
1.首先我们创建分支,输入以下命令即可创建并切换到此分支:
git checkout -b slave
其中以上命令可以拆分成以下两条命令的组和:
git branch slave
git checkout slave
查看分支的命令如下:
git branch
这里对于分支我们可以这样理解:假设有分支master
和分支slave
,这两个分支相当于两个平行宇宙,各自在各自的世界互相活动互不干扰。GitHub有分支合并(merge
)的功能,也就是说两平行宇宙开始重合了,那之前的完成的工作会怎么处理呢?
很简单当然是工作量的累加呀!
举个栗子,我们假设在分支master
上学会了打篮球,在slave
分支上学会了踢足球,那一进行合并之后,我们就即学会了打篮球,又学会了踢足球,怎么样是不是很神奇,大大提高了项目开发的效率有木有!!!
下面我们便来实践操作一下:
在slave
分支下,我们对readme.txt
文件进行修改,对readme.txt
文件写入:
working on slave!
接着添加,提交:
git add .
git commit -m "add working on slave"
之后我们切换回分支master
,用一下命令查看readme.txt
的内容:
cat readme.txt
我们发现我们之前写入的working on slave!
不见了!为什么呢???
这是因为我们是在slave
的世界进行的修改,当两个世界没有合并前(merge
),master
世界当然不会受到影响,还是保持之前的模样。现在我们在master
世界进行操作:把slave
的世界合并到master
世界中来,使用下面的命令:
git merge slave
接着,我们再查看查看readme.txt
的内容:
cat readme.txt
没错,working on slave!
出来了,也就是说,在master
世界什么都没做,而在slave
世界做了一堆东西,使用合并(merge
)功能,可以把slave
世界的工作成果复制到master
世界了!!!
假设所有的任务都完成了,也进行合并了,我们便可以只保留master
,而删除slave
分支了:
git branch -d slave
检查一下当前所有的分支:
git branch
真的就只有master
分支了。
8.标签的使用和管理
标签,顾名思义就是对一个完成的作品贴上版本号,以更好的进行区分
1.创建标签
在第7小结我们介绍了分支的管理和使用,在本小节,我们切换到需要切换标签的分支,例如我们在master
分支上创建标签,使用以下命令切换至master
分支:
git checkout master
接着在master
分支上创建标签,使用以下命令:
git tag v0.1
可以使用以下命令查看所有标签:
git tag
就可以看到我们刚刚打上的标签号了,这里有必要说明以下,默认标签是打在最新提交的commit上的。但有时候,如果我们想给之前commit的东西打标签,该怎么办呢?这里可以理解为游戏签到中的补签
功能。方法是找到历史提交的commit id
,然后打上就可以了。具体操作如下:
先查看历史提交的ID
号:
git log --pretty=oneline --abbrev-commit
接着给对应的ID号打上标签即可:
git tag v0.2 <ID号>
再使用以下命令查看标签:
git tag
2.标签操作
若是标签打错了,可以使用以下命令进行删除:
1. $ git tag -d v0.1
当然当标签只是应用在本地时,执行以上的这一条命令就足够了。
若我们使用以下命令,将标签推送到远程之后了呢?
git push origin v0.2
或者一次性推送本地所有标签到远程端:
git push --tags
此时我们想删除标签v0.2
我们应该怎么做呢?
也就稍稍麻烦一点点,两步走:
先删除本地的标签:
git tag -d v0.2
再删除远程端的标签:
git push origin :refs/tags/v0.2
便成功的在本地和云端删除了该标签,要看看是否真的从远程库删除了标签,可以登陆GitHub查看。
9.总结
GitHub的强大大家在熟练使用之后就可以深有体会了。虽然Git的命令很多,但经常使用的也就那几个,希望大家学会使用GitHub之后,工作效率能大大提高!感谢阅读。另外本人水平有限,文章在所难免会有错误的地方,希望各位朋友批评指正!若有侵权请联系作者删除:851774781@qq.com。
10.小记
1.查看提交的树形结构:gitk