Git推动纠正远程回购?

Git推动纠正远程回购?,git,Git,在我的共享主机目录中,git目录中有一个flask应用程序: username@so6 [~/domains/mi]# ls -la total 88 drwxr-xr-x 7 username username 4096 Jun 28 12:30 ./ drwxr-xr-x 19 username username 4096 Jun 28 12:30 ../ -rw-rw-r-- 1 username username 59 Jun 28 12:30 .bowerrc drwxrwxr

在我的共享主机目录中,git目录中有一个flask应用程序:

username@so6 [~/domains/mi]# ls -la
total 88
drwxr-xr-x  7 username username 4096 Jun 28 12:30 ./
drwxr-xr-x 19 username username 4096 Jun 28 12:30 ../
-rw-rw-r--  1 username username   59 Jun 28 12:30 .bowerrc
drwxrwxr-x  5 username username 4096 Jun 28 12:30 .git/
-rw-rw-r--  1 username username  400 Jun 28 12:30 .gitignore
drwxrwxr-x  3 username username 4096 Jun 28 12:30 .idea/
-rw-rw-r--  1 username username 8192 Jun 28 12:30 dev.db
-rw-rw-r--  1 username username 2528 Jun 28 12:30 manage.py
drwxrwxr-x  3 username username 4096 Jun 28 12:30 migrations/
drwxrwxr-x  8 username username 4096 Jun 28 12:30 myflaskapp/
我想从本地副本推送更改,因此我尝试:

$ git push shared master
username@mydomain.net's password:
stdin: is not a tty
Counting objects: 28, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (21/21), done.
Writing objects: 100% (21/21), 3.47 KiB | 0 bytes/s, done.
Total 21 (delta 17), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To ssh://username@mydomain.net:/home/username/domains/mi/.git
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'ssh://username@mydomain.net:/home/username/domains/mi/.git'
读到我要先拉后推的错误消息,我尝试:

$ git pull shared master

From ssh://mydomain.net:/home/username/domains/mi/
 * branch            master     -> FETCH_HEAD
Already up-to-date.
现在我想知道我的远程url是否设置正确。共享设置为'ssh://username@mydomain.net:/home/username/domains/mi/.git',这看起来对吗

顺便说一句,我运行了一个

~/domains/mi git reset --hard
然后又试着推。没有变化,我也有同样的错误

编辑:


如果将全局配置设置为接受ssh密钥进行身份验证,则不应将用户名用作URL。您应该使用
git
用户。冒号后面还应该有一个端口号,因为这是通过ssh访问系统的方式。假设您的端口号是
8080
,请尝试以下操作:
ssh://git@mydomain.net:8080/home/username/domains/mi/project\u name.git


通常,您也希望URL中包含项目名称,而不仅仅是结尾处的
.git

如果您将全局配置设置为接受ssh密钥进行身份验证,则不应将用户名用于URL。您应该使用
git
用户。冒号后面还应该有一个端口号,因为这是通过ssh访问系统的方式。假设您的端口号是
8080
,请尝试以下操作:
ssh://git@mydomain.net:8080/home/username/domains/mi/project\u name.git


通常,您也希望URL中包含项目名称,而不仅仅是结尾的
.git

您正在尝试更改非裸存储库的头分支。通常远程存储库是空的,这意味着它没有工作树,因为没有人直接处理它,而只将分支推送到它

要检查哪个存储库

git remote show shared
推送到共享(master1)上的不同(非当前)分支


或者,您可以转到“共享”并更改其当前分支,或者使整个存储库变为空。

您正在尝试更改非空存储库的头分支。通常远程存储库是空的,这意味着它没有工作树,因为没有人直接处理它,而只将分支推送到它

要检查哪个存储库

git remote show shared
推送到共享(master1)上的不同(非当前)分支


或者,您可以转到“共享”并更改其当前分支,或者将整个存储库裸露出来。

您好,我没有使用ssh密钥进行身份验证,在这种情况下,我使用的是用户名/密码。我按您的方式尝试,得到了:“ssh:connect to host mydomain.net port 8080:Bad file number”取出端口并重复我得到的“fatal:not read from remote repository.”另外,“mi”是项目名称。我没有使用ssh密钥进行身份验证。在这种情况下,我使用的是用户名/密码。我尝试了你的方式,得到了:“ssh:connect to host mydomain.net port 8080:Bad file number”取出端口并重复我得到的“fatal:not read from remote repository.”另外,“mi”是项目名Hi Gregg,感谢你的解释,我现在更好地理解了裸机与非裸机。我绝对计划将“共享”作为裸回购协议,并在本地工作,我有上面show命令的结果。现在怎么办?你能从这个判断它是否是赤裸裸的吗?我不知道如何从“git遥控器”判断。您可以转到远程目录并使用命令“git config core.bare”,如果响应为false,则表示该目录是空的(没有工作树)。命令'git config--set core.bare true'将使其成为一个简单的存储库。工作树仍将存在,但Git将忽略它,您的推送命令也将工作。谢谢,这很有帮助!嗨,格雷格,谢谢你的解释,我现在能更好地理解裸体和非裸体。我绝对计划将“共享”作为裸回购协议,并在本地工作,我有上面show命令的结果。现在怎么办?你能从这个判断它是否是赤裸裸的吗?我不知道如何从“git遥控器”判断。您可以转到远程目录并使用命令“git config core.bare”,如果响应为false,则表示该目录是空的(没有工作树)。命令'git config--set core.bare true'将使其成为一个简单的存储库。工作树仍将存在,但Git将忽略它,您的推送命令也将工作。谢谢,这很有帮助!
git push shared master:master1