当前位置: 首页 > 工具软件 > git-snip > 使用案例 >

git & svn的使用

仇飞鹏
2023-12-01

(一)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 属性

 类似资料: