Git 学习笔记

0. 概念

工作目录(Working directory):本地可见的文件,没有被 Git 系统所管理。工作目录的内容是你当前看到的,也是最新的。

暂存区/索引区(Stage/Index):存放工作目录中那些你打算提交到版本库的变更,Git 并没有把你所添加的文件放入版本库中,而是对内容进行 hash 后生成了一个编号。相当于告诉 Git,我有一个编号为 xxxxx 的文件将要提交。

本地版本库(Repository/History/HEAD):保存着被提交的各个版本。

远程仓库(Remote Repository):是本地仓库的异地备份。

1. 基本操作

请输入图片描述

查看当前状态
git status

会显示未缓存(未索引)的文件,以及未提交的文件。

添加与提交
git add <file>...
git add *
git commit -m "<comment>"
推送到远程仓库
git push [origin master]

说明:将本地 master 分支推入远端的 origin。

如果本地仓库不是克隆过来的,并欲将你的仓库连接到某个远程服务器,可以使用如下命令为远端仓库添加 orgin:

git remote add origin <server>

如此你就能够将你的改动推送到所添加的服务器上去了。

2. 取消已被 Git 初始化(git init)的目录

删除该目录下 .git 文件夹即可。

3. 撤销本地修改

git checkout -- <filename>

此命令会使用 HEAD 中的最新内容替换掉工作目录中的文件。已添加到暂存区的文件不会受到影响,即不变。(当然,已经提交的文件更不会变。)

对于已缓存的文件,可以先撤销缓存(Unstage),再使用上面的命令来取消修改:

git reset HEAD *
git reset HEAD <filename>

4. 撤销提交

git reset --hard <commit_id>

回退到本地最新版本(或某个指定的版本),本地之前修改的未缓存的都会被覆盖掉。

5. 删除文件&文件重命名

删除文件
git rm <filename>
git rm -r <foldername>

rm 与 add 类似,都是将改动缓存起来,即已经添加到暂存区,下一步需要提交。rm 不仅会在 Git 系统中删除文件,它还会自动将物理文件删除。

文件重命名
git mv <filename> <newfilename>

mv 与 add 类似,也是将改动缓存起来,即已经添加到暂存区,下一步需要提交。mv 不仅会在 Git 系统中重命名文件,还会将物理文件重命名。

6. 补充提交

有时候已经提交了,但发现这次提交不完整,还有修改需要在这一次中提交。在没有推送(PUSH)到远端的情况下可用如下命令补交:

git commit --amend -C HEAD

--amend 是重写提交历史,-C 是重用某次提交的提交信息。

7. 命令别名

git config --global alias.(name) "(command)"

括号部分替换为别名和对应的命令。它实际是将这个设置写入配置文件 .gitconfig,可以使用如下命令查看配置文件:

git config --global --list

例如设置 切换分支 命令的别名:

git config --global alias.co "checkout"

那此后就可以这样来切换分支:

git co branch_x

其中 branch_x 为某分支名称。

8. 删除未跟踪的文件

git clean -df
git clean -f

参数说明:-d 删除未跟踪目录,-f 删除未跟踪的文件。

如果想在删除前查看哪些文件将会被删除,可使用下面的命令:

git clean -dn

参考资料:

图解Git

标签: git

添加新评论