本文是以前学习 Git 时记录的相关内容。现在将笔记整理归档。
参考课程:尚硅谷 Git 教程
1. 版本控制功能
版本控制包括以下功能:
- 协同修改
- 数据备份
- 版本管理:目标是不保存重复数据。其中,SVN 采用的是增量式管理,Git 采用的是系统快照。
- 权限控制
- 历史记录:包括修改人、时间、内容、日志信息、恢复功能等。
- 分支管理:用于多线推进,之后进行合并。
2. Git 优势
Git 优势包括以下内容:
- 大部分操作可以实现本地完成。
- 提供完整性保证,对操作进行哈希处理和哈希验证。
- 尽量
添加
数据,而不是删除、修改数据,以避免不同步现象。 - 分支管理方便快捷,提供快照、指针等操作。
- 与 Linux 命令全面兼容,创始人都是 Linus。
3. Git 结构
Git结构包括:
- 远程库:一般是代码托管中心,GitHub、码云之类的。
- 本地库:存放历史版本。
- 暂存区:临时存储。
- 工作区:写代码。
git add
:工作区到暂存区的方法。git commit
:暂存区提交到本地库的方法。git push
:本地库上传到远程库的方法。git clone
:本地库获取远程库内容的方法。git pull
:本地库从远程库更新的方法。git fork
:外部团队参与工作的方法。



4. Git 命令
Git 常用命令包括:
git init
:初始化本地库,生成 .git 目录,里面存放了本地库相关的子目录和文件,不能随意删除。git config [--global] user.name/user.email
:配置签名。这里的签名就是作为标记,和远程库没关系,也不一定要用真的邮箱。项目签名优先度高于全局签名。信息存储在.git/config
中。git status
:显示状态,包括:所在分支,提交内容,什么可以提交等。git commit [-m message]
:提交到本地库。提交时,会有 vim 用来编辑提交备注信息。git add
:提交到暂存区,同时让文件变得可追踪,能够查看 log。git log [--pretty=oneline 一行显示] [--oneline 哈希值只显示一点]
:查日志。会提供日志的哈希值,可以供后续回滚和前滚操作使用。空格向下翻页,b 向上翻页,q 退出。git reflog
:也是一样看日志。HEAD@ 对应移动到当前第几步。git reset [--hard 将暂存区和工作区都重置] 索引值
:前进、后退到指定哈希值对应的历史。Git 不会删除 log 历史。git diff
:比较差异。git branch [分支名]
:创建分支。git branch -v
:查看分支。git checkout [分支名]
:切换分支。git merge 分支名
:合并分支。首先要切换到主要分支上面,然后再填另一个分支。合并会用 vim 显示冲突发生的位置,需要删除提示冲突的符号,并修正冲突,之后git commit
即可。git remote add [别名] [网址]
:连接远程库,并给远程库起个别名。git push [名称] [分支]
:推送文件到远程库。如果本地库不是基于最新的远程库文件开发的,还不能直接 push。必须先拉取,解决完冲突了,基于最新版再提交才可以。git clone [网址]
:获取远程库文件。git fetch [名称] [分支]
:拉取远程库文件,并且不会替换掉本地已有的文件,这样就可以先 fetch 再 merge,确保更新时不会把本地直接覆盖了。git pull
:拉取远程库文件,直接覆盖。
5. 常见问题
5.1 GitHub 操作慢
5.1 GitHub 操作缓慢
即使能够登录外网,也常常遇到连接 GitHub 操作缓慢的问题。
解决方法:在 clone 项目的时候,在 github.com 后面加上 .cnpmjs.com 即可。
例如:
https://github.com/BlueStragglers/DuReader
可以修改成:
https://github.com.cnpmjs.com/BlueStragglers/DuReader
Comments | NOTHING