目录
git init
git init
用来将当前目录初始化为git目录,当执行完git init
后,当前目录会创建一个.git的目录,所有git需要的数据和资源都存放在这个目录下。
git add
git add
支持正则表达式,git add .
表示暂存所有已修改文件,git add filename
表示暂存某个文件。git add之前的文件对应git已修改状态,git add之后的文件对应git已暂存状态。
git commit
git commit
一般写成git commit -m "注释"
的形势,用来提交当前已经暂存修改的文件,git commit之前对应已暂存状态,git commit之后对应已提交状态。一般git add
和git commit
同时使用。-a去掉git add
的过程。--amend
可以修改上次提交时提交信息不对的问题。
git clone
git clone可以克隆远程仓库或者仓库的某个分支到本地,在项目中最好克隆整个仓库到本地,易于后期操作。如获取某个远程仓库为git clone url
,如果需要仓库和远程仓库名不同,则需要使用git clone url:repositoryName
。
git status
git status
用来展示当前某些文件处于什么状态,如果有文件修改但是没有暂存时会展示修改的文件,并提示nothing added to commit but untracked files present (use "git add" to track)
,有未跟踪文件,使用add来跟踪。如果已经add但是没有commit则会提示Changes to be committed
需要用户去使用commit命令来提交变更,提交变更后提示就会变成nothing to commit, working tree clean
。
忽略文件
在当前仓库目录下使用命令vim .gitignore
命令,创建或者编辑该文件,在该文件中声明的文件,都不会出现在未跟踪文件列表(即修改这些文件时使用git status时不会提示未跟踪)。.gitignore格式规范如下所示:
- 所有空行或者以#开头的行都会被忽略。
- 可以使用标准的glob模式(简化了的正则表达式)匹配。
- 匹配模式最后跟反斜杠说明要忽略的是目录。
- 要忽略指定模式外的文件或目录需要加上!取反。
git diff
该命令比较工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化的内容。git diff --cached
比较已经暂存起来的文件和上次提交的快照之间的差异。
git rm
删除当前文件并放入到暂存区域。如果已经在暂存区域则需要git rm -f fileName
。
git mv
和linux下mv操作差不多,相当于改名操作。相当于mv
+ git add
。
git log
查看提交历史, 上下可以翻页,q退出。-p -num
用来查看最近提交num次的记录、--stat
显示简要的增改行数、--pretty=format:"格式"
以特定形式显示出来、--graph
以图形方式显示,就是在原有基础上增加了从哪一个提交记录到下一个记录的连接线。具体用法使用git help log
。特定形式如下所示:
选项 | 说明 |
---|---|
%H | 提交对象的完整哈希字串 |
%h | 提交对象简短哈希字串 |
%T | 树对象的完整哈希字串 |
%t | 树对象的简短哈希字串 |
%P | 父对象的完整哈希字串 |
%p | 父对象的简短哈希字串 |
%an | 作者名字 |
%ae | 作者邮箱 |
%ad | 作者修改日期 |
%cn | 提交者的名字 |
%ce | 提交者邮箱 |
%cd | 提交日期 |
%s | 提交说明 |
基本上大写是特定的完整的输出,小写是简短输出,每个都是英文名称的对一个字符。
git remote
git remote
管理远程仓库,git remote
显示当前已经加入的远程仓库名、git remote -v
显示当前已经加入的远程仓库名和远程url、git remote add name url
添加远程仓库、git remote rm name
删除已经加入的远程仓库。git remote rename preName nowName
重命名。
git fetch、git pull、git clone
都是拉取远程仓库信息,常用的是git clone,git clone相对其他两个而言,会将远程所有信息拉取到本地,这样便于后续操作。git fetch同步远程仓库数据到本地,git pull抓取远程仓库某个特定分支到本地仓库并与本地仓库合并,git clone将远程仓库克隆到本地。
git push
将本地信息推送到远程仓库。git push [remote-name] [branch-name]
。git push name v0.1
推送特定的tag到服务器,git push name --tags
推送所有tag到服务器。
git tag
git tag
显示所有的标签,git tag -l ''
显示特定的标签。git tag -a v1.0 -m 'version 1.0'
创建含附注标签。v1.0表示当前tag号,version 1.0表示当前标签的备注。git tag v1.0
创建轻量级tag。git tag -a v0.1 sha
将某个特定的历史提高添加tag。
git config
可以通过该命令来配置git命令别名。git config --global alias.co checkout
,表示将git checkout
配置成git co
。
Remarks:
- 标签有轻量级的和含附注的。而轻量级的是不会变化的,默认指向特定提交对象的引用,附注标签是存储在仓库中的一个独立的对象、一般情况下最好使用附注标签,但是如果对外发布可以用轻量级标签。