
Git是一个免费的开源分布式版本控制系统,旨在以快速和高效的方式处理项目的所有内容。
本博客是对 pro git 的学习笔记 ,并配合一些自己使用的理解。
一 、基本模型
在这一篇文章不会对git的模型进行深入的介绍(后续会具体探讨),读者只需要知道当前目录暂存区(stage)、本地提交区(暂时这样表示)就可以了。
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 中对仓库状态转移的图描述其过程
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> |
该指令将本地的指定分支推送到远程仓库中