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
参考资料: