git 命令锦集

转自:http://blog.csdn.net/ieearth/article/details/44804509

Git是一款开源的分布式版本控制系统,由Linux之父Torvalds用C语言开发。
“the stupid content tracker”,Git自诩为stupid,却是一个非常强大的tracker。
Git管理项目时,文件流经三个工作区:工作目录、暂存区及本地仓库。

1、在Linux上安装Git——
快速安装:在终端执行命令

sudo apt-get install git

源码安装:下载源码包并解压,在解压目录依次执行命令“./config”、“make”、“make install”。
安装成功后还需要做一些简单的配置:

git config --global user.name “your name”  
git config --global user.email “your email address”  
git config --global color.ui true  
git config --global alias.st status  

当然也可以通过“config”做其它需要的配置,配置文件在“.git/config”,“–global”的结果适用于当前用户的所有仓库,“alias”很好用,设置别名,上面给“status”设置了一个别名“st”,以后需要“status”的地方直接用“st”就行,毕竟可以少打几个字母。
当然也可以通过“config”做其它需要的配置,配置文件在“.git/config”,“–global”的结果适用于当前用户的所有仓库,“alias”很好用,设置别名,上面给“status”设置了一个别名“st”,以后需要“status”的地方直接用“st”就行,毕竟可以少打几个字母。

2、第一个Git仓库——

git init  

“init”用来创建一个空的Git仓库或者重新初始化一个已经存在的Git仓库,首次创建成功后会发现当前目录下多了一个“.git”目录。

3、查看工作区状态——

git status  

“status”是一个常用的命令,用来查看工作区状态,工作目录下新添加文件的状态是untracked,其它文件修改后的状态是not staged,这两种状态的文件都是需要添加到暂存区以便提交到仓库的,暂存区下的文件状态可以是new或者modified。

4、添加工作目录的文件到暂存区——

git add <file>  

添加单个文件。

git add <file> <file2>  

添加多个文件。

git add -A  

添加所有文件。

git add --all  

添加所有文件。

5、提交暂存区的文件到仓库——

git commit -m “comment”  

“comment”是本次提交的注释,配合“-m”参数,提交成功后会产生一个新的commit id。

git commit -a -m “comment”

“-a”等同于“–all”,这个参数的意思是自动暂存,也就是说已经处于暂存区的文件如果被修改了,不用进行传统意义上的先“git add”后“git commit”,而是直接“git commit -a”即可。

git commit --amend -m “comment”  

“–amend”参数的意思是追加一次提交,不产生新的commit id。

6、撤销工作目录的修改——

git checkout <file>  

撤销单个文件的修改。

git checkout <file> <file2>  

撤销多个文件的修改。

7、撤销暂存区的修改——

git reset HEAD <file>  

撤销单个文件的修改。

git reset HEAD <file> <file2>  

撤销多个文件的修改。

git reset HEAD  
git reset HEAD --soft  
git reset HEAD --hard  

撤销所有文件的修改,这种情况下可以使用“–soft”或“–hard”参数,默认是“–soft”模式,撤销并保留修改,“–hard”则是撤销并删除修改。
上面的“HEAD”是最近一次提交到仓库的状态,前面几次依次为“HEAD^”、“HEAD^^”等,如果是前面n次呢,那就显得很不方面了,不过可以这样表示“HEAD~n”,n是一个具体的数字,这个数字是需要我们自己算出来的,还是有点麻烦。“HEAD”其实就是个commit id,直接用这个id就方便多了。

8、查看修改前后的异同——

git diff <file>  

查看单个文件修改前后的异同。

git diff <file> <file2>   

查看多个文件修改前后的异同。

git diff  

查看所有文件修改前后的异同。
上面的对比都是在工作目录和暂存区之间进行的。

git diff <commit id> <file>  

这个对比是在本次修改和某次提交之间进行的。

、查看提交信息——

git log  

显示所有的提交记录,包括commit id、提交者、提交时间、注释。

$ git log --pretty=oneline  

“–pretty=oneline”参数的好处是在一行上显示每次的提交记录,包括commit id、注释。

git log --abbrev-commit  

commit id是一个很长的字符串,用起来可能不太方面,“–abbrev-commit”参数只显示id的前七位,通常情况下前七位就够用了。

git log --graph  

“–graph”参数在屏幕左边显示每次提交之间的关系。

git reflog  

“reflog”与“log”不同。

10、从暂存区删除文件——

git rm <file>  

从暂存区删除一个文件,在工作目录没有备份。

git rm <file> -f  

从暂存区删除一个文件,在工作目录没有备份。

git rm <file> -cached  

