文章参考自:https://www.open-open.com/lib/view/open1328069609436.html
一、git配置文件
目录
/etc/gitconfig 对所有用户生效
~/.gitconfig 只对当前用户生效
修改个人信息:
$ git config --global user.name “name”
$ git config --global user.email name
修改编辑器:
$ git config --global core.editor emacs
查看config信息:
$git config --list
差异分析工具
$ git config --global merge.tool meld
二、git基本命令
新建本地项目
在项目目录下执行 git init
将文件纳入版本控制 git add <文件名>
提交更改 git commit -m ‘文本说明’
如没有-m参数,则会在提交后使用系统预设文本编辑器输入本次提交的文本说明
从远程仓库clone项目
$ git clone git://<git的地址> <可选参数,意为clone后的项目名称>
检查当前文件状态
$ git status
文件修改后,跟踪修改的文件,命令执行后,文件进入暂存区
$ git add <文件名>
修改文件后,没有git add时,使用git status命令将看到暂存区文件和未跟踪文件,此时commit将只提交暂存区文件
修改后文件对比
$ git diff 修改后文件与暂存区对比
$ git diff -cached 暂存区文件与已经commit文件对比
忽略文件
项目目录下 .gitignore 文件里为忽略规则
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 但 lib.a 除外
/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 忽略 build/ 目录下的所有文件
doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
删除文件
$ git rm 从工作目录移除文件
$ git rm -f 从暂存区和工作目录移除文件
$ git rm --cached 从git仓库里移除
重命名文件
$ git mv <原文件名> <新文件名>
等价于下列三条命令:
$ mv <原文件名> <新文件名>
$ git rm <原文件名>
$ git add <新文件名>
撤销提交
$ git commit --amend 使用暂存区重新提交,可重新编辑提交日志
如有文件忘记提交,可在commit后add,然后再–amend
$ git commit -m ‘initial commit’
$ git add forgotten_file
$ git commit --amend
$ git reset head [文件名] 取消缓存区里的文件
$ git checkout – [文件名] 取消对工作目录中文件的修改
查看提交历史
$ git log
参数:
-p 比较每次提交的差异
-2 只显示最近两次提交
–stat 只显示简要的增减行统计
–pretty 格式化输出结果
参数: --pretty=oneline 结果显示在一行
–pretty=format:"%h - %an, %ar : %s" 定制显示格式
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明
log其他参数
-p 按补丁格式显示每个更新之间的差异。
–stat 显示每次更新的文件修改统计信息。
–shortstat 只显示 --stat 中最后的行数修改添加移除统计。
–name-only 仅在提交信息后显示已修改的文件清单。
–name-status 显示新增、修改、删除的文件清单。
–abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
–relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
–graph 显示 ASCII 图形表示的分支合并历史。–pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,
short,full,fuller 和format(后跟指定格式)。
远程仓库的使用
$ git clone git://*** 从远程仓库clone项目 默认本地仓库名为origin
$ git remote (-v) 列出所有已获得的远程仓库(显示仓库的网络地址)
$ git remote add [shortname] [url] 添加名为shortname的网络地址为url的远程仓库
$ git fetch [shortname] 从shortname仓库拉取本地没有的数据 fetch只拉取数据,不会进行分支合并
$ git pull 自动抓取数据,将远程仓库分支合并到当前分支
默认情况下,clone命令实质是在本地新建master分支然后同步远程仓库的master分支
$ git push [remote-name] [branch-name] 从本地将branch-name分支数据推送到remote-name仓库的对应分支上,前提是有写权限,没有别人正在
同步数据,如果此时服务器的数据已经经过许多分支的修改,则必须将服务器上的修改全部fetch到本地后再进行提交
$ git remote show [remote-name] 查看远程仓库的详细信息
$ git remote rename [old-name] [new-name] 修改远程仓库名称,此时对应分支名称也会变更
$ git remote rm [remote-name] 删除远程仓库
标签
$ git tag 列出现有标签
$ git tag -a v1.0 -m ‘The version 1.0’ 打标签,-a表示打一个有详细信息的标签,-m表示文本说明,如不加则会弹出文本编辑器
$ git show v1.0 显示v1.0标签的详细内容
$ git tag v1.1 打一个轻量化标签
$ git tag -a v1.2 [某次提交记录的校验和] 为某次提交记录补标签
$ git push origin [版本号] [–tags] 同步某个版本号的标签/同步所有标签