Git

  • 一、概述
  • 二、Git的安装
  • 三、常用命令
    • 1.配置命令
    • 2.基本命令
    • 3.git reset
    • 4.分支命令
  • 四、git文件状态
  • 五、忽略文件
  • 六、Git团队协作示意图
  • 七、GitHub基本使用
  • 八、IDEA整合Git

一、概述

Git是一个免费的、开源的分布式版本控制系统

  版本控制系统主要分为分布式版本控制系统和集中式版本控制系统。相信,只要接触过项目的,或多或少都听说过它们,那么它们两有什么区别呢?
  首先是集中式版本控制系统例如svn、cvs等。集中式版本控制系统是我最先用的版本控制系统,它有个很明显的特点,就是集中,所有的代码上传下载都得通过中央服务器来管理。如果这个中央服务器你连不上了,那么你就无法上传和下载最新代码进行版本控制。
  分布式版本控制系统其实也有一个所谓的中央服务器,但是这个中央服务器只是为了平时管理方便。每一台电脑本地都有自己的版本控制库,就算中央服务器挂了,自己本地也能做版本控制,还能和其他电脑进行版本控制。只是平时为了更加方便,大家就将代码统一放在中央服务器管理而已。

代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般简称为远程库。

  • 局域网:GitLab
  • 互联网:GitHub(外网)、Gitee码云(国内)

分支

默认对代码的管理是在master上,此时如果多人要开发多个不同功能时,如果都提交到master就会产生问题。此时可以创建分支,相当于把master赋值了一个副本到该分支上,不同分支之间互不干扰。当每个分支都实现功能后,再和master合并。


二、Git的安装

如果去Git官网上下载速度非常慢,而且中间还会下载失败,让人崩溃,这里推荐一个下载地址:

https://npm.taobao.org/mirrors/git-for-windows/

该网站有git的今年来的全部版本,选择你喜欢的进行下载。下载有两种,一种.tar结尾的压缩包,解压后就是git,无需安装。另一种.exe结尾,需要进行安装,好处是可以进行一些自定义配置。下面演示.exe结尾。

其他一路下一步即可。


三、常用命令

1.配置命令

git安装完后,系统配置文件再/etc/gitconfig中

  • git config --l 查看当前git的所有命令
  • git config --global user.name 用户名  设置用户的签名,签名在每次版本提交信息中可以看到,用来确定本次是谁提交的。git必须设置一个用户签名,否则无法提交代码。
  • git config --global user.email 邮箱   设置用户邮箱
    如果希望再特点的项目中使用不同的名称或e-mail地址,可以再项目中运行不加–global选项的该命令。

2.基本命令

创建本地仓库的方法有2种:一种是创建全新的仓库,另一种是克隆远程仓库。

git init   初始化本地库
git clone url  克隆远程仓库来创建本地库
git status   查看本地库状态

删除文件方法的有4种:

rm 文件名    删除本地文件。如果想删除版本库中的文件,需要先add再commit。
git rm   删除工作区的文件,并自动add到暂存区。commit后可以删除工作区和本地库的文件。需要注意的是这种方法删除需要工作区和本地库的代码一样。
git rm -f  删除工作区和暂存区的文件。commit后可以删除工作区和本地库的文件。这种方法可以工作区和本地库的代码不一样。
git rm --cached    删除暂存区文件,但保留工作区的文件,并且将这次删除放入暂存区。commit后可以删除工作区和本地库的文件。这种方法不会删除本地文件。
  • git add 文件名   添加到暂存区,添加到暂存区的文件可以被提交到本地库。如果暂存区的文件被修改通过git status可以查看。
  • git commit -m "日志信息" "文件名"   提交到本地库
  • git reflog   查看历史记录
  • git log   查看详细历史记录
  • git reset --hard 版本号  

3.git reset

git reset 命令用于回退版本,可以指定退回某一次提交的版本。
git reset [--soft | --mixed | --hard] [HEAD]
其中HEAD 为commit提交的id。

  • --soft 将本地库还原到上一个版本,git log看不到其他日志。
  • --mixed 若不指定具体文件,则将本地库和暂存区都还原到指定版本。如果指定了具体文件,则只把暂存区还原到指定版本。
  • --hard 将本地库、暂存区和工作区都还原到上一个版本,it log看不到其他日志。

4.分支命令

  • git branch 分支名   创建分支
  • git branch -v   查看分支
  • git checkout 分支名  切换分支
  • git checkout -b 分支名  创建新的 分支,并切换到该分支上
  • git checkout 分支名/commitid 文件名   从该分支上还原文件。若未指定分支或版本,则先从暂存区还原。再从当前库还原。
  • git branch -d 分支名 删除分支
  • git merge 分支名  把指定的分支合并到当前分支上,合并成功后会自动提交到本地库
    合并的分支只有当前所在分支的代码会合并,如果产生冲突,需要手动打开冲突文件,将特殊字符和不想要的内容删掉,然后执行add,commit。注意commit时不带文件名。

