1、简介
git是什么?
分布式的版本控制系统
git的优点:
1、直接记录快照,而非差异比较
这是 Git 与几乎所有其它版本控制系统的重要区别,也保证了git的高效
2、近乎所有操作都是本地执行
在不联网的状态下也可以顺利完成大部分的工作
3、保证完整性
Git 中所有数据在存储前都计算校验和,然后以校验和来引用;若你在传送过程中丢失信息或损坏文件,Git 就能及时发现
4、一般只添加数据
可以尽情做各种尝试,而没有把事情弄糟的危险
基本的 Git 工作流程:
1、在工作目录中修改文件。
2、暂存文件,将文件的快照放入暂存区域。
3、提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。
Git 仓库目录:
--用来保存项目的元数据和对象数据库的地方。 Git中最重要的部分,克隆仓库时,拷贝的就是这里的数据。
工作目录:
--是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
暂存区域:
--是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。
2、安装Git
在使用 git 之前,首先需要将它安装在你的计算机上。如已经安装,最好将它升级到最新的版本。
可以通过软件包或者其它安装程序来安装,或者下载源码编译安装:
# ubuntu
$ sudo apt-get install git
3、初次运行 Git 前的配置
- 定制Git 环境
Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置
1)、/etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。
--如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。
2)、~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。
--可以传递 --global 选项让 Git 读写此文件。
3)、当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。
#注意:每一个级别覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。
- 用户信息
设置你的用户名称与邮件地址:
$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]
- 配置文本编辑器
通过如下命令配置默认文本编辑器:
$ git config --global core.editor gedit
- 检查配置信息
可以使用如下命令来列出所有 Git 当时能找到的配置
git config --list
- 忽略文件
通常有些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等,无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。
在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。
$ cat .gitignore
*.[oa]
*~
4、常用命令
- 帮助命令
git help
--用来显示任何命令的 Git 自带文档。
--对于每一个命令的完整的可选项及标志列表,你可以随时运行 git help
- 在现有目录中初始化仓库
git init
- 克隆现有的仓库
git clone [url]
- 检查当前文件状态
git status
- 跟踪新文件/暂存已修改文件
git add
- 查看文件具体修改
git diff
--将通过文件补丁的格式显示具体哪些行发生了改变
- 提交命令
git commit
- 移除文件
git rm
- 查看提交历史
git log
-p,用来显示每次提交的内容差异
-2, 来仅显示最近两次提交
- 撤消对文件的修改
git checkout --
- 查看分支
git branch
- 创建分支
git branch
- 切换分支
git checkout
git switch
- 创建+切换分支
git checkout -b
git switch -c
- 合并某分支到当前分支
git merge
- 删除分支
git branch -d
- 查看远程库信息
git remote -v
- 从本地推送分支
git push origin branch-name
--如果推送失败,先用git pull抓取远程的新提交
- 在本地创建和远程分支对应的分支
git checkout -b branch-name origin/branch-name
- 建立本地分支和远程分支的关联
git branch --set-upstream branch-name origin/branch-name
- 从远程抓取分支
git pull
--如果有冲突,要先处理冲突
(待更新)
参考资料:
https://www.liaoxuefeng.com/wiki/896043488029600
https://www.progit.cn/