从暂存区删除一个文件,在工作目录留有备份。

11、远程仓库(GitHub)——
首先,在本地创建ssh key,命令如下:

ssh-keygen -t rsa -C “your email address”  

创建成功后,在用户主目录的“.ssh”目录下可以找到“id_rsa”私钥和“id_rsa.pub”公钥。
然后添加“id_rsa.pub”中的内容到GitHub上,登陆GitHub,在“Settings”选项里找到“SSH Keys”,根据页面提示完成公钥添加。
接着在GitHub上创建一个仓库,点击几个按钮就可以完成。
(例如,我的GitHub账户名为naturEarth,创建了hellogit和gittest两个仓库用于练习)

1.1关联本地仓库与远程仓库hellogit:

git remote add origin git@github.com:naturEarth/hellogit.git  

添加远程仓库,“origin”是远程仓库的名字,默认这个名字,也可以是其它的名字。
推送本地仓库的内容到远程仓库:

git push -u origin master  

“master”是本地的分支,“-u”等同于“–set-upstream”,不但会把本地的“master”分支内容推送到远程新的“master”分支,还会把本地的“master”分支和远程新的“master”分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在GitHub页面上看到远程库的内容已经和本地一模一样,从现在起,只要本地作了提交,就可以通过如下命令推送:

git push origin master  

11.2克隆远程仓库gittest到本地:

git clone git@github.com:naturEarth/gittest.git  

克隆成功后,本地就多了一个gittest目录,cd进这个目录就可以看到和远程仓库一样的东西。

12、多分支管理

git branch  

查看分支。

git branch <name>  

创建分支。

git checkout <name>  

切换分支。

git checkout -b <name>  

创建并切换分支。

git merge <name>  

合并某分支到当前分支,默认为fast-forward策略。

git merge --no-ff -m “comment”<name>  

合并某分支到当前分支,使用recursive策略,merge时会产生一个新的commit id,所以加了注释。
注意:在合并分支时,有可能会产生冲突,这是因为多个分支同时修改了某个文件导致的,这时候只要手动修改产生冲突的文件然后重新提交即可。

git branch -d <name>  

删除分支。

git branch -D <name>  

如果在被删除的分支上提交了东西却没有merge到当前分支,用“-d”参数删除是会失败的,这时就要用到“-D”参数了,忽略被删除分支上的提交。

13、远程仓库及多分支

git remote  

查看远程仓库的名字。

git remote -v  

“-v”即“–verbose”,查看远程仓库的名字及url。

git branch -r  

查看远程仓库的分支。

git checkout -b <name> origin/<branch_name>  

创建并切换分支,同时与远程仓库“origin”的“branch_name”分支关联起来,如果远程仓库“origin”没有“branch_name”分支的话,则会创建出来,这样做的目的是方便以后本地仓库和远程仓库的同步,如果不这样做的话,在后面的pull或push代码时会有问题,不过这也是有补救措施的,如下命令:

git branch --set-upstream <name> origin/<branch_name>  

在每次push代码到远程仓库时,最好先pull更新下代码,避免冲突:

git pull  
git push origin <local_branch_name>  

14、stash妙用
“stash”就是清理并保存当前工作现场,在需要的时候再拿出来用。

git stash  

清理并保存当前工作现场,会产生一个id,形如“stash@{n}”,n是一个具体的数字,从0开始。

git stash list  

查看stash状态。

git stash pop [id]  

“id”是可选的,默认是“stash@{0}”,pop的意思是把stash列表中与id对应的东西move到工作现场,从一个地方移动到另一个地方。

git stash apply [id]  

“id”是可选的,默认是“stash@{0}”,apply 的意思是把stash列表中与id对应的东西copy到工作现场,从一个地方复制到另一个地方。

git stash drop [id]  

“id”是可选的,默认是“stash@{0}”,drop 的意思是把stash列表中与id对应的东西直接delete。

git stash show [id]  

“id”是可选的,默认是“stash@{0}”, show 的意思是把stash列表中与id对应的东西show出来,查看具体内容。

git stash clear  

清空stash列表,慎用这个命令。

15、忽略特殊文件
在Git工作区创建一个特殊的文件“.gitignore”,在里面添加要忽略的文件名即可。

16、Git的图形用户工具
Git管理基本都是在命令行完成的,不过也有许多图形用户工具可以使用,如gitk、gitg,gitk中的“git gui”功能类似与“git diff”,但前者更好用、更直观。

完结。
另,搭建自己的Git服务器也很简单,可能会用到Gitosis公钥管理工具、Gitolite权限管理工具,这里就不做过多解释了。
Git详细介绍可参考官网:http://git-scm.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值