四、git文件状态

git中的文件有4种状态

  • untracked

该状态文件未跟踪。此文件在文件夹中,但并没有加入到git库中,不参与版本控制。通过git add状态变为staged

  • Staged

暂存状态。执行git commit则将修改同步到库中。
文件状态变为Unmodify状态。执行git reset HEAD filename取消暂存,文件状态为modified

  • Unmodify

文件被追踪,并且没有修改。即本地库中的文件快照内容与文件夹中完全一致。
如果这种文件被修改了,则变为modified状态。。

  • Modified
    文件被追踪,并且文件被修改。通过git add进入暂存状态。

五、忽略文件

有时候我们不想把某些文件纳入版本控制,比如数据库文件,临时文件,设计文件等。
在主目录下建立.gitignore文件,此文件有如下规则:

1.忽略文件中的空行或以#开始的行将被忽略
2.可以使用linux通配符。例如(*)代表任意多个字符,问号(?)表示一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2})代表可选的字符串等。
3.如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
4.如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录的文件不忽略。
5.如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录

例如:

# 忽略 .a 文件
*.a
# 但否定忽略 lib.a, 尽管已经在前面忽略了 .a 文件
!lib.a
# 仅在当前目录下忽略 TODO 文件, 但不包括子目录下的 subdir/TODO
/TODO
# 忽略 build/ 文件夹下的所有文件
build/
# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt
# 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf

六、Git团队协作示意图

1.团队内协作

2.跨团队协作


七、GitHub基本使用

登陆github官网,创建或者登陆账号。登陆成功后,点击右上角头像旁边的+号创建一个远程库,创造完项目后,会自动生成https。

此时在本地的git客户端中就可以通过该https进行代码的上传和拉取。但是https太繁琐,可以在本地取一个别名来代替。

git使用github常用命令

git clone代码时,会将远程的https默认命名为origin,此时通过下列命令可以操控别名。

  • git remote -v   查看本地客户端的别名信息
  • git remote add 别名 https链接   起别名
  • git push 别名或https master或分支名   上传代码到github,需要登陆github
  • git pull别名或https master或分支名   拉去代码从github
  • git clone https地址   从gtihub上克隆代码。该操作会将项目代码拉去下来,并进行初始化本地仓库,最后创建一个默认别名。

github使用步骤

当github上没有本地仓库或本地仓库为空时

  • 先在github创建本地仓库,生成https或者ssh
  • 在本地创建同样名字的文件夹
  • 在其中右键打开git命令行
  • 输入git init,初始化本地仓库
  • 输入git remote add origin https或ssh ,为远程仓库取一个别名,通常取项目的名字
  • 然后可以进行拉去或者上传代码

当想从github上克隆代码

  • 直接 git clone https地址

当跨团队协作时:


fork可以将别人仓库中的项目完整拷贝一份到自己的github仓库中。改好后,点击Pull Request可以将自己修改好的内容发给作者。

免密登陆

当创建好一个项目时,不仅会生成https,还会生成一个ssh,将之前命令中的https替换成ssh则无需再登陆github。但是生成ssh需要进行如下配置:
在自己的c盘用户文件下打开github客户端,输入:

ssh-keygen -t rsa -C 自定义字符 输入后连续按3次回车即可。
随后会在当前目录生成.ssh文件夹,其中会自动生成公钥和私钥。
将.pub结尾的文件内公钥复制下来或者在git控制台输入cat ~/.ssh/id_rsa.pub 即可打印出文件内容,然后粘贴到github的如图所示位置:

配置好公钥后,即可生成ssh链接。


八、IDEA整合Git

创建忽略文件

当我们要进行版本控制时,其实并不是所有的文件都需要进行版本控制,例如iml文件,一些本地编译的class文件都不需要提交到本地仓库。使用.gitignore文件,就可以在进行版本控制时忽略这些文件。
在idea中需要安装.ignore插件:



通过上述步骤则会生成一个默认的.gitignore文件,你也可以修改.gitignore内容来匹配你想要忽略的文件类型。

IDEA使用Git

初始化本地库

add和commit

切换版本

分支操作


IDEA登陆github


如图所示,在idea中登陆github有两种方式,第一种是输入账号密码登陆,这种应为国内网速的原因,所以登陆起来非常困难。第二种是通过token登陆,下面来演示一下第二种。



登陆github官网,按照如上三张图操作即可生成出一个token,注意生成后要复制保存下来,应为它只会显示这一次!有了token直接将token复制到idea即可登陆。

IDEA使用github

通常我们需要在github上创建远程库,然后再把代码push到github远程库上。但是idea的github插件可以创建远程库并同时将代码push到远程库中,具体步骤如图:


创建好本地库后,就可以push和pull代码了,和客户端一样有https和ssh两种方式。使用步骤如下:


以上两种方式都可以push和pull代码,选择一种即可。


当你想要克隆远程仓库的代码,步骤如图:

Gitee导入Github

