GIT 版本:
git --version
GIT 用户名和邮箱:
git config --global user.name "xxxxxx"
git config --global user.email "xxxxxx@topwisesz.com"
sudo git config --system user.name "xxxxxx"
sudo git config --system user.email "xxxxxx@topwisesz.com"
检出服务器代码:
git clone [git repo path]
例:
git clone git@10.20.30.20:/home/git/repos/demo.git
更新服务器代码:
git pull
提交代码到服务器:
git push
查看git仓库状态:
git status
查看工作区和本地仓库的差异:
git diff HEAD
查看工作区和暂存区的差异:
git diff
查看暂存区和本地仓库的差异:
git diff --cached
查看某commit的提交:
git show [commit id]
查看某commit的提交受影响的文件列表:
git show --name-status [commit id]
查看git的log:
git log # 输出所有log
git log -1 # 输出最近的一次log
git log -1 --name-status # 输出最近的一次log并且输出受影响的文件列表
增加文件或者提交文件到暂存区:
git add [file]
删除文件:
git rm [file]
提交文件到本地仓库:
git commit -m "log message" [files]
git commit -a -m "log mesasge"
产生patch (从commit id开始生成patch):
git format-patch -s [commit id]
合入patch:
patch -p1 < 0001-xxx.patch
GIT 进阶 命令
保存工作进度
git stash
恢复之前保存的工作进度
git stash pop
误删除后的恢复
如果删除了一个文件,并且commit之后发现删错了。也可以恢复,
git log (查看各次的提交信息)
git checkout commit号 (恢复到未删除前的commint号,此时删除的文件也恢复到磁盘上了)
git checkout master (备份好删除的文件后,再回到最新状态)
git log 查看提交记录,参数:
-n (n是一个正整数),查看最近n次的提交信息
$ git log -2 查看最近2次的提交历史记录
git log 查看指定文件的提交信息,参数:
-- fileName fileName为任意文件名。(注:文件名应该放到参数的最后位置,通常在前面加上--并用空格隔开表示是文件。)
$ git log file1 file2 查看file1文件file2文件的提交记录
$ git log file/ 查看file文件夹下所有文件的提交记录
git log 查看某个分支或某分支指定文件的提交信息,参数:
--branchName branchName为任意一个分支名字,查看某个分支上的提交记录。同上,需要放到参数中的最后位置处。(注:如果分支名与文件名相同,系统会提示错误,可通过--选项来指定给定的参数是分支名还是文件名。)例:在当前分支中有一个名为v1的文件,同时还存在一个名为v1的分支,则:
$ git log v1 -- 此时的v1代表的是分支名字
$ git log -- v1 此时的v1代表的是名为v1的文件
$ git log v1 -- v1
git log 查询指定标签/分支中的提交记录信息,参数:
tagName或branchame 查询指定标签/分支中的提交记录信息
$ git log v1.0.. 查询从v1.0以后的提交历史记录(不包含v1.0)
$ git log test..master 查询master分支中的提交记录但不包含test分支记录
$ git log master..test 查询test分支中的提交记录但不办含master分支记录
$ git log master...test 查询master或test分支中的提交记录。
$ git log test --not master 屏蔽master分支
git log 根据commit查询日志,参数:
commit id 根据commit查询日志
$ git log commit 查询commit之前的记录,包含commit
$ git log commit1 commit2 查询commit1与commit2之间的记录,包括commit1和commit2
$ git log commit1..commit2 同上,但是不包括commit1
其中,commit可以是提交哈希值的简写模式,也可以使用HEAD代替。HEAD代表最后一次提交,HEAD^为最后一个提交的父提交,等同于HEAD~1,HEAD~2代表倒数第二次提交
git log 按指定格式显示日志信息,参数:
--pretty 按指定格式显示日志信息,可选项有:oneline,short,medium,full,fuller,email,raw以及format:<string>,默认为medium,可以通过修改配置文件来指定默认的方式。
$ git log (--pretty=)oneline
$ git log --pretty=format:"%h - %an(%ad): %s" --date=iso
常见的format选项:
选项 说明
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明
注:作者是指最后一次修改文件的人;而提交者是指提交该文件的人。
$ git log --pretty=format:"%an %ae %ad %cn %ce %cd %cr %s" --graph
git log 查看所有合并过或未被合并过的提交信息,参数:
--mergs 查看所有合并过的提交历史记录
--no-merges 查看所有未被合并过的提交信息
git log 查询指定作者的提交记录,参数:
--author=someonet 查询指定作者的提交记录
$ git log --author=gbyukg
git log 显示指定时间之前的提交信息,参数:
--since,--affter 仅显示指定时间之后的提交(不包含当前日期)
--until,--before 仅显示指定时间之前的提交(包含当前日期)
$ git log --before={3,weeks,ago} --after={2010-04-18}
git log 通过提交说明信息过滤提交日志,参数:
--grep 通过提交说明信息过滤提交日志
$ git log --grep=hotfix 该命令会列出所有包含hotfix字样的提交信息说明的提交记录
注意:如果想同时使用--grep和--author,必须在附加一个--all-match参数。
git log 通过查询文件的变更内容来检索出指定提交日志,参数:
-S 通过查询文件的变更内容来检索出指定提交日志 注:-S后没有"=",与查询内容之间也没有空格符
$ git log --Snew
git log 查看提交时的补丁信息,参数:
-p 查看提交时的补丁信息
$ git log -p --no-merges -2
git log 常用参数:
--stat 列出文件的修改行数
--sortstat 只显示--stat中最后行数修改添加移除的统计
--graph 以简单的图形方式列出提交记录
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
git blame 用来查看文件的每个部分修改详情,参数:
git blame 用来查看文件的每个部分修改详情
$git blame index.php
版本库初始化
svnadmin create <path> git init [--bate] <path>
导入数据
svn import <path> <url> -m ... git clone; git add .; git commit
版本库检出
svn checkout <url/lf/trunk><path> git clone <url> <path>
版本库分支检出
svn checkout <url/of/branches/name> <path> git clone -b <branch> <url> <path>
工作区更新
svn update git pull
更新到历史版本
svn update -r <rev> git checkout <commit>
更新到指定日期
svn update -r{<date>} git checkout HEAD@'{<date>}'
更新至最新提交
svn update -r HEAD git checkout master
切换至里程碑
svn switch <url/of/tags/name> git checkout <tag>
切换至分支
svn switch <url/of/branches/name> git checkout <branch>
还原文件/强制覆盖
svn revert <path> git checkout - <path>
添加文件
svn add <path> git add <path>
删除文件
svn rm <path> git rm <path>
移动文件
svn mv <old> <new> git mv <old> <new>
清除未跟踪文件
svn status | sed -e "s/^?//" | xargs rm git clean
清除工作锁定
svn clean -
获取文件历史版本
svn cat -r <rev> <url/of/file>@<rev> <output> git show <commit>:<path> <output>
反删除文件
svn cp -r <rev> <url/or/file>@<rev> <path> git add <path>
工作区差异比较
svn diff git diff git diff -cached git diff HEAD
版本间差异比较
svn diff -r <rev1>:<rev2> <path> git diff <commit1> <commit2> -<path>
查看工作区状态
svn status git status -s
提交
svn commit-m"<msg>" git commit -a -m"<msg>"; git push
显示提交日志
svn log | less git log
逐行追溯
svn blame git blame
显示里程碑/分支
svn ls <url/of/tags/> git tag svn ls <url/of/branches/> git branch git show-ref
创建里程碑
svn cp <url/of/rtunk/> <of/tags/name> git tag[-m"<msg>"] <tagname> [<commit>]
删除里程碑
svn rm <url/of/tags/name> git tag -d <tagname>
创建分支
svn cp <url/of/rtunk/> <url/of/branches/name> git branch <branch> <commit> git checkout -b <branch> <commit>
删除分支
svn rm <url/of/branchesname> git branch -d <branch>
导出项目文件
svn export -r <rev> <path> <output/path> git archive -o <output.tar> <commit> svn export -r <rev> <url> <output/path> git atchive -o <output.tar> -remote=<url> <commit>
反转提交
svn merge -c -<rev> git revert <commit>
提交拣选
svn merge -c <rev> git revert-pick <commit>
分支合并
svn merge <url/of/branch> git merge <branch>
冲突解决
svn resolve -accept=<ARG> <path> git mergetool svn resolved <path> git add <path>
显示文件列表
svn ls git ls-files svn ls <url> -r <rev> git ls-tree <commit>
更改提交说明
svn ps -revprop -r <rev> svn:log "<msg>" git commit-amend
撤消提交
svnadmin dump、svnadmin load 及 svndumpfilter git reset [--sort | --hard]HEAD^
属性
svn:ignore .gitignore 文件 svn:mime-type text 属性 svn:eol-style eol 属性 svn:externals git submodule 命令 svn:keywords esesport-subst 属性