http://git.oschina.net/progit/index.html

         https://git-scm.com/book/zh/v2

            

客户端安装git 

yum install openssh* -y 

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y 

yum install perl-ExtUtils-MakeMaker -y  如果是源码

yum install git -y 




配置用户信息

 git config --global user.name "hanwei"

 git config --global user.email "13262209921@163.com"



创建版本库 

 mkdir git

 cd git

 

 git init  创建版本库

 vim test.txt

 git add test.txt 暂存

 git commit -m "2016.4.20" 提交 


 git status  查看当前修改了那些文件或暂存 

 git diff   查看写该的本内容 



版本退回

 git reset --hard HEAD^

 git reflog   查看历史命令id 

 git rester --hard HEAD 7080b9a

 git log    查看提交历史 



撤销修改

 git checkout -- test.txt  撤销修改

 git reset HEAD test.txt  撤销暂存



删除文件

 rm -rf test.txt

 git rm test.txt

 git commit -m "rm test.txt" 



添加远程仓库 

 git remote add origin root@192.168.80.62:git/repo-name.gi  关联

 git remote add origin git@192.168.80.62:git/repo-name.gi   关联

 git push -u origin master 第一次推送

 git push origin master 以后推送



从远程库克隆

 git clone root@192.168.80.62:git/repo-name.gi

 git clone git@192.168.80.62:git/repo-name.gi

 git push origin master 



分支

        git branch         查看分支

       git branch dev      创建分支

        git checkout dev    切换分支

        git checkout -b dev  创建分支并且切换 

        git merge dev      合并分支

        git branch -d dev    删除分支

        git branch -D dev    强制删除分支


        git log     查看分支历史

        git  log --graph   查看历史分支点 

        git log --graph --pretty=oneline --abbrev-commit  查看历史分支点



        

 git使用fast forword 快速合并分支 删除分支 会丢失分支信息 普通模式就不会

 

     git merge --no-ff -m "dev no-ff" dev 





bug分支 

      git stash            保存暂存

      git stash pop         切换回来并且删除保存暂存 

      git stash list        查看保存的暂存

     git stash apply stash@{0}  指定回复




多人协助 

     pc1  git remote add origin git@192.168.80.62:git/repo-name.gi 

      

      git push -u origin master   

      git push origin dev 

      git remote -v  查看远程库信息


     pc2  git clone git@192.168.80.62:git/repo-name.gi

         git checkout -b dev origin/dev  创建本地与远程对应的分支 

         git pull 合并远程的更新 

         修改提交 再推送远程 

         git push origin dev 


   这是pc1 想修改需要指定连接关系  

        git brabch --set-upstream dev origin/dev

         git pull 

         然后修改 提交 推送远程  




标签 

   git tag       查看标签

   git tag v0.1    创建标签

 

   git tag -a v0.2 -m "2015"  创建带有说明的标签  

   git log --pretty=oneline --abbrev-commit  查看历史标签id 

   git tag v0.9 7080b9a

   git tag -a v0.9 -m "2016" 7080b9a 

   git show v0.9  查看详细信息

 

 

   git tag -d v0.1                删除标签 

   git push origin v1.0             推送到远程

    git push origin --tags          推送所有到远程

     git push origin :refs/tags/v0.9   删除远程


       

 

git自定义命令别名 

           git config --global color.ui true  开启颜色

            git config alias.st status 

            git config --global alias.co checkout 

            

           

配置文件也可以配置别名 每个仓库的Git配置文件都放在.git/config文件中


$ cat .git/config

[core]

    repositoryformatversion = 0

    filemode = true

    bare = false

    logallrefupdates = true

    ignorecase = true

    precomposeunicode = true

[remote "origin"]

    url = git@github.com:michaelliao/learngit.git

    fetch = +refs/heads/*:refs/remotes/origin/*

[branch "master"]

    remote = origin

    merge = refs/heads/master

[alias]

    last = log -1


别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。


而当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中


$ cat .gitconfig

[alias]

    co = checkout

    ci = commit

    br = branch

    st = status

[user]

    name = Your Name

    email = your@email.com





忽略特殊文件

 

在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去>,Git就会自动忽略这些文件 


忽略Python编译产生的.pyc、.pyo、dist等文件或目录

把下面内容加的.gitignore文件 中


# Windows:

Thumbs.db

ehthumbs.db

Desktop.ini


# Python:

*.py[cod]

*.so

*.egg

*.egg-info

dist

build


# My configurations:

db.ini

deploy_key_rsa



最后一步就是把.gitignore也提交到Git,就完成了






搭建git服务器

         

     安装git  

      

yum install openssh* -y 

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y 

yum install perl-ExtUtils-MakeMaker -y

   

     cd git-1.7.2.2

    make prefix=/usr/local all

    make prefix=/usr/local install 


         

         

sudo adduser git  创建用户


创建证书 

    ssh-keygen -t rsa -C 13262209921@163.com 

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

  

[root@han2 .ssh]# cat authorized_keys 

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxwksBYhEoTlFLTjpgS/iJqEGK4AZqQGlZE3CW+sfOlJkUB4aVi1rlPkKQWfFLjm5bCEp9qkj5SwsALa8dgMViDZp22VtsQt3En4eMN6YnSw7oT5oYCXs4FpQ+BLcaFhLjWUEuTBbCoQhZoUIBPhjIWLvBXWEW2suBBfzMgcIIFuRHuU9ATQ0O1W0n8ovNzyhH+nceRXTi6u7ilqRRmgciOZyJewd/pWT7iXd8+85cfV/P8i+muD3u9iikMM6xM9XcdFHdaicJlFlRmCLyd1BBMMK3kj/OvMGxYwnYBvOtCOp6BuaHbzlBlT61s3rmJmeneVr7rRDSVtJy+YBrKyLlQ== 676989649@qq.com

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvTjGVzOYE74fuNya103yTzwXVbOg32/FrFPoASC2UnR0ocgQxYQt5cNN1mPttEtCDHpit6+BEPWbvr7un7ZZ9cPhYL7UlBCD/fPYwfybC9HaCxzuzxxdRh22b0VH8YPZ7g/Iv5i0DKZOHIfLlpftZf3IJDtfBDuhVRPi2Sa/z3/AmYczKP1Lw6iLFcJqOZBOnRBZBRhgGvAQwJ/oLbed3gGR+5XCtViJzYdmfCAEoSdkdD8N9n446pl0yhbeQWxmNKYFggP1fkCdbdPeHL3KwUSiQqa6MB2uKEk18JtQtmSJwwIFhth68iN1xEC6A+OjJd6Js00w75SnjBU2qz0jeQ== 1448046097@qq.com


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


sudo git init --bare sample.git

sudo chown -R git:git sample.git


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@server:/srv/sample.git 

git push origin master 



http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000


http://git.oschina.net/progit/index.html


权限配置 http://roclinux.cn/?p=2553


http://blog.csdn.net/zhangjs0322/article/details/32711211