Loading

Git 学习(完整版)

Git 的使用(完整版)

1、版本控制

学习git之前,需要明白一个概念:版本控制

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

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量
  • 并发开发、提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误

简单说就是用于管理多人协同开发项目的技术。

没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发中将会引入很多问题:如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性、以及软件的整合问题。

image-20220128222755099

2、Git安装

官网:https://git-scm.com/

下载:上官网下载Git对应操作系统的版本管理工具。【若下载速度慢的话,可以找国内镜像】

安装:基本无脑下一步即可!安装完毕后,环境变量会自动配置。

安装成功后在开始菜单中会有 Git 项,菜单中有3个程序。且右键时会出现Git相关的按钮。

image-20220128225229475

Git Bash:Linux风格的命令行,使用最多。(推荐最多)

Git CMD:Windows风格的命令行。

Git GUI:图形化的Git,不建议初学者使用,尽量先熟悉常用命令。

3、Linux命令学习

常用的Linux命令(平时一定要多使用这些命令)

  1. cd:改变目录。

  2. cd ../:回到上一目录。

  3. pwd:显示当前所在的目录路径。

  4. ls(ll):列出当前目录中的所有文件,ll列出的内容更详细。

  5. touch:新建一个文件。如:touch index.js 就会在当前目录下新建一个index.js文件。

  6. rm:删除一个文件。rm index.js 就是把index.js文件删除。

  7. mkdir:新建一个文件夹。

  8. rm -r:删除一个文件夹。rm -r src 就是删除src文件夹。

    rm -rf / :切勿在Linux中尝试!删除电脑中全部文件!(Linux中一切皆文件!)

  9. mv:移动文件。mv index.js src index.js,将index.js文件移动到src文件夹下并命名为index.js。

  10. reset:重新初始化终端

  11. clear:清屏

  12. history:查看命令历史

  13. help:帮助

  14. exit:退出

  15. #:表示注释

4、Git环境配置

4.1 查看配置

git config -l	# 查看所有配置
git config --system --list	# 查看系统配置
git config --global --list	# 查看全局(用户)配置

image-20220128231442186

4.2 设置用户名和邮箱(用户标识)

当你安装Git后首先要做的事就是设置你的用户名称和e-mail地址。这是非常重要的!因为每次Git提交都会使用该信息。

git config --global user.name "(你的用户名)"
git config --global user.email "(你的邮箱)"

用户配置会保存在 C:\Users\XXX\.gitconfig ,只适用于当前登录用户的配置

查询当前用户名和邮箱:

git config --global user.name
git config --global user.email

5、Git基本理论

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage)、本地仓库(History)

如果加上远程的Git仓库(Remote Directory),就可以分为四个工作区域

image-20220129001019579

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

5.1 工作流程

git的工作流程一般是这样的:

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

因此,git管理的文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)

image-20220129002245369

6、Git项目搭建

6.1 创建工作目录与常用指令

工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文。

日常使用只要记住下图6个命令:

image-20220129002412704

6.2 本地仓库搭建

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

6.2.1 创建本地仓库

  1. 创建全新的仓库,需要在需要Git管理的项目的根目录执行:创建一个项目文件夹

  2. 执行Git操作:

    # 初始化当前目录为Git代码库
    git init
    
  3. 执行后可以看到,仅仅在项目目录多出了一个 .git 目录,关于版本等的信息都在这个目录里面。

    image-20220129003430156

6.2.2 克隆远程仓库

  1. 克隆远程仓库,就是将远程服务器上的仓库完全复制一份到本地。

  2. 找到需要克隆的仓库,复制仓库链接,执行Git操作:

    image-20220129003715517

    # 克隆一个项目和它的整个代码历史(版本信息)到本地
    git clone https://gitee.com/XXX
    
  3. 执行后,会发现整个仓库都已经克隆到本地了。

7、Git文件操作

