聊一聊 Git 常用命令(简单通俗易懂)

1. 版本控制

版本控制是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
简单来说就是用于管理多人协调开发项目的技术。

常见的版本控制器

  • Git
  • SVN
  • CVS
  • VSS
  • TFS

1. 版本控制分类

1. 本地版本控制
记录文件每次的更新,可以堆每个版本做一个快照,活石记录补丁文件,适合个人用,如RCS。
在这里插入图片描述
2. 集中版本控制
所有的版本数据都保存在服务器上,协调开发者从服务器上同步更新或上传自己的修改。

所有的版本都存放在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支上工作。
而且,所有的数据都保存在单一的服务器上,一旦服务器损坏,就会丢失所有的数据。
常用的解决方法,就是经常备份。
代表产品:SVN、CVS、VSS

在这里插入图片描述
3. 分布式版本控制
所有的版本信息都同步到每个用户,这样就可以在本地查看所有版本历史,可以离线本地提交,只需要在连网时 push 到相应的服务器或其它用户那里即可。由于每个用户保存的都是所有的版本数据,只要有一个用户的设备没有被损坏,就可以恢复所有的数据。

不会因为服务器损坏或者网络的原因,造成不能工作的情况!

在这里插入图片描述

2. Git 与 SVN 最主要区别

SVN 是集中式版本控制系统。
Git 是分布式版本控制系统。

Git 是目前世界上最先进的分布式版本控制系统。

2. Git 的历史

Git 诞生于一个极富纷争大举创新的年代。
Linux 的缔造者花了两周开发了 Git 来取代 BitKeeper 来辅助 Linux 内核开发。
在这里插入图片描述

3. Git 环境配置

1. 安装 Git

Git 官网
选择自己的版本下载
在这里插入图片描述
安装:无脑点击下一步即可(都选择默认即可)

2. 启动 Git

在这里插入图片描述
Git Bash:Unix 与 Linux 风格的命令行,使用最多,推荐最多。
Git CMD:Windows 风格的命令行。
Git GUI:图形界面的 Git,不建议初学者使用,尽量先熟悉常用命令。

3. 基本的 Linux 命令学习

  1. cd:改变目录
  2. cd..:退回到上一级目录
  3. pwd:显示当前所在的目录路径
  4. clear:清屏
  5. ls:列出当前目录中的所有文件
  6. ll:累出当前目录中的所有文件,列出的内容更为详细
  7. touch:新建一个文件,如 touch test.txt,就会在当前目录下新建一个 test.txt 文件
  8. rm:删除一个文件,如 rm test,txt,将 test.txt 文件删除
  9. mkdir:新建一个文件夹,如 mkdir test,新建一个 test 文件夹
  10. rm -r :删除一个文件夹,如 rm -r test,删除 test 文件夹
    rm -rf 切勿在 Linux 中尝试!删除电脑中全部文件!
  11. mv:移动文件
  12. reset:重新初始化终端/清屏
  13. history:查看命令历史
  14. help:帮助
  15. exit:退出
  16. #:表示注释

4. Git 的配置

查看配置 git config -l
在这里插入图片描述
查看系统 config 配置
git config --system --list

查看当前用户(global)配置
git config --global --list

设置用户名与邮箱(用户标识,必要)
当你安装 Git 后首先要做的事情就是设置你的用户名称和 e-mail 地址。
这是非常重要的,因为每次 Git 提交都会使用该信息。
它被永远的嵌入到了你的提交中:
git config --gobal user,name "名称"
git config --gobal user.email "邮箱"

在这里插入图片描述

4. Git 基本理论(核心)

1. 工作区域

Git 本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Diretory)。

在这里插入图片描述

  • Workspace:工作区,就是你平时存放项目代码的地方
  • Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交的文件列表信息
  • Repository:仓库区,就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中 HEAD 指向最新放入仓库的版本。
  • Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

.git 是一个隐藏文件夹

在这里插入图片描述

2. 工作流程

  1. 在工作目录中添加、修改文件 UserMapper.xml
  2. 将需要进行版本管理的文件放入到暂存区域 git add.
  3. 将暂存区域的文件提交到 git 仓库 git commit

在这里插入图片描述

5. Git 项目搭建

1. 创建工作目录与常用指令

工作目录(WorkSpace)一般就是你希望 Git 帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文。
日常使用只要记住下图 6 个命令:
在这里插入图片描述

2. 本地仓库的搭建

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

  1. 创建全新的仓库,需要用 Git 管理的项目的根目录执行:
    git init
    在这里插入图片描述

  2. 执行后可以看到,仅仅在项目目录多出了一个 .git 目录,关于版本等的所有信息都在这个目录里面。
    在这里插入图片描述

