git代码管理

  • Git 是目前世界上最先进的分布式版本控制系统
  • MacOS:brew install git, 终端中输入命令 git --version

Git 基本概念

  • 文件状态
    • 未跟踪(Untracked)
    • 未修改(Unmodified)
    • 已修改(Modified)
    • 暂存区(Staged)
  • 三个工作区域
    • 工作区(Working Directory)
    • 暂存区(Staging Area)
    • 仓库区(Repository)
  • 工作树(Worktree)

Git 工作流程

基于 Git 的远程仓库

远程仓库 地址 备注
GitHub https://github.com/ 世界上最主流的远程开源仓库。
Gitee https://gitee.com/ 国内目前比较主流的开源仓库,也可以私有化部署。
(推荐)
GitLab https://gitlab.com/ 私有化部署,企业使用较多。

应用场景:

  • 获取远程仓库代码:开源代码、项目代码。
  • 项目协作:维护自己的代码、多人维护同一项目

Git 同步命令

  • 克隆远程仓库:git clone
远程连接方式 特点
HTTPS 连接 使用给定 URL 即可 clone,在 push 时验证用户名和密码。
SSH 连接 需要提前添加 SSH Key,在 push 时不需要输入用户名,配置 SSH 时设置了密码才需要输入密码。

HTTPS 连接

  • 配置全局帐号:
    • 配置用户名:git config --global user.name "your name"
    • 配置邮箱:git config --global user.email "your_email@youremail.com"
  • 验证配置结果:git config --global --list
    image

SSH 连接

  1. 生成 SSH Key:
  1. 连敲三次回车键。
  2. 到对应目录下找生成的公钥和密钥。、

注意:
如果我们 Mac 上面已经有了 ssh-key 再创建 ssh-key 的话,默认会在 ~/.ssh/ 目录下生成 id_rsa 和 id_rsa.pub 两个文件,如果不自定义,就会把原有的给覆盖掉。为了加以区分,我们需要自定义一下生成的 key 的名字,后面的id_rsa_test_174为自定义的名字
Enter file in which to save the key (/Users/a-375/.ssh/id_rsa): id_rsa_test_174

拉取远程仓库

  • 拉取远程仓库到本地:git pull(想要把远端最新的内容同步到本地时候用)

初始化仓库

  • 在已存在的目录中初始化仓库:
    • git init
  • 关联远程仓库:
    • git remote add origin
  • git pull --allow-unrelated-histories origin master
    (第一次连接完本地和远程仓库之后,首次同步远程仓库内容)

Git 修改命令

跟踪新文件:

  • 添加文件或目录到暂存区:
    • git add <file>/<directory>
  • 跟踪某个文件:git add new_file.txt
  • 跟踪当前目录下所有文件: git add .

提交更新

  • 提交到本地仓库:
    • git commit -m "comments"
  • 已修改文件跳过使用暂存区域:
    • git commit -a -m "comments"

推送到远程仓库

  • 推送本地仓库到远程仓库:
    • git push

Git 常用调试命令

检查当前文件状态

  • 查看文件状态:
    • git status

查看已暂存和未暂存的修改

  • 比较当前文件和暂存区域快照之间的差异:
    • git diff
  • 查看已暂存的将要添加到下次提交里的内容:
    • git diff --staged

撤销操作

  • 撤销对文件的修改:
    • git checkout <file>
  • 取消暂存:
    • git reset HEAD <file>

移除文件

  • 删除文件:
    • git rm -f <file>
  • 移出暂存区:
    • git rm --cached <file>

忽略文件

  • .gitignore 文件。
  • 有些文件无需纳入 Git 的管理。
  • 比如日志文件,或者编译过程中创建的临时文件。

Git 合并与冲突

分支合并应用场景

  • 合入主分支。
  • 主分支合并其他分支:
    • 通常使用 Merge Request 的方式。
      image

分支管理

  • 概念:
    • 每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支。
  • 价值:
    • 多人协作。
    • 环境管理。

创建分支

  • 新建分支,但仍然停留在当前分支:
    • git branch 分支名
  • 新建分支并直接切换至该分支:
    • git checkout -b 分支名

查看分支

  • 列出所有本地分支:
    • git branch
  • 列出所有远程分支:
    • git branch -r
  • 列出所有本地与远程分支:
    • git branch -a

切换分支

  • 切换到指定分支:
    • git checkout 分支名

删除分支

  • 删除指定分支:
    • git branch -d 分支名

合并分支

  • 合并指定分支到当前分支:
    • git merge 其他分支 本分支
  • 变基:重新设置基准:
    • git rebase 其他分支

注意:
在合并分支的时候,如果想将A分支合并到B分支,当前分支应该先切换到B分支

也可以用:git merge branchname
这个命令把分支"branchname"合并到了当前分支里面

image

什么是冲突

  • 冲突:在并行工作的模式下,工作最终会发生重叠。当多个成员以不同的方式更改同一行内容时,在这种情况下,Git 无法判断哪个版本是正确的,这时就会产生冲突。
  • 冲突场景:
    • 多个分支代码合并到一个分支时。
    • 多个分支向同一个远端分支推送代码时。

解决冲突

  • 解决冲突方式:
    • IDE 中解决冲突:选择要保留的内容点击 Accept,保存代码。
    • 文件中解决冲突:保留需要的内容,删除其余内容,去掉分割线,保存代码。
  • 冲突解决流程:
    1. 在本地当前分支上,修改冲突内容。
    2. 执行 git add . 添加到暂存区。
    3. 执行 git commit -m '提交说明' 提交到本地仓库,完成合并。
    4. 执行 git push 提交到远程仓库。