精通Git(第2版). Pro Git, Second Edition.
创建/初始化一个 git 仓库
# 在某文件夹下执行
git init
# 执行完后,目录下多了个 .git 文件夹
暂存:把文件添加到仓库,以使此文件可被 git 追踪,或提交文件到暂存区
git add <filename>
提交:将修改提交到仓库
# 必须输入信息以提交修改
git commit -m <message>
# 或 唤起文本编辑器编辑信息以提交修改
git commit
# 将工作区的修改跳过暂存区直接提交
git commit -a
查看当前状态,可查看所在分支、涉及修改的文件
git status
# 精简方式查看
git status -s
# 显示的结果左侧有两列,左列标明文件是否暂存,右列标明文件是否修改
# 如果有文件被修改,查看 filename 的修改情况
git diff <filename>
查看提交记录
git log
# 显示信息太多?可以试试下面的命令,每条记录只在一行中显示
git log --pretty=oneline
回退
# 回退一步
git reset --hard HEAD^
# 回退两步
git reset --hard HEAD^^
# 回退100步
git reset --hard HEAD~100
# 回退到指定版本
# git reset --hard <commit_id>
git reset --hard 1094a
查看操作记录,比如可以查看回退的操作记录,回退之后反悔可用
git reflog
工作区(Working Directory):文件夹下能看到的目录
暂存区(stage/index):一般在 .git/index 中
版本库(Repository):指 .git 文件夹
master分支、HEAD
git add git commit
----> ---->
工作区 ------------------ 暂存区 --------------- 版本库
<----
丢弃工作区 暂存区回到工作区
git checkout git reset
查看工作区的修改
# 查看工作区的修改,即未暂存的修改,// 比较工作区和暂存区
git diff
git diff <filename>
查看暂存区的修改
# 查看暂存区的修改,即将会被提交的内容
git diff --cached
# or
git diff --staged
???# 比较工作区和版本库
???git diff HEAD -- <filename>
修改上一次的提交信息
git commit --amend
撤销暂存区修改
# 撤销已暂存的文件,仅将修改由暂存区转到工作区,不会丢失修改的内容
git reset
git reset HEAD <filename>
撤销工作区修改
# 撤销工作区中对文件的修改,会丢失修改的内容
git checkout -- <filename>
删除文件
# (此变更即被保存到暂存区)
# 删除文件且取消对文件的跟踪
git rm <filename>
# 在资源管理器中删除需使用 git add 才能得到 git rm 的效果
# 仅取消对文件的跟踪,不删除文件,
git rm --cached <filename>
移动文件/重命名
git mv <file_from> <file_to>
这是与 SVN 有差别的地方
本地有仓库,需要关联远程仓库
git remote add [shortname] [url]
git remote add origin git@github.com:<github_username>/<respo_name>.git
本地无仓库,从 github 上 clone 到本地
git clone <git_url>
Git支持多种协议,包括
https
,但通过ssh
支持的原生git
协议速度最快。Git支持多种协议,默认的
git://
使用ssh,但也可以使用https
等其他协议。使用
https
除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh
协议而只能用https
fetch
# 从远程仓库获取所有本地仓库没有的数据,需手动合并到本地
git fetch [remote-name]
pull
# 自动获取远程数据,并合并到本地
# 相当于 git fetch 与 git merge 的组合
git pull
第一次推送到远程仓库
git push -u origin master
# -u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
以后本地提交后,推送到远程仓库
git push origin master
查看
# 列举标签
git tag
# 查看某标签
git show <tag>
创建
注释标签(annotated)(推荐)
git tag -a <tagname> [-m <msg>]
git tag -a v1.4 -m "my version 1.4"
轻量标签(lightweight)
git tag v1.4-lw
补加标签
在之前的某次提交时添加标签
git tag -a <tagname> <commit>
共享标签
git push
默认不推送标签到远程服务器上,需要手动推送
git push origin <tagname>
# 推送所有tag
git push origin --tags
.gitignore 文件
规则:
GitHub 维护了一份相当全面的 .gitignore 参考实例列表 https://github.com/github/gitignore
原文:https://www.cnblogs.com/bfjdbcs/p/12046112.html