git 入门(持续更新中...)

128 阅读4分钟

1.背景

  • Git 是一个开源的分布式版本控制系统,用于跟踪文件及文件夹的更改,以便于多个人协同工作时能高效地处理项目。
  • 工作原理图

image.png

2. 核心概念

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

3.初始化和配置

3.1快捷用法

  • git init:在当前目录初始化一个新的Git仓库。
  • git config:配置Git的设置,如用户名、邮箱等。

4.添加和提交

4.1 快捷用法

  • git add <file>:添加文件到暂存区。
  • git add .:添加所有改动到暂存区。
  • git status:查看工作目录和暂存区的状态。
  • git commit -m "message":提交暂存区的改动到本地仓库,附带提交信息。
  • git commit --amend:修改最后一次提交的信息或内容。

4.2 详细用法(后续会拆分为独立文档)

4.2.1 将文档的改动添加到暂存区

  1. 基础用法
git add <filename> # 添加一个特定的文件到暂存区

git add . # 将所有修改过的文件和新添加的文件一次性全部放入暂存区(点(.)代表当前目录及其子目录下的所有改动)

git add *.txt # 添加指定类型文件(使用通配符(*)来添加一类文件)
  1. 高级用法
  • 交互模式
git add (-i | --interactive) # 进入交互模式,逐个或批量选择要添加的文件

image.png

  • 补丁模式
git add -p <filename> # 进入补丁模式,逐个选择文件中哪些具体的改动加入暂存区

image.png

  • 忽略空白
git add (--ignore-space-at-eol | --ignore-space-change | --ignore-all-space) # 忽略掉空白字符的变动(比如空格、换行符等)

4.2.2 用于将暂存区(Staging Area)中的改动保存到本地仓库

  1. 基础用法
git commit # 会打开默认的文本编辑器(如vim或nano),让你输入提交信息
git commit -m "这是一个描述提交内容的简短信息" # 使用 `-m` 选项同时提交并附上提交信息
  1. 高级用法
  • 跳过编辑器直接提交
git commit -a -m "提交信息" # `-a` 选项会自动将所有已跟踪且修改过的文件添加到暂存区,然后一并提交
  • 添加作者信息
git commit --author="Author Name <author@example.com>" -m "提交信息"
  • 修正最近一次提交
git commit --amend [-m "新的提交信息"]

5.分支操作

5.1 快捷用法

  • git branch:列出本地分支。
  • git branch -a:列出所有分支,包括远程分支。
  • git checkout <branch>:切换到指定分支。
  • git checkout -b <new-branch>:创建并切换到新分支。
  • git merge <branch>:合并指定分支到当前分支。
  • git branch -d <branch>:删除分支。
  • git branch -D <branch>:强制删除分支。

5.2 详细用法

5.2.1 用于在不同的分支之间切换、恢复工作目录中的文件,或者丢弃未提交的改动

git checkout <branch-name> # 切换到已存在的分支

git checkout -b <new-branch-name> [start-point] # 基于某个提交或分支创建并切换到新分支,其中 `[start-point]` 可以是一个分支名、标签名或提交SHA,默认从当前分支创建
 
git checkout <file-path> # 恢复某个文件到最近一次提交的状态(或暂存区的状态<文件已被暂存>,)

git checkout . # 丢弃工作目录中的改动(所有未添加到暂存区的改动)

6. 查看历史

  • git log:查看提交日志。
  • git log --oneline:简洁显示提交历史。
  • git blame <file>:查看文件每一行最后修改的提交信息。
  • git diff:比较文件或目录的差异

7.远程操作

  • git remote add origin <url>:添加远程仓库。
  • git fetch:从远程仓库获取最新信息,但不合并。
  • git pull:从远程仓库获取并合并最新信息到当前分支。
  • git push <remote> <branch>:将本地分支推送到远程仓库。
  • git push --set-upstream origin <branch>:首次推送并关联远程分支。

8. 撤销和恢复

  • git reset <file>:取消暂存指定文件的改动。
  • git reset --hard:回退到指定提交,丢弃工作目录和暂存区的改动。
  • git revert <commit>:创建一个新的提交来撤销指定提交的更改。
  • git restore:在Git 2.23+中用于恢复工作树文件或暂存区状态。

9.标签

  • git tag:列出所有标签。
  • git tag <tagname>:给当前提交打标签。
  • git tag -a <tagname> -m "message":带有注释信息的标签。
  • git push <remote> <tagname>:推送标签到远程仓库。

10. 解决冲突

  • 手动编辑冲突文件,移除Git插入的特殊标记(<<<<<<<, =======, >>>>>>>)。
  • git add <conflicted-file>:解决冲突后,重新添加文件。
  • git commit:提交解决冲突后的更改。