git推送报错: No path specified. See 'man git-pull' for valid url syntax或does not appear to be a git repo

  本地(windows)代码想推送到linux本身搭建的git服务端,第一步是创建本地与服务端的关联,第二步是本地推送到服务端。linux

  第一步须要看你的本地工程是否从git上clone来的,若是是clone来的那就不存在第一步了。若是是本地已经有了工程以后才想同步到git上,那么须要先到linux的git目录下新增同名git仓库并初始化。这里以wlf-util工程为例:git

cd git
mkdir wlf-util.git
cd wlf-util.git
git --bare init

  接着修改用户属主和用户组属主(这里用户和用户组咱们都用git),并让git仓库有执行权限:windows

cd ..
chgrp git wlf-util.git -R
chown git wlf-util.git
chmod 775 wlf-util.git

  搞完上面这两步后用ll命令看到的应该是这样的:bash

drwxrwxr-x 7 git git 4096 Mar 17 21:54 wlf-util.git

  搞完服务端接着搞本地客户端,打开本地windows下的git bash:app

cd workspace/wlf-util
git init
git remote add origin ssh://111.11.111.11/git/wlf-util.git

  这样就创建了本地客户端与远程git服务端的链接了,本地的git仓库wlf-uitl就能够push给服务端的同名git仓库了。但此时咱们本地配置的远程url的路径不对,因此会报以下错误:ssh

git push -u origin master
fatal: No path specified. See 'man git-pull' for valid url syntax

  告诉你没有url连接,或者会说url不是一个仓库:fetch

git push -u origin master
fatal: '/git/wlf-util.git' does not appear to be a git repository
fatal: Could not read from remote repository.

  那么正确的git连接长啥样呢?能够先在本地客户端执行以下命令来参考下ui

git remote -v
origin  ssh://111.11.111.11:wlf-util.git (fetch)
origin  ssh://111.11.111.11:wlf-util.git (push)

  从上面命令结果看,该远程url没有加入用户,咱们本身加(还记得上面咱们设置的用户git吗?)。从新关联服务端git以前,先把老的url删掉url

git remote rm origin
git remote add origin git@111.11.111.11:wlf-util.git

  这样第一步就结束了,第二步的问题也就来了:spa

$ git push -u origin master
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (10/10), 3.48 KiB | 891.00 KiB/s, done.
Total 10 (delta 0), reused 0 (delta 0)
remote: error: insufficient permission for adding an object to repository databa                                                                                                                se ./objects
remote: fatal: failed to write object
error: remote unpack failed: unpack-objects abnormal exit
To 111.11.111.11:wlf-util.git
 ! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to 'git@111.11.111.11:wlf-util.git'

  其实第二步的问题在设置第一步时已经埋下了。还记得这两条命令吗:

chown git wlf-util.git
chmod 775 wlf-util.git

  它们少了一个参数-R,致使wlf-util.git里的用户和权限不对,天然没法在客户端push时写入服务端了。解决办法也很简单:进入linux下git目录

chown -R git wlf-util.git
chmod -R 775 wlf-util.git

  这时再回到windows下用git bash就能够push了:

 git push -u origin master
Counting objects: 10, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (10/10), 3.48 KiB | 891.00 KiB/s, done.
Total 10 (delta 0), reused 0 (delta 0)
To 111.11.111.11:wlf-util.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

  之后再push无需再加上-u从新配置了。

相关文章
相关标签/搜索