Git
Git是目前主流的分布式版本控制系统,旨在快速高效地处理各种类型地项目。
GitHub
一个存放代码的平台,可以理解为一个网盘。
学习路线
第一部分
- 了解基本概念:什么是Git、GitHub?Git、GitHub的作用,以及它们之间的联系与区别。
- 了解Git的相关概念:工作区、索引、本地版本库、远程仓库、Git文件状态、版本HEAD和分支等。
- 了解Git的安装、常见配置(修改、查看配置)、基本操作(初始化、克隆、暂存、提交、推送、拉取、拉取合并、查看状态、查看历史)。
- 了解分支操作,包括创建、查看、切换、删除、合并等
第二部分
- 了解GitHub的基本概念:仓库、分支、README、Star、Follow等。
- 熟悉操作:搜索、创建、Fork、Watch仓库以及上传代码等。
- 了解GitHub的协作流程:克隆仓库、创建分支、修改代码、发起Pull Request、Code Review、Merge分支、删除分支。
- 了解GitHub issues。
第三部分
- 高级操作:标签、检出、贮藏、清理、变基、重置、还原、检索、展示差异、溯源、参考日志、交互式命令。
2.** 预防、解决冲突**。 - 配置SSH。
- 子模块。
- Git钩子、提交钩子。
- 忽略提交。
- cherry-pick。
- 分布式工作流程。
- Git worktree。
- Git Flow。
- Git内部原理 。
- Monorepo。
- 了解Git与其他版本控制系统的异同。
本地数据库基本操作
git config --global user.name "<用户名>" git config --global user.email "<电子邮件>"
:Git的设定被存放在用户本地目录的.gitconfig档案里。git config --global color.ui auto
:让Git以彩色显示。git config --global alias.co checkout
:为Git命令设置别名,如把「checkout」缩略为「co」,然后就使用「co」来执行命令。git config --global core.quotepath off
:解决非ASCII字符显示错误的问题。git init
:在命令行中进入对应的目录中,运行该命令即可将当前目录设置为本地数据库。、git status
:确认工作树和索引的状态。git add <file>...
:将指定文件加入索引,可以使用空格分割从而指定多个文件。git commit -m ""
:提交文件。git log
:查看最新提交记录。
10.gitk
:可视化确认提交记录。
共享数据库基本操作
- 首先任意选择一个网站(可以免费建立远程数据库的)。
- push到远程数据库:其中
name
是为远程数据库取的别名,url
是远程数据库的地址。这样做的目的是为了方便下次使用时无需输出长串的地址。
接下来可以输入命令向数据库推送更改内容。其中git remote add <name> <url>
repository
是数据库的目标地址,refspec
是指定推送分支。
此外,我们可以指定-u选项。如此一来,我们下一次推送就可以省略分支名称。git push <repository> <refspec>...
- clone远程数据库:其中
repository
含义与上述一致,directory
是在本地数据库的指定目录。git clone <repository> <directory>
- 从远程数据库pull:
git pull <repository> <refspec>
分支操作
git branch <branchname>
:建立分支git checkout <branch>
:切换分支git checkout -b <branchname>
:建立并切换分支git merge <commit>
:以merge方式合并分支git branch -d <branchname>
:删除分支git reset --hard HEAD~
:取消上一次的合并操作- 使用rabse合并:rebase的时候,修改冲突后的提交不是使用commit命令,而是执行rebase命令指定 —continue选项。若要取消rebase,指定 —abort选项。这样,在master分支的issue3分支就可以fast-forward合并了。切换到master分支后执行合并。myfile.txt的最终内容和merge是一样的,但是历史记录不相同。