南京网站建设小程,上海备案证查询网站查询网站查询系统,爱情网站设计,网站开发 免代码1、Git概述 1.1 、Git历史 同生活中的许多伟大事件一样#xff0c;Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上#xff08;1991#xff0d;2002年间#xff09;…1、Git概述 1.1 、Git历史 同生活中的许多伟大事件一样Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上19912002年间。到 2002 年Linux系统已经发展了十年了代码库之大让Linus很难继续通过手工方式管理了于是整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。
到 2005 年的时候开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束他们收回了免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区特别是 Linux的缔造者 Linus Torvalds 不得不吸取教训只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统订了若干目标
• 速度
• 简单的设计
• 对非线性开发模式的强力支持允许上千个并行开发的分支
• 完全分布式
• 有能力高效管理类似 Linux 内核一样的超大规模项目速度和数据量
1.2 、Git是什么 Git是一款免费、开源的分布式版本控制系统用于敏捷高效地处理任何或小或大的项目。
Git是一个开源的分布式版本控制系统可以有效、高速的处理从很小到非常大的项目版本管理。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
官网地址为https://git-scm.com/
1.3 、Git特点
优点
适合分布式开发强调个体公共服务器压力和数据量都不会太大速度快、灵活任意两个开发者之间可以很容易的解决冲突离线工作。
缺点
代码保密性差一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息权限控制不友好。
1.4 、Git工作流程
一般工作流程如下
从远程仓库中克隆 Git 资源作为本地仓库从本地仓库中checkout代码然后进行代码修改在提交本地仓库前先将代码提交到暂存区提交修改提交到本地仓库本地仓库中保存修改的各个历史版本在需要和团队成员共享代码时可以将修改代码push到远程仓库。
Git 的工作流程图如下 2、Git的几个核心概念
工作区、暂存区、版本库、远程仓库 Workspace 工作区就是你平时存放项目代码的地方 Index / Stage 暂存区用于临时存放你的改动事实上它只是一个文件保存即将提交到文件列表信息 Repository 仓库区或版本库就是安全存放数据的位置这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本 Remote 远程仓库托管代码的服务器可以简单的认为是你项目组中的一台电脑用于远程数据交换 3、Git安装仅列出在Windows系统下的安装过程
打开Git官网下载安装程序然后按照默认选项安装即可。
安装完成后打开Git bash软件弹出一个类似cmd的命令行窗口证明安装成功。 安装完成后需要进行设置在命令行输入以下代码
$ git config --global user.name Your Name
$ git config --global user.email emailexample.com可以查看一下用户名和密码
$ git config user.name
$ git config user.email假如我们这时候报错证明Git的用户名和密码没有配置成功我们还可以这样做
在用户主目录下找到 .git 文件夹
然后打开 config 文件这是专门用来配置和读取相应的工作环境变量的在里面加上用户名邮箱的内容
4、Git本地仓库操作
4.1 、创建版本库
版本库(repository)也叫仓库可以看做一个目录这个目录里的所以文件都由Git进行管理每个文件的修改、删除Git都能跟踪。
1.选择一个合适的地方创建一个空目录
$ mkdir learngit //创建一个名叫learngit的空目录
$ cd learngit //把learngit设置为当前目录
$ pwd //查看当前目录
/c/Users/Administrator/learngit如果使用Windows系统要保证目录名不包含中文。
2.通过如下命令把这个目录变成Git可以管理的仓库
$ git init
Initialized empty Git repository in /Users/Administrator/learngit/.git/这样Git就把仓库建好啦我们可以看到在当前目录下多了一个 .git 的目录这个目录是Git来跟踪管理版本库的。 3.把文件添加到版本库
我们在 learngit 目录下编写一个 readme.txt 文件内容如下
Git is a version control system.
Git is free software.(1) 用 git add 命令把文件添加到仓库
$ git add readme.txt执行以上命令没有任何显示。
(2) 用 git commit 命令把文件提交到仓库
$ git commit -m wrote a readme file //-m后面输入的是本次提交的说明可以输入任意内容。
[master (root-commit) eaadf4e] wrote a readme file1 file changed, 2 insertions() //1 file changed1个文件被改动新添加的readme.txt文件2 insertions插入了两行内容readme.txt内有两行内容create mode 100644 readme.txt4.2 、修改文件
我们已经成功添加并提交了一个 readme.txt 文件继续修改 readme.txt 文件改成如下内容
Git is a distributed version control system.
Git is free software.运行 git status 命令
$ git status //查看仓库当前的状态
On branch master
Changes not staged for commit: //没有文件将要被提交(use git add file... to update what will be committed)(use git checkout -- file... to discard changes in working directory)modified: readme.txtno changes added to commit (use git add and/or git commit -a)上面的命令告诉我们readme.txt 文件被修改过了但还没有准备提交的修改。
如果我们想知道上次是怎么修改readme.txt 文件的需要用 git diff 命令
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txtb/readme.txt-1,2 1,2
-Git is a version control system. //这一句是被删掉的
Git is a distributed version control system. //这一句是新添加的Git is free software.接下来还是那两步
(1) git add
(2) git commit
4.3 、版本回退
如果我们继续对 readme.txt 文件进行修改改成如下内容
Git is a distributed version control system.
Git is free software distributed under the GPL.然后添加并提交
$ git add readme.txt
$ git commit -m append GPL
[master 1094adb] append GPL1 file changed, 1 insertion(), 1 deletion(-)readme.txt 文件一共有三个版本被提交到了 Git 仓库里我们可以用 git log 命令进行查看
$ git log //查看历史记录
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD - master)
Author: Michael Liao askxuefenggmail.com
Date: Fri May 18 21:06:15 2018 0800append GPLcommit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao askxuefenggmail.com
Date: Fri May 18 21:03:36 2018 0800add distributedcommit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao askxuefenggmail.com
Date: Fri May 18 20:59:18 2018 0800wrote a readme file我们还可以加上 --prettyoneline 参数
$ git log --prettyoneline
1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD - master) append GPL
e475afc93c209a690c39c13a46716e8fa000c366 add distributed
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file //一大串数字是 commit id 而且每个人的都不一样。好了现在如果我们想把 readme.txt 文件退回到上一个版本就可以使用 git reset 命令
$ git reset --hard HEAD^ //HEAD表示当前版本则HEAD^表示上一个版本那么上上版本就是HEAD^^
HEAD is now at e475afc add distributed这时候用 cat 命令查看一下 readme.txt 的内容
$ cat readme.txt //查看 readme.txt 文件的内容
Git is a distributed version control system.
Git is free software.果然 readme.txt 文件返回到了上一个版本。
我们现在想要回到最新的版本还是使用 git reset 命令
$ git reset --hard 1094a //这里不能用HEAD而必须使用 commit id 因为最新版本在之前返回时已经被删除了1094a就是最新版本的 commit id可以在之前的代码中查到
HEAD is now at 83b0afe append GPL再查看一下 readme.txt 文件内容
$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.又回到了最新的版本