码云的使用几乎和github一模一样,码云还可以导入github的仓库。
在码云创建新项目的页面最下面有一个导入已有仓库,点击后输入https即可将github的仓库迁移到gitee上,并且如果修改了github的仓库,只用点击gitee仓库名旁边的刷新图标即可同步过来。


一文打通 Git 任督二脉相关推荐

  1. 阿里架构专家教你打通Git任督二脉,20分钟搞定Git工作原理

    如何配置本地的git环境并拉取代码? 1.下载 git ,选择自己系统对应的版本下载即可. 2.在你的电脑上生成 ssh 秘钥,打开终端,执行 ssh-keygen -t rsa -C "你 ...

  2. 教你打通 Git 任督二脉

    [CSDN 编者按]Git是一个开源的分布式版本控制系统,是目前世界上最快.最简单.也是最流行的版本控制工具,它可以有效.高速的管理从很小到非常大的项目版本.本文主要为刚接触Git的新人提供常用的操作 ...

  3. 安卓影像飞升时刻:vivo X90 Pro+打通HDR任督二脉

    在手机产业中,大多数人会有一种刻板印象:一项新技术/功能,苹果发布会上展示意味着已经成熟,具有很高的产品完成度,好用且有效:而安卓厂商在发布会上展示出的一些炫酷技术,往往还需要时间观望,才能确定是不是 ...

  4. 下一波模式移转-订制化制造 打通物联网任督二脉

    订制化制造可望打通发展物联网产业的任督二脉.由于各种终端装置都可连网.互动,势将衍生许多新兴应用与服务的发展空间.物联网产业已是大厂竞相投入的兵家必争地,也为新创企业打开机会之窗,可思考发展建构订制化 ...

  5. shell,打通 Linux 任督二脉,任何武功都随你所用

    文章目录 护花使者 shell 的工作原理 shell 的必要性 shell 的功能 shell 的优越性 系统的合法 shell bash shell 的功能 总结 护花使者 管理整个计算机硬件的其 ...

  6. 打通物联网任督二脉,海天味业畅谈AI+大数据

    2018年11月24日,由中国计算机学会CCF主办,中国计算机学会青年工作委员会和CCF YOCSEF深圳分论坛共同承办的主题为"大数据及人工智能将如何打通物联网的任督二脉"活动在 ...

  7. 60小时打通Python任督二脉

    重磅:教育部考试中心已经公布,在计算机二级考试加入"Python语言程序设计"科目,将于2018年9月全国计算机等级考试中首次亮相.这将促进Python在大学生中的普及. 教育部也 ...

  8. 打通 Java 任督二脉 —— 并发数据结构的基石

    老大难的 Java ClassLoader,到了该彻底理解它的时候了 每一个 Java 的高级程序员在体验过多线程程序开发之后,都需要问自己一个问题,Java 内置的锁是如何实现的?最常用的最简单的锁 ...

  9. BPM流程管理协助打通企业管理“任督二脉”

    编者按:在数字化时代,企业对于风险管控.流程效率有了更高的要求,随着业务的增长,管理工作流程变得更为繁琐,为避免形成数据孤岛,天翎自研的BPM业务流程管理为提高企业的整体运行效率和效益,增强企业的核心 ...

最新文章

  1. timestamp与timedelta,管理信息系统概念与基础
  2. python 新建一列_python – 如何处理列名称和创建新列
  3. C/C++ linux 分享库源码网站收藏
  4. 1.Python算法之枚举算法
  5. python 中的面向对象
  6. c++反汇编代码分析--偷调函数
  7. 计算机网络之JSONP跨域
  8. RHEL5.X 重启网卡出现./network-functions: line 78: .: ifc
  9. 海思Hi3518EV200 SDK源码分析笔记
  10. 翱文中华灯谜大全 v1.1 免费下载--IT man
  11. Firefox扩展推荐
  12. 智能云仓库存管理 v1.2.0
  13. html分辨手机电脑,html自动识别手机或者pc端
  14. 楚天音乐台的在线广播的URL代码
  15. vue element-plus 插件
  16. 论一个优秀的小牛论坛管理员(转:五只鹳狸猿进笼观猴,各留一只爪)
  17. SQL中一些实用的快捷键
  18. GitHub Pages 绑定个人域名
  19. Ubuntu系统安装matlab
  20. 1155:回文三位数

热门文章

  1. 电影寒冬之下,票房靠“主旋律”能撑住场吗?《扫黑行动》仍在重播
  2. 超爽的对战游戏2.0版本来了 非常有趣
  3. 一个菜鸟对建站的一点看法
  4. 一些比较好的流体力学视频
  5. Fabric学习(一) — 区块链及相关技术介绍
  6. 帮助文档的使用和制作
  7. 华为p9 Android6 备份,华为手机怎么备份?华为手机备份数据教程
  8. C++求一年中第几天?
  9. 计算机网络05局域网
  10. 计算三个经纬度坐标的夹角