GIT 的使用

来源:互联网 发布:最搞笑的网络歪歌 编辑:程序博客网 时间:2024/06/03 15:55
(一)Git常用指令
 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详解
 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


(三)Svn与git常用指令对照
 版本库初始化

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 属性
1 0