最近有个项目需要在服务器上的git仓库维护,git操作都要在服务器上的git上执行,这样安全性能得到保障。之前写的开源项目都放在github。手头刚好有个跑网站的阿里云服务器,说干就干:
1. 服务器上安装git:
sudo apt-get install git
2. 新建git仓库:在根目录下创建一个git_repo目录,cd进入git_repo目录,再创建一个Django目录,用来存放我们的Django项目。
3. cd Django进入Django目录,执行git init创建.git文件夹,由于.git是隐藏目录,需要用ls -a来查看。
4. 离开服务器回到我的电脑,在目标项目Django下已经有了.git文件,是之前通过github操作得到的记录,怎么办呢?很简单,直接删除掉整个文件夹,然后在Django目录下执行git init创建新的.git目录
git init
5. 接下来把项目代码添加到git,项目文件比较多的情况下耗时略长,静静等待即可。
git add *
6. 提交到master分支
git commit -m 'first commit'
7. 将本地的代码文件添加到阿里云git自己创建的project下面,星号是我的主机ip
git remote add origin root@***.**.**.**:/root/git_repo/Django/.git
8. 如果提示remote已存在,执行以下命令删除,再重写执行步骤7的代码
git remote rm origin
9. 把初次提交的结果push到阿里云服务器
git push -u origin master
10. 可能会报错:fatal: '/repo/Blog/.git' does not appear to be a git repository fatal: Could not read from remote repository。这是因为git remote add origin的时候路径错误。阿里云轻量级服务器显示的是/root/开头的绝对路径,但是腾讯云显示的是~开头的相对路径,星号是我的主机名:
ubuntu@***:~/git_repo/Django/
坑在这里,如果对linux不熟的话,add remote的时候可能会漏掉~符号,也可能加上~但这样就是相对路径了,git还是会报错。用pwd命令查看当前绝对路径是 /home/ubuntu/repo/Blog,这样,我们在步骤7的时候命令就是:
git remote add origin root@***.**.**.**:/home/ubuntu/git_repo/Django/.git
重新push发现还报错:[remote rejected] master -> master (branch is currently checked out),这是因为服务器上的git目录配置没有调整好,git默认拒绝了push操作。解决办法是打开.git目录下的config文件,添加如下代码:
[receive]
denyCurrentBranch = ignore
11. 还没有结束,提交成功后,怎么查看文件呢?默认情况下/root/git_repo/Django/.git下是看不到Django项目的结构的,需要在clone下来,才可以看的到项目结构。这个项目需要在此台阿里云服务器上跑起来,我们切换到另一个目录执行clone操作
git clone root@***.**.**.**:/root/git_repo/Django/.git
成功后就可以看到Django项目的文件结构啦。