Git的使用
Posted LiemZuvon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git的使用相关的知识,希望对你有一定的参考价值。
Git 的使用
最近我和朋友们讨论到git使用相关事情时,突然发现原来有不少人一直都搞不清git和github的区别的…这么说吧,git是本地的一个软件,git运行在本地的仓库上,而github呢,则可以认为是远程的仓库啦。通过使用git,我们可以同步本地和远程的数据。因此,如果有多个人开发同一个项目时,git的作用就特别强大啦,它可以做到版本控制,也就是运行多人同时在本地开发,然后同步到远程的仓库,也可以把远程仓库同步到本地仓库上。总之,git是神器,学了准没错。
Git的安装
Windows
知道国内的大伙经常百度安装包之类的,但是,小编给大家忠告,这种软件,死都不能下载那些非官方的…(小编是用眼泪写的这段话T T)
ubuntu
不是说只支持ubuntu,这里只举一个例子,其他的Linux都差不多
sudo apt-get install git
在上面的安装结束之后,Win需打开命令行终端(Win+R,然后输入cmd,回车~),输入下面的指令,配置一下自己的github账号信息。
$ git config –global user.name “Your Name”
$ git config –global user.email “email@example.com”
建立本地仓库
本地仓库有两种来源,一种是通过克隆远程仓库建立,另一种是从无到有的建立。
克隆远程仓库
克隆远程仓库之前,我们在github上找到需要克隆的仓库,然后找到克隆的选项,如下图
复制框里面的地址https://github.com/user/repo.git,然后在本地终端输入定位到想存放的路径,并输入下面的指令即可
git clone https://github.com/user/repo.git
本地初始化仓库
这种方法通常用于用户在本地建立自己的一个新的仓库,在这之前应该先建立一个新的文件夹,然后在文件夹里面输入如下命令
git init
这时其实会有一个隐藏的.git目录产生,但是无论如何,用户都不应该去动这个目录的任何东西~
三个关键的区域
Workspace
每个用户.git文件夹存在的目录即是git的workspace,也就是我们用肉眼看得到的那堆文件也好文件夹也好,都是放在workspace的,用户可以直接对这个区域的文件进行操作。
Stage
stage区域用来保存workspace的修改,然后再用户的控制下向上提交给repository,也就相当于一个班的课代表,专门负责收作业,当然同学觉得自己作业写错了,还可以找课代表拿回来的哦:)
Repository
stage最后将把修改提交到这里,形成本地仓库的一个新版本。而且很放心的,这些所有的版本都会被git记录下来,然后可以随时回退哦。
基本操作
增改文件
如果在workspace做了一些改动或者增加了新文件,那么怎么把这些修改提交到repo里呢?
比如说我们修改了一个叫modifiedFile.txt的文件,
我们可以调用
git diff modifiedFile.txt
查看这个文件与stage上这个文件的区别。然后,我们可以用下面的命令查看当前workspace和stage的状态
git status
然后我们会发现git提示我们modified文件没有被add到stage上。如果没有被add到stage上,git将不会记录这个文件的改动。为此,我们可以用下面的指令把文件add到stage上
git add modifiedFile.txt
此时再调用git status,就会发现刚刚的提示没了,但是却又多了条新的,这是因为stage此时的状态已经更新的,与repo的状态不同,因此,如果想更新版本,那么就要把stage的修改提交到repo上,可以用下面这个命令,其中-m是可有可无的,用来简便地添加说明,如果没有加这个,git会让你在vim或你设定的编辑器中添加说明。
git commit -m “comment”
然后有读者就好奇了,stage有什么用,直接提交到repo不就行了吗…向我们上面说的,stage相当于收作业的,没理由让学生做一点改动就跑到老师那里拿作业本,改改然后又拿给老师吧,这样不方便老师记录啊,换成git的说法,这时repo将会记录大量的版本,将会变得很冗杂。所以stage还是很有必要的。
撤销修改
在git 中,有时我们修改错了,然后想撤销修改,那该怎么办。解决办法有两种,一种是从stage中恢复修改,另一个是从repo中恢复修改。
从stage中恢复workspace
git checkout – file
从repo中恢复stage
git reset HEAD file
从repo中恢复workspace….= =
git reset HEAD file
git checkout – file
分枝操作
分枝是repo一个很重要的成份,其实分枝就是有很多个版本连接起来的,然后各个分枝又合成了repo,分枝之间不会互相影响,所以,如果有什么要修改,应该新建一个分枝,然后再把这些分枝合并起来,这也是版本控制的核心。
创建分枝
创建分枝命令很简单,在需要创建分枝的分枝(有点拗口…)使用下面命令
git branch newbranch
就可以创建一个新的分枝newbranch,并且跟原分枝的内容完全一样,然后可以用
git checkout newbranch
切换到新的分枝上,此时,在这个分枝上做的任何修改,都不会影响原分枝的内容。
我们可以使用
git branch
查看repo上的分枝信息
合并分枝
当然,如果只会增加分枝但不会合并也是没有意义的,如果想把newbranch分枝合并到master上,操作如下
git check master
git merge newbranch
git branch -d newbranch
最后面的那个命令时把newbranch分枝删掉,要不然下次如果想继续新建newbranch分枝,就会报重哦。
解决冲突
当然,合并冲突并非总是一帆风顺,如果两个分枝同时对一个问价的同一个地方做不同的改动,比如说a修改句子k,b也修改句子k,并且修改的内容还不一样,这时,然后如果这两个分支要合并,git就不知道要听谁的了,干脆它不管,把不同扔给我们自己改,改好了在提交。因此,如果存在冲突,git就会把冲突的文件告诉我们,然后我们把文件改好了在执行commit就可以成功合并了。就是这么简单。
保存工作区状态
有时候我们可能会想马上切换到一个分枝做操作,但是在当前的工作区的修改又没完成不想保存到repo上,这是我们可以利用
git stash
将当前工作区保存起来,等到需要恢复的时候再用
git stash apply
恢复,但注意,这是stash仍然存在stash list中,我们还需
git stash drop
才能把stash list的stash删掉,当然,我们可以用个一举两得的办法实现上面的两个操作
git stash pop
后记
好吧,git一般最常见的操作就如这些所示啦,下一节,我将会给大家介绍github是使用,敬请期待:)
以上是关于Git的使用的主要内容,如果未能解决你的问题,请参考以下文章