Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

常用Git命令整理 #2

Open
PyMonar opened this issue Aug 28, 2016 · 0 comments
Open

常用Git命令整理 #2

PyMonar opened this issue Aug 28, 2016 · 0 comments

Comments

@PyMonar
Copy link

PyMonar commented Aug 28, 2016

记录一些常用的git命令

基本配置

git config --global #全局配置

git config --list #配置清单

git config --global alias.co checkout #设置别名checkout

git help #帮助


基础

git init #初始化仓库

git clone [url] [another name] #从远程仓库克隆

git status #查看当前状态

git add [file path] #跟踪当前某文件,纳入版本仓库,add就是放入暂存区的意思,如果是文件夹则会递归纳入

git diff [--cached] #查看修改文件之后还未暂存的变化,加了参数--cached是查看暂存之后与版本库的变化

git commit [-m] [#] #提交到版本库所有暂存区域的更新,-a参数会跳过暂存,直接将已跟踪的所有文件直接提交到版本库

git rm [--cached] [file name] #移除某个文件的跟踪,并将其从文件目录删除,如果加--cached参数的话只是从版本库移除跟踪

git mv [file form] [file to] #文件重命名

git commit --amend #修改最后一次提交

git reset HEAD [file] #取消暂存的文件

git checkout -- [file] #取消修改的文件,回到之前的提交状态文件

.gitignore 文件规则使用glob模式,所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。


日志

git log #查看日志

git log -p -2 #-p显示文件差异,-2显示最近两次

git log --stat #显示摘要信息

git log --pretty=oneline/short/full/fuller #提供格式化输出方式

git log --pretty=format:"%h - %an, %ar : %s" #按照自定义格式输出log

git log --pretty=format:"%h %s" --graph #图形化展示

git log --since/until/after/before=2.weeks #特定时间的log

git log --author/committer

git 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(后跟指定格式)。


format 选项 说明

%H 提交对象(commit)的完整哈希字串

%h 提交对象的简短哈希字串

%T 树对象(tree)的完整哈希字串

%t 树对象的简短哈希字串

%P 父对象(parent)的完整哈希字串

%p 父对象的简短哈希字串

%an 作者(author)的名字

%ae 作者的电子邮件地址

%ad 作者修订日期(可以用 -date= 选项定制格式)

%ar 作者修订日期,按多久以前的方式显示

%cn 提交者(committer)的名字

%ce 提交者的电子邮件地址

%cd 提交日期

%cr 提交日期,按多久以前的方式显示

%s 提交说明


远程仓库

git remote [-v] #查看远程仓库

git remote add [short name] [url] #添加远程仓库

git fetch [remote name] #从远程仓库抓取更新,只抓取,并不合并

git push [remote name] [branch name] #向远程仓库推送更新,推送必须别人没有更新才可以,否则需要先取回本地合并

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 [#] #新建带注释的标签

git show [v1.0] #查看某个版本信息

git tag [v1.1] #创建轻量级标签

git tag -a [v1.0] [hash] #给特定提交添加标签

git push [remote] [tag name]/[--tags] #推送标签


分支


git branch [branch name] #新建分支

git checkout [branch name] #切换分支

git checkout -b [branch name] #新建并切换到分支

git merge [branch name] #在当前分支上合并[branch name]分支

git branch -d [branch name] #删除分支

git branch [-v]/[-vv] #给出当前所有分支列表,*号代表当前所在分支

git branch [--merged]/[--no-merged] #查看那些分支合并进入了当前分支,即哪些分支是当前提交对象的直接上游

git fetch [origin] #获取服务器端的数据到本地,更新远程分支指向

git push [origin] [master] #向远程仓库推送自己的数据上去,更新远程分支的指向

git checkout -b [local branch name] [remote branch name] #本地新建分支与远程对应

git checkout --track [remote branch name] #本地开始跟踪远程分支

git push [origin]  :[branch name] #删除远程分支名

git rebase [origin/master] #将自己的修改衍合到主干分支上去

git会维护一个HEAD的指针,指向当前分支的顶端。

切换分支最好保留一个干净的工作区域。

远程分支在本地无法移动,只是一个标记位。远程分支使用[origin]/[master]这种方式展现。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant