Git的三种状态
- 已提交:数据已安全的保存在数据库中
- 已修改:修改了文件还没保存到数据库中
- 已暂存:对一个已修改的文件做了标记,使之包含在下次提交的快照中
Git的三种工作区
- Git仓库:Git用来保存项目的元数据和对象数据库的地方
- 工作目录:供修改的文件
- 暂存区域:它是一个文件,保存了下次将提交的文件列表信息
Git配置
- /etc/gitconfig文件:包含系统上每个用户的仓库的通用配置;查看系统配置的命令
git config --system --list
- ~/.gitconfig或者~/.config/git/config文件:只针对当前用户;查看当前用户配置的命令
git config --global --list
- 当前仓库Git目录的config文件,.git/config:针对该仓库;查看当前仓库配置的命令
git config --local --list
每一个级别覆盖上一级别的配置.可以通过输入git config <key>
来检查Git的某一项配置,比如
1 | $ git config user.name |
获取帮助
git help <verb>
git <verb> --help
man git-<verb>
获取Git仓库
在现有项目中初始化仓库
在该项目目录输入
git init
该命令创建一个.git
子目录,这个子目录包含初始化的Git仓库中所有的必须文件。
克隆现有的仓库
git clone [url]
如果克隆仓库的时候想自定义本地仓库的名字,可以使用如下命令:
git clone [url] newName
记录每次更新到仓库
如下为使用Git时文件的生命周期:
检查文件状态
git status
- 在untracked files 下面的就是未被跟踪状态的文件
- 在Changes to be comitted下面的是已暂存状态的文件
运行git status -s
会得到更为紧凑的输出格式。
跟踪新文件
Git add filename
git add
命令将文件放到暂存区
忽略文件
我们可以创建一个.gitignore
文件,列出要忽略的文件模式,列出的文件将不会别Git跟踪管理。
.gitignore
文件的格式规范:
- 所有空行或者以
#
开头的行都会被 Git 忽略。 - 可以使用标准的 glob 模式匹配,即shell使用的正则表达式。
- 匹配模式可以以(
/
)开头防止递归。 - 匹配模式可以以(
/
)结尾指定目录。 - 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(
!
)取反。
查看已暂存和未暂存的修改
git diff
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。
提交更新
git commit -m “information”
移除文件
git rm
这个命令会从工作目录中删除指定的文件,并且从已跟踪的文件清单中移除。
查看提交历史
git log
一些选项:
- -p:用来显示每次提交内容的差异
- -number:显示最近number此提交
撤销操作
取消暂存的文件
git reset HEAD filename
撤销对文件的修改
git checkout –filename
这是一个很危险的命令,因为对那个文件的任何修改都会消失。
远程仓库的使用
查看远程仓库
git remote
使用-v
参数会显示远程仓库的简写及对应的URL
git remote -v
添加远程仓库
git remote add
从远程仓库中拉取和抓取
git fetch [remote-name]
这个命令会访问远程仓库,并从中拉取所有还没有的数据,执行完成后将会拥有那个远程仓库中所有的分支的引用,可以随时查看或者合并。
推送到远程仓库
git push [remote-name]
远程仓库的移除与重命名
git remote rename oldname newname