Git使用方法总结

  • Git的主要特点
  1. 分布式的,可以单机工作,用git管理自己的本地代码,记录改动日志
  2. 创建分支和tag比较简单,切换也很方便,不需要重复clone代码,一个code目录对应多个分支
  3. 跟踪的是文件内容,而不是文件。对目录不进行跟踪,所以没有空目录
  4. 可以和svn进行交互,你用git完全可以去访问团队的svn库
  5. 支持三种网络协议,ssh --安全,git--快,http/https协议--易架设,穿透好
  • Git的安装
  1. 发行版本里一般有git rpm,直接安装即可
  2. 如果没有去https://git-scm.com/下载版本或源码安装
  3. 配置全局用户: git config --global user.name "Your Name"
  4. 配置全局电子邮箱:git config --global user.email "[email protected]"
  5. 配置颜色显示:git config --global color.ui "auto"
  6. 为特定版本库配置用户和email:

        git config  user.name "Your Name"

        git config  user.email "[email protected]"

  • Git的日常用法
创建版本库 git init
添加新文件或暂存修改的文件 git add <some file>
提交改动 git commit -m "<some message>"
交互模式添加 git add -i
一步提交已修改的所有文件 git commit -m "<some message>" -a
查看状态 git status
创建远程版本库

git remote add origin [email protected]:/repos/pocus.git 

git push orign master

克隆远程版本库   git clone [email protected]:/repos/pocus.git 
切换远程版本分支

git branch -r

git checkout <branch name>

与远程版本库同步 git fetch
与远程版本库同步并合并   git pull
推入改动     git push
显示历史记录

git log

git log -1

git log --since=“6 hours”

git log --before=“2 days”

git log 7b1558c..32bde32

git log HEAD~5..HEAD

查看当前目录树与暂存区差异 git diff
显示暂存区和版本库差异 git diff --cached
显示工作目录与版本库差异 git diff HEAD
显示工作目录与某次提交的差异

git diff 182df2f

显示两个版本间差异 git diff 182df2f 23e392f
显示差异统计   git diff --stat <start point> [<end point>]
显示文件内容修改记录

git blame hello.c

git blame -L 12,25 hello.c

git blame -L 12,+2 hello.c 相当于12,13行

git blame -L 12,-2 hello.c  相当于11,12行

列分支

git branch    列本地的分支

git branch -r  列远程的分支

git branch -a 列所有的分支

创建分支

git branch <new branch>

git branch  <new branch> <start point> 基于分支,提交,标签

捡出分支 git checkout
创建并捡出分支 git branch -b <new branch>
直接合并分支 git merge <some branch>
压合合并分支 git merge --squash <some branch>
分支拣选合并,并提交 git cherry-pick 18ef23d
多个改动拣选合并

git cherry-pick -n 321d76f  (-n是不提交)

git commit

删除分支

git branch -d <branch>  (-d未合并的分支不能删除)

git branch -D <branch>

撤销修改   git revert -n HEAD
复位到某个版本 git reset 540ecb7
打标签 git tag 1.90
给分支打标签 git tag one/1.90 <one branch>
  • Git的高级用法

使用git子模块跟踪外部版本库

添加子模块版本库    git submodule add <git url> <name>

初始化                    git submodule init <name>

获取子模块内容        git submodule update <name>

改变Git使用的子模块版本    git add <name>    ; git commit

导出版本

git archive --format=zip --prefix=mysite/ HEAD  > mysite.zip

git archive --format=tar --prefix=mysite-1.0/ 1.0 | gzip > mysite-1.0.tar.gz

二分查找

git bisect start

git bisect bad

git bisect good 1.0

git bisect reset

  • 使用git-svn访问svn库

克隆    git svn clone -s --prefix svn/ <svn repository>

           git svn clone -r3478:HEAD  --prefix svn/  http://svnpath

更新    git svn fetch 或 git svn rebase(常用rebase)

将修改推回上游svn库    git svn dcommit

列出所有将要被推入的修改    git svn dcommit -n

日志    git svn log

追溯    git svn blame <some file>

  • 使用Gitosis管理Git服务器

猜你喜欢

转载自my.oschina.net/u/945874/blog/903556