一文打通 Git 任督二脉
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,需要登陆githubgit pull别名或https master或分支名
拉去代码从githubgit 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 任督二脉相关推荐
- 阿里架构专家教你打通Git任督二脉,20分钟搞定Git工作原理
如何配置本地的git环境并拉取代码? 1.下载 git ,选择自己系统对应的版本下载即可. 2.在你的电脑上生成 ssh 秘钥,打开终端,执行 ssh-keygen -t rsa -C "你 ...
- 教你打通 Git 任督二脉
[CSDN 编者按]Git是一个开源的分布式版本控制系统,是目前世界上最快.最简单.也是最流行的版本控制工具,它可以有效.高速的管理从很小到非常大的项目版本.本文主要为刚接触Git的新人提供常用的操作 ...
- 安卓影像飞升时刻:vivo X90 Pro+打通HDR任督二脉
在手机产业中,大多数人会有一种刻板印象:一项新技术/功能,苹果发布会上展示意味着已经成熟,具有很高的产品完成度,好用且有效:而安卓厂商在发布会上展示出的一些炫酷技术,往往还需要时间观望,才能确定是不是 ...
- 下一波模式移转-订制化制造 打通物联网任督二脉
订制化制造可望打通发展物联网产业的任督二脉.由于各种终端装置都可连网.互动,势将衍生许多新兴应用与服务的发展空间.物联网产业已是大厂竞相投入的兵家必争地,也为新创企业打开机会之窗,可思考发展建构订制化 ...
- shell,打通 Linux 任督二脉,任何武功都随你所用
文章目录 护花使者 shell 的工作原理 shell 的必要性 shell 的功能 shell 的优越性 系统的合法 shell bash shell 的功能 总结 护花使者 管理整个计算机硬件的其 ...
- 打通物联网任督二脉,海天味业畅谈AI+大数据
2018年11月24日,由中国计算机学会CCF主办,中国计算机学会青年工作委员会和CCF YOCSEF深圳分论坛共同承办的主题为"大数据及人工智能将如何打通物联网的任督二脉"活动在 ...
- 60小时打通Python任督二脉
重磅:教育部考试中心已经公布,在计算机二级考试加入"Python语言程序设计"科目,将于2018年9月全国计算机等级考试中首次亮相.这将促进Python在大学生中的普及. 教育部也 ...
- 打通 Java 任督二脉 —— 并发数据结构的基石
老大难的 Java ClassLoader,到了该彻底理解它的时候了 每一个 Java 的高级程序员在体验过多线程程序开发之后,都需要问自己一个问题,Java 内置的锁是如何实现的?最常用的最简单的锁 ...
- BPM流程管理协助打通企业管理“任督二脉”
编者按:在数字化时代,企业对于风险管控.流程效率有了更高的要求,随着业务的增长,管理工作流程变得更为繁琐,为避免形成数据孤岛,天翎自研的BPM业务流程管理为提高企业的整体运行效率和效益,增强企业的核心 ...
最新文章
- timestamp与timedelta,管理信息系统概念与基础
- python 新建一列_python – 如何处理列名称和创建新列
- C/C++ linux 分享库源码网站收藏
- 1.Python算法之枚举算法
- python 中的面向对象
- c++反汇编代码分析--偷调函数
- 计算机网络之JSONP跨域
- RHEL5.X 重启网卡出现./network-functions: line 78: .: ifc
- 海思Hi3518EV200 SDK源码分析笔记
- 翱文中华灯谜大全 v1.1 免费下载--IT man
- Firefox扩展推荐
- 智能云仓库存管理 v1.2.0
- html分辨手机电脑,html自动识别手机或者pc端
- 楚天音乐台的在线广播的URL代码
- vue element-plus 插件
- 论一个优秀的小牛论坛管理员(转:五只鹳狸猿进笼观猴,各留一只爪)
- SQL中一些实用的快捷键
- GitHub Pages 绑定个人域名
- Ubuntu系统安装matlab
- 1155:回文三位数