3. 克隆远程仓库到本地

  1. 另一种方式是克隆远程目录,由于是将远程服务器上的仓库完全镜像一份到本地!
    git clone [url]
  2. 去 gitee 或者 github 上克隆一个测试!
    git clone [url]

6. Git 文件操作

1. 文件的四种状态

  • Untracked:未跟踪,此文件在文件夹中,但并没有加入到 git 库,不参与版本控制。通过 git add 将状态改变为Staged
  • Unmodify:文件已经入库,未修改。如果它被修改,状态就会变为Modified:如果使用git rm移除版本库,则会变为Untracked 文件
  • Modified:文件已被修改。通过git add可以暂存为Staged状态,使用git checkout则丢弃修改过的版本,返回到Unmodify状态,这个git checkout从库中取出文件,覆盖当前修改。
  • Staged:暂存状态。通过git commit将修改同步到库中,这时库中的文件和本地文件又变为一致,文件变为Unmodify状态,执行git reset HEAD filename取消暂存,文件状态变为Modified

2. 查看文件状态

查看指定文件状态
git status [filename]

查看所有文件状态
git status

添加所有文件到暂存区
git add .

提交暂存区中的内容到本地仓库 -m 提交信息
git commit -m "消息内容"

3. 忽略文件

有些时候我们不想将一些文件上传,比如数据库,临时文件,设计文件等

在主目录下建立".gitignore"文件,此文件有如下规则:

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

# Package Files #
*.jar
*.war
*.ear
target/

# idea
.idea/
*.iml/

*velocity.log*

### STS ###
.apt_generated
.factorypath
.springBeans

### IntelliJ IDEA ###
*.iml
*.ipr
*.iws
.idea
.classpath
.project
.settings/
bin/

*.log
tem/

#rebel
*rebel.xml*

忽略所有 .txt 结尾的文件,这样的话上传就不会被选中!
*.txt
lib.txt除外
!lib.txt
仅忽略项目根目录下的TODOO文件,不包括其它目录temp
/temp
忽略build/目录下的所有文件
build/
会忽略doc/notes.txt但不包括doc/server/arch.txt

7. 使用码云

国外的 GitHub 是有墙的,比较慢,在国内的话, 我们一般使用 gitee,公司中有时候会搭建自己的 gitlab 服务器

码云 gitee 官网

1. 注册自己的 gitee 账号,完善自己的信息

在这里插入图片描述

2. 设置本机绑定 SSH 公钥,实验免密码登录!

免密码登录,很重要,gitee 是远程仓库,我们平时工作是在本地仓库

在这里插入图片描述
先执行下面的命令
ssh-keygen -o
一直回车就好了
在这里插入图片描述
然后在本机电脑的 C 盘下找到 .ssh 目录
在这里插入图片描述
id_rsa.pub中的内容复制到网页的公钥部分,然后添加公钥就可以了
在这里插入图片描述
添加成功后会自动一个公钥,这样就可以将 gitee 与自己的本地仓库绑定了
在这里插入图片描述

3. 新建仓库

在这里插入图片描述
创建成功后,就可以根据这个连接将 gitee 上的文件克隆到本地仓库了
在这里插入图片描述

GitHub 的操作与 gitee 的操作基本相同

8. IDEA 中集成 Git

1. 新建项目,绑定 Git

将我们远程仓库的 Git 文件目录全部拷贝到新项目的文件夹下即可!
在这里插入图片描述
文件的颜色就是选中的状态
在这里插入图片描述

2. 修改文件,使用 IDEA 操作 Git

  1. 添加到暂存区
  2. commit 提交
  3. push 到远程仓库

可以直接使用 IDEA 集成的 Git 工具(右上角)
也可以使用 IDEA 的命令行,使用方法和 GitBash 的命令方法一样
在这里插入图片描述

9. 说明:GIT 分支

分支在 Git 中相对较难,分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响,不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!
在这里插入图片描述
Git 分支中常用指令

  • 列出所有的本地分支
    git branch
  • 列出所有的远程分支
    git branch -r
  • 新建一个分支,但依旧停留在当前分支
    git branch [branch-name]
  • 新建一个分支,并切换到该分支
    git checkout -b [branch]
  • 合并指定分支到当前分支
    git merge [branch]
  • 删除分支
    git branch -d [branch-name]
  • 删除远程分支
    git push origin --delete [branch-name]
    git branch -dr [remote/branch]

多个分支如果并行执行,就会导致我们代码冲突,也就是同时存在多个版本!
如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交!选择要保留他的代码还是你的代码!

master 主分支应该是非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的 dev 分支上工作,工作玩后,比如要发布,或者说 dev 分支代码稳定后可以合并到主分支 master 上来。

猜你喜欢

转载自blog.csdn.net/qq_52354698/article/details/124598043