关键字
git remote
参考
横向对比
搜索git和svn的差别,可以发现都是说svn是存在中央仓库,而git没有中央仓库。即本地git clone
的一个代码库,也是可以作为别人clone的远程仓库
。
这篇主要记录下如何通过git建立私人代码仓库(代码备份)。
git init --bare [code_dir]
git init
这个命令,使用过git的同学应该都了解,是用于初始化一个新的git库。
# 在当前目录下初始化一个test0的git库
git init test0
# ls -a 可以看到有一个.git文件夹,所有git相关的信息,如分支,提交记录,都是存在.git文件夹。
# 在当前目录下加上 --bare 参数,初始化一个test1.git的git库
git init --bare test1.git
# 此时进入到 test1.git目录,查看目录结构,会发现原先的.git文件夹不存在
# 看过刚刚.git文件夹目录结构,就会发现加上--bare参数的目录结构和不加--bare参数的.git文件夹是一样的。
# cn.bing.com的解释
bare
* adj.裸体的;裸露的;(树木)光秃秃的;(土地)荒芜的
* v.揭开;脱(衣服)
* 网络赤裸的;光秃的;空的
在建test1.git的时候,目录名称刻意是用.git
命名结尾。默认的命名规范下,以.git
结尾即表示该git库是bare库。
讲了上面这些,主要就是想说bare库和普通git库有什么差别。bare库不能checkout分支
,也就无法commit
,merge
操作。一般作为企业代码仓库管理,这种特性非常适合。避免直接在仓库上,提交、合并代码,导致发生代码冲突。
关联远程仓库,PUSH
代码
# 代码是从其他地方 clone 下来的,执行 git remote,会有默认名为origin的远程仓库地址
# 如果不想用这个origin作为默认名,可以在clone时,指定 -o 或 --origin 参数来设置新的名称
git remote
# 查看origin这个远程仓库的地址信息
git remote get-url origin
现在要将上述 test1.git 添加为 test0的一个远程仓库(通过sshd服务,假设sshd服务已经启动)
cd test0
# 假定存在git系统用户,且test1.git在git用户Home目录下
git remote add test-repo ssh://git@127.0.0.1:/~/test1.git
# push 所有分支
git push test-repo --all
# git push test-repo master:master
很多博客开篇上来就介绍github这些代码托管平台,如何如何添加公钥,实际上这个只是用于ssh免登陆密码,把对于git本身理解的重点搞偏。
网友评论