sudo apt install git
Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
/etc/gitconfig
文件:系统中对所有用户都普遍适用的配置。若使用 git config
时用 --system
选项,读写的就是这个文件。~/.gitconfig
文件:用户目录下的配置文件只适用于该用户。若使用 git config
时用 --global
选项,读写的就是这个文件。.git/config
文件):只要去掉--global
选项重新配置即可,这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config
里的配置会覆盖 /etc/gitconfig
中的同名变量。git config --global user.name ""
git config --global user.email ""
将文件往 Git 版本仓库中添加的时候,是分两步执行的:
用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
有些时候,在必须把某些文件放到 Git 工作目录中,但又不能提交它们时,比如保存了数据库密码的配置文件等等。我们就需要在工作目录下创建一个.gitignore
文件,然后把要忽略的文件名填进去,这样 Git 就会自动忽略这些文件了。
有哪些文件是需要忽略的呢?有以下几种:
git commit
在当前的分支下提交修改记录,如果没有修改分支的情况下,位于master分支;
git branch newImage
创建newImage分支,但是在没有切换分支的情况下,仍然处于master分支;
git checkout newImage
切换分支的命令,切换到newImage分支;
git merge bugFix
将bugFix
合并到master
注:merge是将其后所指定的节点合并到HEAD指向的节点,并在HEAD指向的节点下延长
git rebase
,Rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去;Rebase 的优势就是可以创造更线性的提交历史。
新建并切换到 bugFix
分支
git branch bugFix; git checkout bugFix
提交一次
git commit
切换回 master
分支再提交一次
git checkout master; git commit
再次切换到 bugFix
分支,rebase
到 master
上
在提交树上移动
从 bugFix
分支中分离出 HEAD 并让其指向一个提交记录。
通过指定提交记录哈希值的方式在 Git 中移动不太方便。在实际应用时,并没有像本程序中这么漂亮的可视化提交树供你参考,所以你就不得不用 git log
来查查看提交记录的哈希值。通过哈希值指定提交记录很不方便,所以 Git 引入了相对引用。使用相对引用的话,你就可以从一个易于记忆的地方(比如 bugFix
分支或 HEAD
)开始计算。
相对引用非常给力,这里我介绍两个简单的用法:
^
向上移动 1 个提交记录~
向上移动多个提交记录,如 ~3
首先看看操作符 (^)。把这个符号加在引用名称的后面,表示让 Git 寻找指定提交记录的父提交。所以 master^
相当于“master
的父节点”;master^^
是 master
的第二个父节点。
git checkout HEAD~4
git checkout bugFix^
可以直接使用 -f
选项让分支指向另一个提交。例如:
git branch -f master HEAD~3
上面的命令会将 master 分支强制指向 HEAD 的第 3 级父提交。
git branch -f master C6
git checkout HEAD^
git branch -f bugFix HEAD^
主要有两种方法用来撤销变更:git reset
和 git revert
。
git reset
向上移动分支,原来指向的提交记录就跟从来没有提交过一样。
git reset HEAD~1
Git 把 master 分支移回到 C1
;现在我们的本地代码库根本就不知道有 C2
这个提交了。(注:在reset后, C2
所做的变更还在,但是处于未加入暂存区状态。)
虽然在你的本地分支中使用 git reset
很方便,但是这种“改写历史”的方法对大家一起使用的远程分支是无效的哦!为了撤销更改并分享给别人,我们需要使用 git revert
。
git revert HEAD