最近在做开源项目CMS001, 因为是自己的项目,不能提交到公司的GIT,所以想在Mac上实现Git服务器。查了下次资料,还真有人这么做。经过一番尝试,终于完成,以下说说具体方法。参考网站:https://www.cnblogs.com/BlueBlueSea/p/16571200.html首先还是创建Git用户,这里要注意,创建管理员用户,创建普通用户,后续操作会有一些问题。先测试下ssh用户是否可以用,如果出现密码就对了,输入密码,会显示Last Login, 这样前面创建的用户就可以使用。
zilong@cms001 ~ % ssh git@cms001.local Password: Last login: Thu Sep 29 11:04:10 2022 from ::1 git@cms001 ~ %
然后创建公钥和私钥,如下代码,参考的网址: https://www.cnblogs.com/jwzqyz/p/16516687.html
$ ssh-keygen -t rsa -C "your_email@example.com" 执行完了,就会看到公钥文件 zilong@cms001 .ssh % ls -a . id_ed25519 id_rsa known_hosts .. id_ed25519.pub id_rsa.pub
将本地的公钥拷贝到git对应的~/.ssh下,先在git用户下创建.ssh目录,然后本地上传到git:
cd /Users/git //跳到git用户目录 sudo mkdir -p .ssh/authorized_keys //创建保存公钥的文件夹 sudo chmod -R 777 .ssh //变更权限为读写,这一步很重要,如不做会出现 scp: .ssh/authorized_keys/id_rsa.pub: Permission denied scp ~/.ssh/id_rsa.pub git@cms001.local:.ssh/authorized_keys //通过scp命令上传公钥 //输入git用户的密码 id_rsa.pub 100% 570 277.1KB/s 00:00 //上传成功的提示
做到这里,总的操作已经完成了一半,接下去初始化git仓库.
mkdir myproj && cd myproj git init --bare myproj.git Initialized empty Git repository in /Users/zilong/GitBase/myproj/myproj.git/ //仓库创建成功 --bare 参数表明只是用来存储 pushes,不会当做本地 repository 来使用。创建一个裸仓储。
接下来我们进行git clone测试
git clone git@cms001.local:/Users/zilong/GitBase/myproj/myproj.git //输入git用户的密码后,会有如下提示,这是成功的信息 warning: You appear to have cloned an empty repository. ls -a 可以看到有 .git文件存在
提交文件测试
touch a.txt vi a.txt 写入一些字符 git add "a.txt" git commit -m "add a.txt" //本地提交成功的信息 [master (root-commit) c115f02] add a.txt 1 file changed, 1 insertion(+) create mode 100644 a.txt git push
这里注意哦,可能会有如下错误
error: remote unpack failed: unable to create temporary object directory To cms001.local:/Users/zilong/GitBase/myproj/myproj.git ! [remote rejected] master -> master (unpacker error) error: failed to push some refs to 'git@cms001.local:/Users/zilong/GitBase/myproj/myproj.git'
解决错误,将文件夹权限设为读写即可。
chmod -R 777 /Users/zilong/GitBase/myproj