git 入门教程(一):基本用法
凌晨九点 Lv2

Git是一个免费的开源分布式版本控制系统,旨在以快速和高效的方式处理项目的所有内容。

本博客是对 pro git 的学习笔记 ,并配合一些自己使用的理解。

一 、基本模型

在这一篇文章不会对git的模型进行深入的介绍(后续会具体探讨),读者只需要知道当前目录暂存区(stage)、本地提交区(暂时这样表示)就可以了。

image

git在创建仓库后对版本控制的操作都需要通过添加暂存区后再提交。假如当前目录中有大量文件被修改,而为保证结构清晰,需要分别成多次快照的保存,就可以分别添加到暂存区再提交。

二、 基本命令

以下命令直接以git [command] -h的格式就可以看到参数使用规则

2.1 基本的基本

创建仓库

1
git init

该命令创建一个新的git仓库,其原理会在下一篇文章中说明。

添加暂存区

1
git add <files>

通过此命令可以将指定文件或者目录添加到暂存区。

tldr

  • 使用git add . 快速添加当前目录下全部修改文件到暂存区

提交暂存区内容

1
git commit 

这里需要说明的是每次commit的都需要有相应的信息,表示本次提交对代码的修改,git会自动打开默认的编辑器在你填写完提交信息后关闭即可。

tldr

  • 使用git commit -m "text" 可以直接添加简单的提交信息而不打开编辑器
  • 使用git commit -a 提交所有修改的文件

2.2 查看提交历史

可以查看仓库的完整提交历史

1
git log

tldr

  • 使用git log -p -2 查看最近两次提交的修改
  • 使用git log --stat 统计每次的变更信息
  • 使用git log --pretty=oneline 查看一行信息

2.3 查看当前仓库状态

这里借用 pro git 中对仓库状态转移的图描述其过程

image

1
git status

tldr

  • 使用git status -s 可以查看简短的文件状态信息
  • 使用*.gitignore*文件可以配置不被git追踪的文件(支持正则表达式)

2.4 回滚文件

重做提交

如果你认为上一次提交并不完整,你可以使用:

1
git commit --amend

该命令将暂存区和上次提交的信息一起提交,并进入修改信息的编辑器界面

重做暂存区

如果将将暂存区中的某个文件移出暂存区可以使用:

1
git reset HEAD <file>

文件状态回滚

这是有风险的操作,被回滚的操作无法撤回

如果你不希望文件的修改,并希望上次提交状态可以使用:

1
git restore <file>

或者

1
git checkout -- <file>

2.5 分支管理

创建分支

每次提交都像链表一样被记录,而分支就像是从链表中分岔出的一条路,最后能合并回这个主路上。这样使用的理由也很简单,就像是支线任务。

1
git branch <branchName>

tldr

  • 使用git branch -a查看所有分支
  • 使用git branch -d <branchName>删除指定分支

切换分支

创建分支后实际上还在原来的分支中,需要切换到指定的分支中

1
git checkout <branchName>

tldr

  • 使用git checkout -b <branchName>可以直接新建并切换到新的分支

合并分支

当需要将一个分支和另一个分支合并时就会用到合并分支的功能

1
git merge <branchName>

表示将该分支合并到当前分支中

这其中可能会产生冲突,

2.5 远程仓库管理

克隆仓库

当需要使用远程仓库的时候需要克隆仓库,这里的远程仓库地址未必是一个url也可以是在同一文件系统下的另一个目录

1
git clone <repo> [your_repo_name]

通过以上能够克隆一个完整仓库到指定目录下,需要注意在克隆时路径下不能有相同文件名的目录。

如果仓库是克隆的,那该仓库会有一个默认origin的远程仓库地址

1
git remote 

上述命令可以查看本仓库的远程仓库

tldr

  • 使用git remote show <name> 查看远程仓库的完整信息
  • 使用git remote get-url <name> 可以查看指定远程仓库的url
  • 使用git remote set-url <name> <url> 可以为添加指定远程仓库的url

远程拉取

当远程仓库更新后,我们也要积极更新本地仓库以保证和远程同步

1
git fetch <remote>

该操作并不会将远程仓库更新的代码自动合并到当前分支中,而是将远程仓库中的分支作为一个本地分支存储,需要手动将远程分支合并到当前分支中(具体操作同合并分支

也可以使用 git pull 能够将上述操作同时执行,拉取并合并。

远程推送

当需要将本地提交的代码推送到远程仓库中时需要使用以下:

1
git push <remote> <branch>

该指令将本地的指定分支推送到远程仓库中