GIT入门

orangeleopard 发布于1年前
0 条问题

GIT是个啥

GIT是一个版本控制工具。
什么是版本控制工具呢?
首先说什么是版本 版本就是后悔药 每一个版本就是一颗后悔药
那么版本控制工具就是管理后悔药的一个药箱。

比如 当我们写一本小说时 需要经过多次修改才会发表 那么如果将每次修改后的内容稍加描述(每次修改后都称作一个版本) 这样当我们日后想要找回某一次修改前的内容时 就方便了许多。写代码也是如此。所以我们需要这样一个版本控制工具 也就是"后悔药"。

GIT是个分布式的后悔药,也就是说我们在使用它的时候可以不用联网,好几个人合作的时候可以各写各的代码,写完之后大家把代码推上去最后合并一下就可以了。非常方便。

安装和配置

git的官网:git-scm.com

进入官网找到上图点击download即可下载。

下载成功后打开命令行。
(windows下Windows+R输入cmd打开命令行)

输入命令git --version查看我们安装的版本

这就证明我们安装成功啦~

配置
输入命令

   git config --global user.name "你的名字"
   git config --global user.email "你的邮箱"

注意:global的意思是往全局配置 我们在这里指定了全局 那么意味着以后建立的所有的项目都使用这个配置。

我们来看一下当前所配置的所有项目 输入命令:git config --list即可。

创建仓库

首先要知道一个概念 仓库 Repository
在GIT中把项目称作一个仓库,其实本质上就是文件夹。
我们进入一个文件夹 输入命令git init

初始化了一个空的Git仓库。


出现了一个git目录
命令ls -la列出当前目录中的所有文件

这样就成功创建了一个仓库~撒花!

还有另外一种创建仓库的方式。

我们返回上级目录 直接输入命令cd ..
然后输入命令 git init 仓库名称
这里我的仓库名称为test2

回车

这种方法跟我们手动创建test2 然后git init的效果的一样的。

第三种方法是直接到网上拷贝一个仓库。

比如我们到github上随便找一个大神的仓库

复制地址然后回到命令行
输入命令 git clone 复制的地址

就可以拷贝别人的仓库啦~
也可以重命名拷贝下来的仓库 比如我指定其为test3

以上为创建仓库的三种方式~

基本用法

首先我们创建一个仓库 名为xyj(自定义) 然后进入到这个目录

我们想知道刚创建好的这个仓库的状态 输入命令git status 查看仓库状态

Commit 提交
No commits yet意思是还没有历史记录
现在我们再xyj目录中新建一个文件yo.txt 然后查看目前仓库的状态

Untracted files是指存在未被跟踪的文件(提示我们当前文件已经更改但是我们还没有造后悔药的意思)

输入命令git add . 意思是将所有修改添加至暂存区 然后查看仓库状态(git status)

接下来我们提交版本 输入命令 git commit -m "描述" 然后查看仓库状态

Nothing to commit,working tree clean.意思是当前没有可提交的文件。

git log 查看版本记录

"开始"可以理解为这颗后悔药的名字
commit后的一串字符可以理解为这颗后悔药的"身份证号"

接下来我们在yo.txt中写一点东西进去 然后查看仓库状态

然后和前面步骤相同 首先将所有内容添加至暂存区 然后提交版本

现在我们就成功造了一颗后悔药。

红框内的字符为这颗后悔药的id。

现在我们已经造了两颗后悔药了 git log查看一下

当我们想退回到第一个版本时 拷贝第一个版本至少前7位的身份证号
输入命令 git checkout ### 穿越到指定的历史节点

然后文件就变回到指定节点时的状态啦~

三种状态

接着上面的说 首先我们回到之前的节点(不管之前的节点是什么)
输入命令git checkout -

在git中,所有的文件做的任何一次commit操作都要执行以下三步:

  1. 修改文件 (modified已修改)
  2. git add . (staged已暂存)
  3. git commit -m "描述" (committed已提交)

git log -p 查看具体修改内容

tag标签

任何一个项目从开始到结束都有很多小版本,在这些小版本中有一些节点非常重要。比如说我写了一篇小说,已经成书了,这个时候我们就可以给它打一个标签,表示第一版完成(v1)。后来在第一版稍加润色完成第二版(v2)。v1和v2中间还可能有其它的小版本。但是这些小版本并不重要,读者不需要看到这些小版本。

我们首先init一个仓库并创建一个txt文件。

此时为第一个节点

修改文件并创建第二个节点

继续修改文件并创建第三个节点

git log --oneline 查看版本记录

最后一个版本是比较重要的,是完成度比较高的一个版本,所以我们可以给它打个标签。
git tag -a 标签名 -m "备注"

然后git tag列出所有标签

当我们想出版第二版时(注意:为了测试一定要修改此时的txt文件哦)

然后列出所有节点 git log --oneline

再做一点修改 步骤同上

此时我们想在这一节点发布小说的第二版(v2) 那我们就可以在这里给它打一个标签。

git tag列出此时的所有标签

但是比如我们想回到某一版本然后给该版本打一个标签该怎么做呢?把版本ID跟在后面即可

