git命令学习笔记
状态:⏲️ 未完待续…
[TOC]
参考资料
常用命令
初始配置
配置用户信息
1
2
$ git config --global user.name "<用户名>" # GitHub用户名
$ git config --global user.email <邮箱地址> # GitHub注册邮箱
获取仓库
克隆整个仓库
1
$ git clone <仓库地址(URL)>
获取远程仓库的最新数据(但不会修改本地文件)
1
$ git fetch <远程仓库名称> # 缺省为克隆的源仓库 origin
合并远程仓库的修改到本地仓库(自动修改本地文件)
1
$ git pull # 缺省为克隆的源仓库 origin
查看信息
查看仓库状态
1
$ git status # 加选项 -s 显示简短信息
查看所有远程仓库名称(默认为 origin
)
1
$ git remote # 加选项 -v 显示读写远程仓库对应的地址(URL)
查看某个远程仓库的详细信息
1
$ git remote show <远程仓库名称>
比较差异
查看文件新旧版本区别
1
2
$ git diff # 比较未暂存和已暂存(add)
$ git diff --cached # (或者 --staged) 比较已暂存和上一次提交
查看提交历史
1
2
$ git log # 加上 --stat 选项显示简略信息
$ git log -p -2 # 只显示最近两次提交之间的差异
暂存修改
移动文件或重命名
1
$ git mv <旧文件名> <新路径或新文件名>
暂存修改(跟踪新文件)
1
$ git add <文件>
取消本次对某个文件的暂存
1
$ git reset HEAD <文件>
取消跟踪某个文件
1
$ git rm --cached <文件>
要忽略(即不跟踪)的文件和文件夹写入.gitignore
文件中,Git-Book中展示的格式示例如下:
1
2
3
4
5
6
*.a # 忽略所有的 .a 文件
!lib.a # 但跟踪所有的 lib.a,即便你在前面忽略了 .a 文件
/TODO # 只忽略当前目录下的 TODO 文件,而不忽略 subdir/TODO
build/ # 忽略任何目录下名为 build 的文件夹
doc/*.txt # 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/**/*.pdf # 忽略 doc/ 目录及其所有子目录下的 .pdf 文件
提交修改
提交修改
1
$ git commit -m "<提交信息>"
重新提交(以本次新提交覆盖上一次提交)
1
$ git commit --amend
撤销对文件的修改(还原回上一次提交的状态)
1
$ git checkout -- <文件>
推送修改
推送已提交的最新修改到远程仓库
1
$ git push <远程仓库名> <分支> # 一般为: git push origin master
远程仓库
添加新的远程仓库
1
$ git remote add <名称(不同于origin)> <地址(URL)>
远程仓库重命名(远程仓库名称仅本地可见)
1
$ git remote rename <旧名称> <新名称>
移除远程仓库
1
$ git remote remove <远程仓库名称>