Git从入门到入土

Stella981
• 阅读 698

Git介绍

Git是开发中必须用到的分布式的版本控制软件,这是其官网Git

我们可以在官网中找到其说明文档,十分的详细并且使用简单。

下载并安装

官网说明文档已经十分详细了,里面包含了weindows、Linux、mac的安装步骤,这里就拿Windows举例:

下载完后,一直点下一步即可,安装完毕后再桌面右击鼠标如果出现下面两个选型说明安装完毕

Git从入门到入土

本地仓库

由于Git是分布式的版本控制软件,所以我们首先要学习的就是如何将代码提交到本地,然后提交至远端代码库。

版本提交

在Git中,我们首先要做的就是对一个项目进行管理。

进入项目文件夹,执行初始化命令即可由Git接管当前项目的版本控制。如下所示

Git从入门到入土

然后右键,选择Git Bash Here后进入终端,让Git接管MyProject文件夹。

然后输入git init (将这个目录变成Git可以管理的仓库)当命令生效后,会生成一个.git的隐藏文件夹,如下所示

Git从入门到入土

然后我们可以使用git status来检测当前文件夹中被管理的文件状态。

Git从入门到入土

此时新增的文件和修改后的文件均属于未被管理的文件,呈现红色,如上所示。

此时就需要我们管理该文件,使用add命令,告诉git,把文件添加到仓库。

  • git add 文件夹名 # 仅仅管理一个文件
  • git add . # 代表当前目录下的所有文件

当我们管理后再使用git status 查看状态后就变成绿色了,然后使用git commot告诉Git,把文件提交到仓库中,如下所示:

Git从入门到入土

这里Git告诉你又异常,让你进行用户信息的配置,输入账号密码等信息。我们只需要按照提示配置一下个人信息即可,配置后再次提交如下所示:

Git从入门到入土

到此我们就完整的提交了我们的文件到远程仓库中,可以使用git log查看一下生成的版本。

我们总结下我们刚才用到的命令:

命令

描述

git init

初始化git,让Git接管当前文件夹

git status

查看当前文件状态,新增或修改的文件都呈现红色,而执行了add命令后会呈现绿色

git add [./filename]

将文件进行提交

git commit -m "描述消息"

生成一个版本

git log

查看版本信息。

版本回滚

  • 高版本回滚到低版本

    • 首先使用git log查看提交日志
    • 然后使用git reset --hard 版本号进行回滚

Git从入门到入土

  • 同样的也可以从低版本回滚到高版本

    • 首先就不能使用git log而是使用git reflog查看日志
    • 然后使用git reset --hard 版本号进行回滚

Git从入门到入土

照例我们总结一下

命令

描述

git log

查看版本提交信息,用于高版本回滚低版本

git reflog

查看版本提交信息,用于低版本回滚高版本

git reset --hard 版本号

进行版本回滚

分区概念

在上面的操作中,我们可以发现一个文件有多个状态:

  • 以控制状态:指该文件可以被git管理的状态,目前来讲所有位于git init文件夹下的文件都是以控制状态
  • 以变动状态:当有新文件,或原本文件被修改后,使用git status呈现红色状态的文件
  • 暂存区状态:指的是执行git add命令后,红色状态文件变为绿色状态的文件
  • 版本库状态:指的是执行git commit命令后,提交至版

这些不同的状态对应不同的分区,由于此时我们做的都是本地版本控制,所以这里的版本库即为本地版本库

Git从入门到入土

使用分支

分支是Git中十分重要的一个概念,它可以让你处理更多的突发情况,以及让你更好的进行协同操作开发。让你在开发中,多个分支互不影响,有正式版本,和开发版本等等,如下所示

Git从入门到入土

这样我们不同的分支中所看到的已提交版本并不相同,当在某一分支中创建新的分支,该子分支将继承当前分支节点中的所有文件,默认是有一个master分支。

常用命令如下所示

命令

描述

git branch

查看当前项目的所有分支(分支前*表示当前处于的分支)

git branch 分支名

创建一个新的分支

git checkout 分支名

切换分支

git merge 要合并的分支

合并分支(先切换分支)

git branch -d 分支名

