一、安装git

1、LINUX

查看是否安装git:

$ git

The program 'git' is currently not installed. You can install it by typing:

sudo apt-get install git


Debian或Ubuntu Linux,通过一条 sudo apt-get install git 就可以直接完成Git的安装


老一点的Debian或Ubuntu Linux,写sudo apt-get install git-core


其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了


2、Mac OS X

如果你正在使用Mac做开发,有两种安装Git的方法。


第一种是安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/。


第二种方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了


3、Windows

从http://msysgit.github.io/下载,安装

Git->Git Bash,能弹出命令行窗口说明安装成功

最后设置,在命令行中:

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"


查看 git config命令的--global参数


二、创建版本库 repository

1、选择创建目录

$ mkdir learngit

$ cd learngit

$ pwd                  //pwd命令用于显示当前目录


2、通过git init命令把这个目录变成Git可以管理的仓库

$git init


此目录下会出现 .git目录,如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见


3、操作

文件添加到仓库

$git add test.txt


提交所添加文件到仓库

$git commit -m "wrote a test file"         //-m后面输入的是本次提交的说明


总结:

初始化一个Git仓库,使用git init命令。


添加文件到Git仓库,分两步:

第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;

第二步,使用命令git commit -m,完成


三、修改文件

$ git status 命令查看结果

$ git diff 命令查看修改内容

$ git add <file>

$ git commit -m ""

$ git log 命令查看全部修改记录          //q退出 

//最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file

加上 --pretty=oneline 


返回到以前的版本:

$ git reset --hard HEAD^      //HEAD为当前版本,上一个版本就是HEAD^,上上版本HEAD^^,上100个版本 HEAD~100


进入到未来的版本        //需要commit id  例如:3628164...

$ git reset --hard 3628164


查看所有commit id

$ git reflog


撤销修改

$ git chechout -- <file>       //直接丢弃工作区的修改

$ git reset HEAD file         //把暂存区的修改撤销掉


删除文件

工作区:$ rm <file>

版本库:$ git rm 再git commit 

误删恢复:$ git checkout -- <file>


四、远程仓库

在.ssh文件夹中需要id_rsa和id_rsa.pub文件

如果没有:$ ssh-keygen -t rsa -C "email"


添加远程库

登录GitHub,Create a new repo,创建一个新仓库

$ git remote add origin git@github.com:michaelliao/lenrngit.git


把本地的数据推送到远程库上

$ git push -u origin master


从远程库克隆

Initialize this repository with a README

克隆本地库:

$ git clone git@github.com:michaellian/gitskills.git

$ cd gitskills      //进入文件夹

$ ls         //展现文件


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


五、分支管理

主分支:master

$ git checkeout -b <name>       //创建分支;git checkout 再加上 -b参数表示创建并切换

$ git branch      //查看当前分支

$ git branch <name>    //创建分支

$ git checkout <name>      //切换分支

$ git merge <name>     //命令用于合并指定分支到当前分支

$ git branch -d <name>      //删除分支


$ git log --graph     //查看分支合并图

$ git merge --no--ff -m "" <name>     //--no--ff表示禁用fast forward,因为本次合并要创建一个新的commit,所以 -m 参数

$ git stash       // 储藏

$ git stash list       //查看储藏内容

$ git stash apply      //恢复储藏,stash内容不删除

$ git stash drop       //删除储藏

$ git stash pop       //恢复,同时删除储藏   

$ git stash apply stash@{0}        //恢复指定储藏


$ git remote       //查看远程库信息

$ git remote -v      //查看详细信息

$ git push origin <branch-name>         //推送分支到远程库

$ git pull origin dev:dev        //拉取远程资源

$ git checkout -b branch-name origin/branch-name       //在本地创建和远程分支对应的分支,本地和远程分支的名称最好一致

$ git branch --set-upstream branch-name origin/branch-name     //建立本地分支和远程分支的关联


六、标签

$ git tag <name>        //创建新标签

$ git tag           //查看所有标签

$ git tag <commit id>      //给指定commit加标签

$ git show <tagname>      //查看标签信息

$ git tag -a <tagname> -m "说明"     //添加说明

$ git tag -s <tagname> -m ""       //用PGP签名标签


$ git push origin <tagname>     //把指定标签推送到远程

$ git push origin --tags        //推送所有标签

$ git tag -d <tagname>         //删除指定标签

$ git push origin :refs/tags/<tagname>     //删除远程的标签


七、自定义git

$ git config --global color.ui true       //让git显示颜色


$ git config --global alias.st status         //status设置为st

配置文件.git/config

$ cat .git/config           //查看配置文件


八、搭建git服务器

第一步:安装git

$ sudo apt-get install git


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

$ sudo adduser git


第三步:创建证书登录

收集所有需要登录的用户公钥,id_rsa.pub,导入到/home/git/.ssh/suthorized_keys中


第四步:初始化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:/user/bin/git-shell 

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


第六步:克隆远程仓库

$ git clone git@server:/srv/sample.git


要方便管理公钥,用Gitosis

要像SVN那样变态地控制权限,用Gitolite



常用命令:

vi filename进入编辑模式   wq退出编辑模式


git init 

git remote add origin git@git....

git pull origin dev

git status

git add <file>

git commit -m "写提交内容"

git push origin dev:dev//上传本地到远程

git pull origin dev:dev//下载远程到本地

git log//查看本地仓库


教程网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000