0

我是 Git 新手,有点困惑(今天才开始使用它)。我有以下问题。在工作中,我有 git repo 并将其克隆到我的笔记本电脑上。在家里,我从我的笔记本电脑克隆到我的台式电脑。

工作服务器 -> git clone -> 笔记本电脑 -> git clone -> 台式电脑

因此,在对源代码进行一些更改后,我键入以下命令“git push”。据我了解,我只是推动对本地仓库的更改。然后我尝试'push orgin master'我收到以下错误:

Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 289 bytes, done.
Total 2 (delta 1), 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 user_name@host:~/path/to/folder/.git
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'user_name@host:~/path/to/folder/.git'

在我的笔记本电脑中,我没有看到任何变化。那么在这种情况下我应该怎么做呢?什么是正确的方法?你能更详细地解释一下吗?预先感谢您的回答。

4

1 回答 1

1

阅读错误,它以简单的英语为您提供清晰的说明。

Git 不会推送到具有签出到您要覆盖的分支的工作目录的存储库,因为那是(可能)其他人的工作目录,并且他们可能不希望您更改他们的存储库,而他们'正在努力。

可以这样想:当你使用 Git 时,你基本上是在准备一个补丁来应用到当前签出的分支,以便将它从一个状态移动A到另一个状态B。为此,您可以对工作目录进行更改,并使用 暂存它们git add,然后使用 提交它们git commit来生成B。如果有人推送到您的存储库并修改您所在的分支,则状态A将不断变化,您的工作将不断失效。您实际上是在尝试生成补丁以应用于移动目标。默认情况下,Git 不允许您将自己置于这种情况下。

您需要将笔记本电脑的存储库设置为“裸”存储库,或者在推送之前检查笔记本电脑上的不同分支,或者按照说明设置receive.denyCurrentBranch为忽略或警告。

避免这种情况的最佳方法是,从您的笔记本电脑,将更改从您的桌面拉到您的笔记本电脑,而不是从您的桌面推送它们。

于 2013-10-22T15:22:07.750 回答