git show v1 查看某个标签的详细信息
git checkout 标签名 回至标签所在的提交

分支branch

分支就是在时间这个维度上允许存在多条线。比如说一本小说允许存在多条故事线。当我们一开始git init的时候,会创建一个默认的分支(master),我们创建的分支可以自定义名称。这样一来我们就可以在平行的世界中创建几个不同的版本,而且可以随意切换。
首先我们新建一个仓库

然后我们进入这个目录

在目录中新建一个txt文件
随意编辑内容并提交

在txt文件中随意修改内容并提交

现在在我们的master分支上应该有两个版本 我们git log --oneline查看一下

继续修改内容并提交

假如我们想在这个节点发展出一个分支
git branch 分支名 创建分支

然后切换到这个分支上 git checkout 分支名

现在是在rich这个分支上的
继续修改内容并提交

现在我们git log一下可以发现多了一条记录 这条记录是在rich分支上的

接下来我们再rich分支上让这个故事继续发展 并提交

git checkout master 回到默认分支

查看txt文件内容 发现已经自动回到了我们创建分支的那个节点的版本。
然后我们在当前节点修改文档内容并提交

git log 发现master分支上新增一条记录

git log --all --graph 图示全部历史记录

合并分支

比如我们开发一个应用,开发到第一个可以上线的版本(v1),然后继续开发第二个版本,在开发第二个版本的过程中发现第一个版本中有bug。此时我们可以在当前节点创建一个分支,这个分支用来改bug。开发第二版本一段时间后可以上线了,但是上线之前要把第一版本的bug修改好,此时只需要把我们刚刚信件的分支和当前分支合并就可以了。这样不仅改好了第一版本的bug,第二版本也可以上线了。我们来把这个过程实现一次。

新建txt文件
现在我们在默认分支(master)
在文件中添加内容并提交

继续修改并提交

假如在目前节点我们要上线了 所以可以给它加一个tag

第一个版本上线之后我们可以开始做第二个版本了

假如此时我们发现第一个版本中出现了bug,那么我们回到之前上线的版本。
git log后拷贝版本ID

git checkout -b 分支名 创建并切换至分支

在这个分支上就可以修改我们的bug了,然后提交。

现在就可以回到我们之前的分支(master)了。

继续开发第二版本并提交

现在我们来git log --all --graph 可以看到有一个分支

在上线第二个版本前,我们应该将修改bug的分支ff合并到目前master分支上。
git merge 分支名 合并分支

合并后发现内容有冲突
大于号小于号中的内容就是冲突内容。等号分隔两个分支。

上图的意思是,在当前分支与合并分支的同一位置内容分别是3 4 和fix

修改冲突并提交。

git log --all --graph可以看到分支已经合并。十分清晰。

远程仓库

为了保险起见,我们需要使用远程仓库来托管我们的代码。每次做完一个项目,我们可以在本地保存一份,再提交到远程仓库一份,这样就非常保险了。git就提供了这样一个方案,本质上就是将本地仓库拷到远程服务器上。现在我们来操作一下。

和前面相同,首先我们init一个项目

进入项目目录 然后在目录中创建一个txt文件作为测试
在文件中随便写点东西 保存并提交

现在就创建了一个版本 git log查看一下

然后我们就可以将我们的代码推到远程服务器上,但是服务器从哪里来呢?可以租一台或者买一台,然后自己配置server端,但是这样做不仅要花钱,而且配置起来非常麻烦。所以最方便的还是使用服务。不管国内还是国外都有很多这样的服务。
我们就用比较著名的github。登录官网github.com 注册账号。然后登录。
新建一个仓库

指定仓库名称

也可以指定仓库的描述(写不写都行)
非付费用户只能使用public仓库

然后创建仓库

以上步骤本质上就和git init一样

可以看到我们远程仓库的地址
然后我们在本地仓库设置一下,告诉本地仓库的外援在哪里。
添加远程仓库:git remote add 远程名称 远程地址

git remote 列出所有远程仓库

git remote -v 列出所有远程仓库及其详细信息

fetch为下载地址 push为上传地址。一般情况下个人或者小团队用同一地址是没关系的。
接下来要把我们的代码推到远程仓库
git push -u 远程名 分支名 上传代码
就是在服务器端设置如果下一次有人想把代码往下拖的时候,应该合并到哪个分支上。


这就成功将我们的代码推到远程仓库了
刷新github页面可以看到我们刚刚推上去的内容

当我们的电脑发生意外 可以利用远程仓库将我们的代码找回来
git clone 仓库地址 克隆(拷贝)仓库

注意:当我们用了clone命令,系统会默认将我们的远程仓库设置为我们克隆的地址,就不需要我们再手动设置了。

git remote 查看所有远程仓库

显示是origin而不是github。
origin就类似于master,master是默认分支名称,而origin是默认仓库名称,就怎么简单~
我们再推一些代码上去,这次推代码要把远程名改成origin

如何多人远程合作

当有多个成员在同时做一个项目的时候,我们就需要用到从远程仓库下载代码。
git pull 获取远程更新

查看原文: GIT入门

  • purplefrog
  • blacktiger
  • blueswan
  • blackbird
  • ticklishtiger
需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。