无法让git使用USB驱动器作为原点

时间:2013-10-14 13:01:07

标签: git

在这个(Best way to handle offline and online development with Git)问题之后,我决定尝试使用pendrive作为我的遥控器。但我可能会遗漏一些东西,因为我无法提交更改。

我在pendrive的目录中有一个名为'arvores'的存储库,我是从github.com克隆的。

现在,我有另一个本地目录,我克隆了pendrive的目录。

$ git clone f:/pendrive/arvores
Cloning into 'arvores'...
done.`

然后我更改了一个文件以测试我是否可以推送和提交更改,但是我收到此错误消息。

$ git add .htaccess

$ git commit
[master 40eeccf] teste
1 file changed, 9 deletions(-)

$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 283 bytes | 0 bytes/s, done.
Total 3 (delta 2), 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 f:/pendrive/arvores
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'f:/pendrive/arvores'    

2 个答案:

答案 0 :(得分:3)

就像knittl所说,问题是pendrive中的存储库不是裸露的,而且 您无法将更改推送到非裸存储库(默认情况下)。

在pendrive中,你应该执行:

git clone --bare github_repo

github_repo 克隆到裸存储库中。 然后,您将能够正常克隆并从/向该存储库推送。


您应该调查并了解git的工作原理。 特别是关于裸库和非裸库。

存储库不是空存储库。它是一个没有“工作树”的存储库。 当您运行git clone repo(非裸)时,您将在创建的文件夹中看到不仅是 最后一次提交的文件(即工作树),还有一个隐藏的“.git”文件夹。 该文件夹包含整个存储库(所有提交,分支,标记......)。 当您运行git clone --bare repo(裸)时,您将只获得该“.git”文件夹 (没有工作树)。

答案 1 :(得分:1)

据我所知,你有两个选择:

  1. 从github克隆一个裸仓库进入你的pendrive,然后将这个仓库正常克隆到你的工作机器上(如 Bruno Nova 和其他人已经建议的那样。)

    < / LI>
  2. 将回购列表克隆到您的pendrive,因为不会在您的工作机器上克隆它。只需将其插入并使用pendrive上目录中的工作目录即可。

  3. 第二个选项是您链接到的问题中的建议工作流程。