删除分支

合并冲突

由于分支冲突,可能会出现多条分支修改同一处代码的情况,这个时候就出现了合并冲突的问题,由于Git并不知道听谁的,所以就全部将其保留,由你进行手动修改。

远程推送

上面讲的很热闹,但是都是基于本地仓库的,真正在使用的时候,是要和其他人进行协同操作的,这也是Git的一大优势。

Git是一款分布式的版本控制软件,可以选择的远程版本库很多,这里就介绍我们最常用的GItHub。

首先就是注册一个用户,这里就不演示了。

创建仓库

当我们登录GitHub后,首先要做的就是常见一个远程仓库。首先现打开仓库页面,

Git从入门到入土

然后点击NEW新建一个仓库,如下所示

Git从入门到入土

创建完成后将会看到下面的页面

Git从入门到入土

到此为止我们的仓库就创建完毕了,后面就可以使用了

推送代码

按照上面的提示我们开始推送代码到GitHub

git remote add origin https://https://github.com/iszhonghu/Test.git
git push -u origin master

然后就可以看到我们的文件成功上传了

Git从入门到入土

这里只是上传的master分支,如果要是想上传dev分支,则还是需要输入push命令

git push -u origin dev

总结:

命令

描述

git remote add 别名 仓库地址

给仓库取一个别名

git push -u origin 分支名

将分支推送到远程仓库

需要注意的是:

推送代码时,需要一个一个分支进行推送

拉取代码

既然可以推送代码也就可以拉取代码,以方便实现协同办公。

首先要创建一个文件夹来保存代码,然后直接拉取即可,

命令

描述

git clone 远程仓库地址

克隆远程仓库所有代码(仅第一次使用)

git pull origin 分支名

增量更新某一分支中的代码

分区概念

由于涉及到了远程仓库,所以又多了一个分区,如下所示

Git从入门到入土

其中使用增量更新的pull实际上可以拆分为两条命令

  • git fetch origin 分支 将远程版本库中的分支代码拉到本地版本库中
  • git marge origin 分支 将本地版本库中代码合并到本地分支中

其他操作

配置文件

Git的配置文件有三个部分:

  • 仓库级的配置文件:在仓库的 .git/.gitconfig,该配置文件只对所在的仓库有效。

    • local
  • 全局配置文件:Mac系统在 ~/.gitconfig,Windows系统在 C:\Users<用户名>.gitconfig。

    • global
  • 系统级的配置文件:在Git的安装目录(Mac系统下安装目录在 /usr/local/git)的 etc 文件夹中的 gitconfig。

    • system

SSH

使用SSH可以实现代码的推送和拉取

  • 生成公钥和秘钥

    • ssh-keygen
      • 默认放在/.ssh目录下,其中id_rsa.pub为公钥,id_rsa为私钥

总结

下面是一些在本文章中有的命令:

命令

描述

git init

初始化

git status

查看状态

git add

管理指定文件

git commit -m "描述"

生成版本

git log

查看版本记录(之前)

git reflog

查看版本记录(之后)

git reset --hard 版本号

版本回滚

git branch

查看所有分支

git branch 分支名

创建新分支

git checkout 分支名

切换分支

git merge

分支合并

git branch -d 分支名

删除分支

git remote add 别名 地址

远程仓库取别名

git push -u 别名 分支

推送某分支到远程仓库

git clone 地址

克隆远程仓库代码

git pull 别名 分支

拉取远程仓库中某一分支代码,增量更新

git rebase -i HEAD~条数

版本合并

最后

  • 如果觉得看完有收获,希望能关注一下,顺便给我点个赞,这将会是我更新的最大动力,感谢各位的支持
  • 欢迎各位关注我的公众号【java冢狐】,专注于java和计算机基础知识,保证让你看完有所收获,不信你打我
  • 求一键三连:点赞、转发、在看。
  • 如果看完有不同的意见或者建议,欢迎多多评论一起交流。感谢各位的支持以及厚爱。

——我是冢狐,和你一样热爱编程。

Git从入门到入土

欢迎关注公众号“ Java冢狐”,获取最新消息

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
7个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
4星期前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(