与Git混淆

时间:2013-10-22 15:19:15

标签: git

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

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

因此,在对源代码进行一些更改之后,我输入以下命令'git 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'

在我的笔记本电脑中,我没有看到任何变化。那么在这种情况下我该怎么办?什么是正确的方法?你能解释一下吗?提前感谢您的回答。

1 个答案:

答案 0 :(得分:1)

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

Git不会推送到有一个工作目录的仓库检查到你试图覆盖的分支,因为那可能是(大概)其他人的工作目录,他们可能不希望你改变他们的仓库他们正在努力。

这样想:当你使用Git时,你基本上准备了一个补丁来应用于当前签出的分支,以便将它从一个状态A移动到另一个状态,B。您可以通过更改工作目录并使用git add暂存它们,然后将它们与git commit一起提交以生成B来执行此操作。如果某人正在推送您的存储库并修改您所在的分支,则状态A将不断变化,您的工作将不断失效。您正在有效地尝试生成应用于移动目标的补丁。默认情况下,Git拒绝让您自己处理这种情况。

您需要先将笔记本电脑的回购设备作为“裸”回购,或者在推送前检查笔记本电脑上的其他分支,或者按照说明将receive.denyCurrentBranch设置为忽略或警告。

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