码迷,mamicode.com
首页 > 其他好文 > 详细

git常用命令总结

时间:2016-05-25 13:26:07      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

一、定义:以下均使用括号中的简称

工作区:workspace (W)

暂存区:index (I)

本地仓库:local repository (L)

远程仓库:remote repository (R)

二、常用命令:

1.初始化

git init

2.常用配置信息 

(如果不使用--global,则只设置当前项目的配置信息)

设置代理:

git config --global http.proxy http://xxx.com:port

设置用户名:

git config --global user.name "[name]"  

设置邮箱: 

git config --global user.email "[email address]" 

设置命令行颜色:

git config --global color.ui auto

查看用户名:

git config --global user.name

配置crlf:

git config --global core.autocrlf [true/false/input]

(在windows下设置为true,则提交的内容是LF,本地是CRLF)

3.添加--从工作区W到暂存区I

添加单个文件/多个文件/目录:

git add [file1] [file2] [directory] 

添加新增和修改的文件,不做删除操作:

git add . 

添加修改和删除的文件,不做新增操作:

git add -u

添加增删改的文件:等于git add .;git add -u;  

git add -A

4.提交:

(1)从暂存区I到本地仓库L

git commit -m [提交信息]

(2)

5.撤销

(1)从暂存区I到工作区W

git rm --cached <file> ...

(2)恢复到HEAD版本

git reset --hard HEAD

(3)修改提交的用户名信息

git commit --amend --author="Author Name <email@address.com>"

6.远程

(1)更改远程仓库地址

git remote set-url origin http://xxx.xx.com/x.git

(2)查看远程仓库日志

git log origin/master

(3)比较本地分支和远程分支

git diff master origin/master

(4)查看远程分支

git branch -r

(5)拉取远程

方法1:拉取并合并

git pull

方法2:先拉取后合并

git fetch origin

git merge origin/master

7.分支

查看分支:git branch

查看远程分支:git branch -r

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

删除远程分支:git push origin --delete <name>

8.储藏

保存:git stash

查看stash列表:git stash list

恢复:git stash apply

恢复特定版本:git stash apply stash@{2}

清除某个stash记录:git stash drop stash@{0}

9.引用

(1)查看提交的哈希字串

git log

git log --pretty=oneline

(2)查看某个提交

git show 0c708f(哈希)

(3)查看分支、标签或间接引用的哈希

git rev-parse master

(4)查看引用

在.git/refs目录下

git show refs/heads/some-feature

在.git目录下还有一些引用:

  • HEAD – 当前所在的提交或分支。
  • FETCH_HEAD – 远程仓库中fetch到的最新一次提交。
  • ORIG_HEAD – HEAD的备份引用,避免损坏。
  • MERGE_HEAD – 你通过git merge并入当前分支的引用(们)。
  • CHERRY_PICK_HEAD – 你cherry pick使用的引用。

(5)refspec

refspec的定义是这样的:[+]<src>:<dst><src>参数是本地的源分支,<dst>是远程的目标分支。可选的+号强制远程仓库采用非快速向前的更新策略。

(6)相对引用

git show HEAD~2 祖父节点

git show HEAD^2 第二个父节点(分支合并时,原所在分支是第一个父节点)

git show HEAD^2^1 可以多层

(7)引用日志

git reflog

git checkout  HEAD@{1}

10.代码回滚

reset checkout revert的选择

reset checkout 可以指定文件或某次提交,revert只针对提交,不针对文件

checkout revert 有可能会重写文件,在使用前要提交或缓存工作目录的修改

(1)reset(仅仅用在私有分支上,一般只用HEAD)

git checkout feature

git reset HEAD (末端两个提交变成悬挂提交,git垃圾回收时会被删除)

git reset --hard HEAD

  • --soft – 缓存区和工作目录都不会被改变
  • --mixed – 默认选项。缓存区和你指定的提交同步,但工作目录不受影响
  • --hard – 缓存区和工作目录都同步到你指定的提交

git reset HEAD file1.js 将HEAD提交中的该文件加入到缓存区,针对文件没有--mixed之类的参数

(2)checkout

git checkout feature 切换分支

git checkout HEAD~2 把HEAD移动到特定提交,但会造成HEAD分离非常危险,如果你接着添加新的提交,然后切换到别的分支之后就没办法回到之前添加的这些提交。因此,在为分离的HEAD添加新的提交的时候你应该创建一个新的分支

git checkout HEAD~2 file1.js工作目录的该文件同步到HEAD~2

(和git reset HEAD --hard很像,但只影响特定文件)

(3)revert(可以用在公共分支,不会影响历史,创建一个新的提交来撤销某个提交的修改)

git checkout feature

git revert HEAD~2 

11.打标签

(1)查看当前标签

git tag

(2)打标签

git tag -a v1.0.0 -m "my version v1.0.0"

(3)查看某个tag

git show v1.0.0

(4)删除某个tag

git tag -d v1.0.0

(4)把tag推送到远程

git push origin --tags

12.比较

git diff  工作区(W)跟暂存区(I)的区别

git diff HEAD 工作区(W)跟本地仓库(L)的区别

git diff --staged 暂存区(I)跟本地仓库(L)的区别

(后边跟上文件名则只对比某个文件)

13.打包

git archive --format zip --output /path/to/file.zip master

三、常用场景:

1.创建新的库

mkdir tutorial

cd tutorial

git init

touch README.md

git add README.md

git commit -m "first commit"

git remote add origin http://xxx.xx.com/x.git

git push -u origin master

2.push已经存在的库

cd existing_repo

git remote add origin http://xxx.xx.com/x.git

git push -u origin master

 

git常用命令总结

标签:

原文地址:http://www.cnblogs.com/fanyegong/p/5127780.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!