Git的使用

Posted LiemZuvon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git的使用相关的知识,希望对你有一定的参考价值。

Git 的使用

最近我和朋友们讨论到git使用相关事情时,突然发现原来有不少人一直都搞不清git和github的区别的…这么说吧,git是本地的一个软件,git运行在本地的仓库上,而github呢,则可以认为是远程的仓库啦。通过使用git,我们可以同步本地和远程的数据。因此,如果有多个人开发同一个项目时,git的作用就特别强大啦,它可以做到版本控制,也就是运行多人同时在本地开发,然后同步到远程的仓库,也可以把远程仓库同步到本地仓库上。总之,git是神器,学了准没错。

Git的安装

Windows

知道国内的大伙经常百度安装包之类的,但是,小编给大家忠告,这种软件,死都不能下载那些非官方的…(小编是用眼泪写的这段话T T)

官方下载地址:https://git-scm.com/download/

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的使用的主要内容,如果未能解决你的问题,请参考以下文章

技术公司团队如何使用git代码托管工具

git干活流程

Git创建分支及合并分支代码

vscode使用git推送代码

Git cherry-pick 复制 commit

分枝限界算法