GIT的基本命令和名词解释

1、git init <目录>  : 指定当前目录为仓库,指定后里面有个 .git目录,这个为版本库。

2、git add <file> : 增加加入仓库的文件,可反复多次使用,添加多个文件

3、git commit –m “名称”:提交到仓库目录

4、git status :显示当前仓库的状态

5、git diff <file> : 查看仓库的文件的修改情况

6、git log –pretty=oneline :显示简要信息,其中十六进制字符串是commit id (版本号)

7、git reset –hard HEAD^ :回退到上一个版本,用HEAD来代替版本次序,由近到远,前一个10版本,则为HEAD~100。

8、git reset –hard <commit id> :回退到这个commit id的版本

9、git reflog :查看历史更改的ID

10、工作区(working directory):就是你在电脑里面看到的目录,仓库目录就是一个工作区

11、版本库(repository):工作区的隐藏目录 .git 。称为Git的版本库。

       版本库里面最重要的称为stage(或者叫index)的暂存区,当你提交后,git会自动创建的第一个分之,master,以及指向master的一个指针HEAD。

       image

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

即:git提交过程中,git add 将数据暂时放到暂存区,然后执行git commit 将修改提交到分支。

正确的提交方式:

第一次修改  -->git add – –> 第二次修改 – –>  git add – – > git commit

所以,每次修改后,必须add  到暂存区,否则不会加入到commit 中。

12、git checkout  --  <文件名> :撤销你的修改,必须加—,不加-- 的话,就成了创建了一个新分支、

13、git reset HEAD <文件名> :撤销掉暂存区里面的修改,然后加git checkout 的命令,将文件恢复到未修改的状态。

14、git rm <文件名>:在版本库中删除掉文件,并且要git commit ,如果只是在工作区将文件删除后,再次使用git checkout命令,文件就会恢复回原文件。

15、要关联一个远程库,使用命令:

git remote add origin git@server-name:path/repo-name.git;

  

关联后,使用命令:

git push -u origin master 

  

第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令  git push origin master 推送最新修改;

16、要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

git clone git@github.com:windyyu/gitskills.git

  

17、分支的操作:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

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

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

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

18、git log – graph :查看分支合并图

19、

GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。

搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。

假设你已经有sudo权限的用户账号,下面,正式开始安装。

第一步,安装git

$ sudo apt-get install git

  

第二步,创建一个git用户,用来运行git服务:

$ sudo adduser git

  

第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

第四步,初始化Git仓库:

先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:

$ sudo git init --bare sample.git

  

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git

$ sudo chown -R git:git sample.git

  

第五步,禁用shell登录:

出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

  

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

第六步,克隆远程仓库:

现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.

  

剩下的推送就简单了。

管理公钥

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。

这里我们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。

管理权限

有很多不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为Git是为Linux源代码托管而开发的,所以Git也继承了开源社区的精神,不支持权限控制。不过,因为Git支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite就是这个工具。

 

参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

posted @ 2015-06-19 17:18  windyyu  阅读(1006)  评论(0编辑  收藏  举报
点击链接加入群【运维交流群】:http://jq.qq.com/?_wv=1027&k=a6ebJz