ubuntu 下的GIT安装及使用

#安装ssh
apt-get install ssh
#添加eword帐号
adduser eword
#添加git帐号
adduser git
#调整sudoers文件编辑权限
chmod 777 /etc/sudoers
#在原有的下面添加root下面一句
root    ALL=(ALL:ALL) ALL
#以下为新增,允许eword进行sudo操作
eword ALL=(ALL:ALL) ALL
#改回权限
chmod 440 /etc/sudoers.
安装git
apt-get install git-core
#切换到git帐号
#在home/git下创建prj目录
mkdir prj
#初始化prj1
git init -bare prj1
#重启
reboot
================
#客户端提交
#创建项目目录
mkdir prj1
#进入项目目录
cd prj1
#初始化目录
git init
#设置远程别名
git remote add origin git@10.1.1.183:~/prj/prj1/
#添加文件
touch Readme
#缓存改动
git add .
git add Readme
#提交改动
git commit -m "init"
#上传改动
git push origin master
==============================
#客户端克隆
#创建克隆目的项目目录
mkdir obj1
#进入项目目录
cd obj1
#克隆
git clone git@10.1.1.183:~/prj/prj1/   //默认端口SSH://可省略???
git clone ssh://git@git.xxxxx.com:181/~/prj/prj1/  //带端口的SSH登入
=============================================
#客户端获取远程更新并合并
#方法一:

git fetch origin master
git log -p master..origin/master
git merge origin/master

#PS:git fetch:相当于是从远程获取最新版本到本地,不会自动merge

#或

git fetch origin master:tmp
git diff tmp
git merge tmp

#方法二

git pull origin master

#PS:git pull:相当于是从远程获取最新版本并merge到本地

#git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并

==============================================

#查看日志信息:

git loggit log -p //详细信息

git show “commit ID”//显示相关commit编号的详细内容,可输入前4-6个编号

git show exp//显示分支信息

git show HEAD//显示最近一次commit信息

git show HEAD^//查看HEAD的父母的信息

git show HEAD^^ //查看HEAD的父母的父母的信息

git show HEAD~4 //查看HEAD上溯4代的信息

git tag V3 5b888 //以后可以用V3来代替复杂的名称(5b888…)

====================================

#检查状态:

git status//这个命令在git commit之前有效,查看整体改动信息可以看到提示信息“changed but not updated”,就是说git发现你有已经修改了但还未git add的内容。

#如果git提示说“Changes to be committed”,那就是表明git发现了你已经git add但还未git commit的内容。

#如果git提示说“Untracked files”,那么就是你增加了新文件或者在某个子目录下增加了新文件。

=============================

#分支操作

#创建分支exp:

git branch exp

#显示当前分支:

git branch//标注*为当前所在分支

#转移到exp分支:

git checkout exp//切换分支前需将当前分支内容提交。

#将某一版本创建分支:

git branch exp1 V3//V3为commit ID编号,exp1为分支名。

#合并分支:

git merge exp //将exp分支合并到当前分支,合并后需再次提交。

#删除分支:

git branch -d exp//因为exp分支已提交,所以可安全删除此分支。

git branch -D exp //由于分支被证明失败,因此使用-D来放弃并删除该分支 。

============================================

#文件比较

#检查源码改动:

git diff //在git add之前使用有效。

git diff --cached //在git add之后在git commit之前有效。

=========================================

#撤销:

git reset --soft V2//commit提交了V1、V2、V3 三次版本,该命令撤销了V3的提交日志信息,但是具体开发内容不变。可修改后再次提交V3。

git reset --hard V2//恢复到V2版本,彻底删除V3的所有信息,如想保留V3的信息,则不使用该命令,而是使用 git branch exp1 V2 命令创建分支。

==============================

#合并比较示范

#user合作开发PM的项目:

#克隆pm用户的hello目录下的项目到自己user的hello_temp目录,开发成功后提交,并通知pm

git clone /home/pm/hello hello_temp

cd hello_temp

…...

git add .

git commit

#PM合并user的开发内容:

#确信user的开发内容正确,直接合并:

cd /home/pm/hello

git pull /home/user/hello_temp

不确信user开发内容,检查后合并:

git fetch /home/user/hello_temp master:exp1//提取user的开发内容,放到PM工作目录下的exp1分支中

git whatchanged -p master exp1//查看user改动了哪些内容

git checkout master//切换到主分区

git pull . exp1//检查正确后,可以用pull 将exp1分支合并

git branch -D exp1//如果我检查后很不满意,就可以用-D来放弃这个分支就可以了user再次开发PM的项目:

git pull//在hello_temp目录下执行pull即可

============================================
#证书登入,免密码
#客户端
ssh-keygen
#复制公钥

scp ~/.ssh/id_rsa.pub git@10.1.1.183:~/

#登入到git服务器

ssh git@10.1.1.183

#检查服务端git的~/下.ssh文件夹是否存在,如果不存在就创建

mkdir .ssh

#检查服务端git的~/.ssh下authorized_keys文件是否存在,如果不存在就创建

touch authorized_keys

#authorized_keys文件的权限改为600

chmod 600  authorized_keys

#复制公钥内容到authorized_keys并删除id_rsa.pub 文件

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

rm -f id_rsa.pub

#PS:这样git客户端就可以使用证书进行无密码登入了。

=================================================

#安装gitweb与apache2

apt-get install gitweb apache2

#配置gitweb

vim /etc/gitweb.conf

#修改gitweb.conf下的

our $projectroot = "/home/git/prj"; 

#访问路径http://10.1.1.183/gitweb/

#gitweb.cgi 脚本安装在 /usr/lib/cgi-bin/ 中,该目录为默认 ubuntu 上 apache2 的 cgi-bin 目录。所以也可以用以下打开:
#http://localhost/cgi-bin/gitweb.cgi

#如果以上还无法访问可继续进行以下操作。

#修改apache2的配置

#apache2主配置文件路径为/etc/apache2/apache2.conf

#apache2主目录为/var/www/

#配置apache2的所有人apache2.conf中

User git

Group git

#如果CSS出现错误可以进行如下配置

cd /var/www

sudo ln -s /usr/share/gitweb/*.

#gitweb亦可以配置成虚拟主机

#配置完后可以重启apache

sudo /etc/init.d/apache2 restart

*************************************************

*#修改gitweb上面的描述和所有者信息 *

*#描述信息可以在${GIT_DIR}/description中修改 *

*#所有者信息可以在${GIT_DIR}/config中修改 *

*[gitweb]

*owner=eword

*Url=git://git.eulei.com/RC

*************************************************

 

posted @ 2014-06-03 01:40  影乌  阅读(325)  评论(0编辑  收藏  举报