Git日常使用总结
git简介
Git是目前世界上最先进的分布式版本控制系统。
那什么是版本控制系统?
我们简单假设这样一个场景:我们要写一个函数代码,该函数代码主要融合了三个功能,分别是接收输入数据、对数据进行排序和输出数据。我们写完了接收输入数据这一功能,接着写对数据进行排序这一功能,然后写着写着发现自己的排序功能写错了,想要把排序功能部分的代码全部删掉,但是有可能会误删已经写正确的接收输入数据的代码,所以我们要用肉眼来仔细甄别并删除相关代码。这样子是比较麻烦且容易出错的,特别是当代码量比较大,人眼观察不过来的时候。这时候,git就有用武之地了。
git的简单思想就是:使用git来保存你当前已完成的正确的工作,若后面的工作出现错误,可通过简单的命令回退到之前已保存的正确的那个版本,而不会出现误删写好的正确的代码这种情况。不仅如此,git还有其它强大的功能,可方便地支持多人协作、自动地管理文件改动等等。
下面将介绍git的日常用法。
git的安装
在Windows上使用Git,可以从Git官网直接下载
安装完成后,点击鼠标右键,在出现的菜单中点击“Git Bash Here
”,然后蹦出一个类似命令行窗口的东西,就说明Git安装成功!
在刚刚弹出的命令行窗口中,输入一下命令,配置自己的用户名和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
创建版本库
我们进入一个空的名为learnGit的目录,然后在该目录下,点击鼠标右键打开git命令行,输入命令git init
,这样就创建了一个空的git版本库。
可以看到在名为learnGit的目录下,创建了一个隐藏的文件夹.git,这个文件夹里面的内容就是git版本库,里面的文件不可随意删除。用ls -ah
命令可在git bash
命令行看到隐藏文件。
然后在learnGit文件夹下创建一个test.txt文件,里面的内容为”This is first version”。如下图所示:
为了对test.txt文件进行版本管理,我们用git add test.txt
命令把该文件添加到版本库,然后再用git commit -m “xxx”
把改文件提交到版本库。如下图所示:
这样便完成了一次对test.txt文件的版本提交,必须是先git add xxx
添加某文件,再git commit -m “xxx”
提交某文件,这样才算是完成一次版本提交。-m参数后面加的是本次提交的说明。
版本回退
之前我们对test.txt文件进行了第一次版本提交,为了演示版本回退功能,我们先对test.txt文件进行第二次版本提交。
首先我们修改test.txt文件,再原来的基础上添加上一句话“Second version is added”,然后进行git add xxx
添加和git commit -m “xxx”
提交,完成第二次版本提交。
如果我们想将test.txt恢复为第一次提交时的状态,那么我们就使用git reset --hard HEAD^
命令,注意HEAD后面接了一个^符号,HEAD
代表最新一个版本,一个^
符号代表最新版本的前一个版本,两个^
符号代表最新版本的前第二个版本,以此类推。这样便实现了版本的回退。
执行之后,test.txt文件的内容变回了”This is first version”。
分支管理
在版本回退里,每次提交,都相当于在版本线上创建一个节点,这条版本线就是一个分支。分支有主分支,称为master分支
,而之前所说的HEAD
就是指向master分支
。然后自己还可以创建分支,在其它分支上管理不同的版本,需要时再在master分支
合并其它分支,达到更新master分支的目的。
以之前的test.txt为例,现在里面的内容是第一次版本的内容,即”This is first version”。然后我们用git branch xxx
创建名为xxx的分支,再用git checkout xxx
切换到xxx分支
,如下图所示:
我们在dev分支
添加”Second version is added”,然后添加和提交到版本库,形成第二次提交版本。这是master分支
还是第一次提交的版本,而dev
是第二次提交的版本,test.txt在两个分支的内容是不一样的。若要master
更新为最新的dev分支
版本,则需要先切换回master分支
,再执行命令git merge dev
实现合并dev分支
,更新master分支
的目的。这是master主分支
的内容就是最新的了。
其它常用git命令
git status
可以用来常看当前git版本库状态,git diff
可以查看已修改的内容。git reset --hard xxx
xxx是版本号,回退到xxx版本。git log
可以查看提交历史,显示出来的版本号可以用来指定回退版本。git reflog
可以查看命令历史,显示出来的版本号可以用来撤销回退版本这一动作。git remote add origin git@server-name:path/repo-name.git
可以关联一个远程库git push -u origin master
向远程库提交第一次master分支的内容git push origin master
向远程库提交最新内容git branch -d <name>
删除分支git branch
查看分支git tag <tagname>
新建一个标签,默认为HEAD创建标签,也可以为一个指定的版本号创建标签。git tag -a <tagname> -m "xxx"
指定标签信息git tag
查看所有标签git tag -d <tagname>
可以删除一个本地标签git push origin <tagname>
向远程库推送一个标签git push origin --tags
向远程库推送所有标签