文件4种状态

  • Untracked:未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制。通过 git add 状态变为 Staged
  • Unmodified:文件已经入库,为修改,即版本库中的文件快照内容和文件夹中完全一致。这种类型的文件有两种去处,如果它被修改,会变为 Modified 状态。如果使用 git rm 移除版本库,则成为 Untracked 文件。
  • Modified:文件已修改,仅仅是修改,并没有进行其他的操作。这个文件也有两个去处,通过 git add 可进入暂存 Staged 状态,使用 git checkout 则丢弃修改过,返回到 Unmodified 状态,这个 git checkout 即从库中取出文件,覆盖当前修改。
  • Staged:暂存状态,执行 git commit 则将修改同步到库中,这时库中的文件和本地文件又变成一致,文件为 Unmodified 状态。执行 git reset HEAD filename 取消暂存,文件状态为 Modified

7.1 查看文件状态

上面的4种状态,通过以下命令可以查看文件的状态:

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

# 查看所有文件状态
git status

7.2 完整操作

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

# 提交暂存区中的内容到本地仓库,-m 是提交信息(提交信息必不可少,用来说明概括本次提交修改了的内容)
git commit -m ""

7.3 忽略文件

有时候我们不想把某些文件纳入到版本控制中,比如数据库文件、临时文件、设计文件等。

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

  • 忽略文件中的空行并以井号(#)开始的行将会被忽略。
  • 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问好(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2})代表可选的字符串等。
  • 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
  • 如果名称的最前面是一个路径分隔符(/),表示要忽略此目录下的某个文件夹。
  • 如果名称的最后面是一个路径分隔符(/),忽略目录下的所有文件
# 这是注释
*.txt	# 忽略所有 .txt结尾的文件
!lib.txt	# 但lib.txt除外(lib.txt不忽略)

/temp	# 仅忽略项目根目录下的整个temp文件夹
build/	# 忽略build目录下的所有文件

doc/*.txt	# 忽略doc文件夹下的所有以 .txt结尾的文件

8、使用码云 Gitee

  1. 注册登录码云,完善个人信息(官网:https://gitee.com/)

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

    1. 进入 C:\Users\(用户名).ssh 目录(若没有的话手动创建一个 mkdir .ssh)

    2. 生成公钥

      ssh-keygen
      
      # 然后一直回车就可以了
      
    3. 然后会生成两个文件在 .ssh 文件夹下。

      image-20220129140254744

  3. 复制 id_rsa 中的内容,粘贴到 Gitee 中。和码云绑定。

    image-20220129140531024

  4. 使用码云创建一个自己的仓库。

9、IDEA集成Git

  1. 新建项目,绑定Git

    若要使该项目成为带Git的项目,那么该项目的根目录下应该有 .git 这个隐藏文件。使用 git init 生成。

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

  3. 提交测试

image-20220129150206157

10、Git分支

Git分支类似于科幻电影中的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没什么影响。不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!

image-20220129150747877

image-20220129150850690

10.1 Git分支中常用的指令

# 列出所有本地分支
git branch

# 列出所有远程分支
git branch -r

# 切换分支
git switch [branch] 
git checkout [branch]

# 新建一个分支,但依然停留在当前分支
git branch [new-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]

10.2 合并分支(正常合并)

新建了一个分支 hot-fix ,里面内容与 master 分支一样。然后在 hot-fix 分支中新建一个 test.txt 文件,并addcommit。然后再切换分支到master,然后执行合并操作。成功!

image-20220129164851652

10.3 合并分支(冲突合并)

修改分支hot-fix中的test.txt文件,并addcommit

image-20220129165714281

再切换到master分支,并修改test.txt文件,并addcommit

image-20220129165348703

然后在master分支上合并hot-fix分支。合并冲突了,导致合并失败!这时候,Git不敢帮我们自动合并了。需要我们手动合并。

image-20220129170116247

这时候,就要我们手动打开文件,合并内容。

image-20220129171022422

<<<是当前分支

========= 等号上面是当前分支的代码,等号下面是另一个分支的代码

>>>是另一个分支

手动将需要的留下,删去不需要的代码。还要手动删除特殊标记!然后 保存退出-->add-->commit

image-20220129170410683

image-20220129171242760

11、Git的commit信息规范

feat: 新功能(feature)

fix: 修补bug

docs: 文档(documentation)

style: 格式(不影响代码运行的变动)

refactor: 重构(即不是新增功能,也不是修改bug的代码变动)

test: 增加测试

chore: 构建过程或辅助工具的变动

参考资源:

posted @ 2022-01-29 17:21  KledKled  阅读(283)  评论(0编辑  收藏  举报