mac上给git server 添加一个repository,并且添加一个git client的访问权限

来源:互联网 发布:苹果5怎么用3g网络 编辑:程序博客网 时间:2024/05/01 08:52

尝试在自己的mac上把git环境搭好,非常感谢周晓东同学提供的技术指导!

记录一下,方便以后建新仓库,以及给其他mac开权限。

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

mac上安装git server 可以参考:http://www.cnblogs.com/eileenleung/p/3503337.html

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

1.在服务器 创建msdl空的respository 
$su git
$cd /Users/git
$mkdir msdl
$cd msdl
$git init --bare   (--bare flag 只是用来存储 pushes,不会当做本地 repository 来使用的)




2. 在git客户端,用yourname账号登录
$cd 
$ssh-keygen
全部回车,生成默认的id_rsa.pub 没有密码  
$cd .ssh
$cp id_rsa.pub yourname.pub


将yourname.pub 通过scp 或者u盘 或者邮件 发给服务器


3.在服务器端

(1)

$su git
$cd /Users/git/gitolite-admin/keydir
将客户端提供的yourname.pub 拷贝到这个目录
下面的3条命令是让更新生效:
$git add .
$git commit -a -m"add yourname"
$git push

(2)
修改配置文件,新增一个仓库msdl,并设置访问权限
$cd ../conf
$vi gitolite.conf
在最后新增两行,新增msdl仓库,同时添加用户的访问权限
repo msdl
    RW+     =   yourname
保存退出!


同样,下面的3条命令是让更新生效:
$git add .
$git commit -a -m"add yourname"
$git push

说明:

比如需要给msdl新增一个用户othername的访问权限

先把othername.pub放到keydir下面,git更新生效

然后修改gitolite.conf,在youname的后面加:空格othername ,变成

repo msdl
    RW+     =   yourname othername

保存退出,git更新生效


4.回到git客户端
$cd /dir/to/clone/msdl
git clone git@192.168.1.225:msdl


5.打开sourceTree
添加一个working copy,选择 /dir/to/clone/msdl,即可!


大功告成!


6. 如果公司的ip(172.16.0.131)和家里的ip(192.168.1.225)不一样,只能commit,不能push和pull,怎么破?



1.修改服务器的gitolite-admin的ip
vi /Users/git/gitolite-admin/.git/config
[remote "origin"]
        url = git@192.168.1.225:/gitolite-admin
修改ip 192.168.1.225 为 172.16.0.131
[remote "origin"]
        url = git@172.16.0.131:/gitolite-admin       


注:直接修改配置文件,不需要git push


2.修改客户端的repository地址     
vi $PROJECT_PATH/.git/config   
[remote "origin"]
        url = git@192.168.1.225:msdl


修改ip 192.168.1.225 为 172.16.0.131
[remote "origin"]
        url = git@172.16.0.131:msdl


#######分割线##############################################

git reset --hard 回滚到之前的版本以后,怎么撤销这一步回滚操作?

git stash save
git reflog 
git checkout
git branch 


stash你现在的脏内容。用reflog找到你要回去的commit,checkout过去然后建个分支跟原来得分支merge。

可以通过reflog来进行恢复,前提是丢失的分支或commit信息没有被git gc清除(一般情况下,gc对那些无用的object会保留很长时间后才清除的)
可以使用git reflog show或git log -g命令来看到所有的操作日志

恢复的过程很简单:
1.通过git log -g命令来找到需要恢复的信息对应的commitid,可以通过提交的时间和日期来辨别,找到执行reset --hard之前的那个commit对应的commitid
2.通过git branch recover_branch commitid 来建立一个新的分支。这样,就把到commitid为止的代码、各种提交记录等信息都恢复到了recover_branch分支上了。

0 0
原创粉丝点击