一文打通 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仓库名旁边的刷新图标即可同步过来。


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值