GitHub-共享网络驱动器Repo

GitHub-共享网络驱动器Repo,git,github,network-drive,Git,Github,Network Drive,大家好,我是git的新手,但我们正试图在办公室使用它来跟踪大型web项目的更改 我们在共享网络驱动器上设置了一个大型网站的网站文件,以下是我当前的流程和面临的问题 我在Windows10上使用git命令行界面 我将cd刻录到共享驱动器上的此网站目录,并执行以下操作: $ cd /x/Clients/ClientA/Website/ $ git init $ git status $ git add --all $ git commit -m "Initial Commit" 然后我将cd刻录到

大家好,我是git的新手,但我们正试图在办公室使用它来跟踪大型web项目的更改

我们在共享网络驱动器上设置了一个大型网站的网站文件,以下是我当前的流程和面临的问题

我在Windows10上使用git命令行界面

我将cd刻录到共享驱动器上的此网站目录,并执行以下操作:

$ cd /x/Clients/ClientA/Website/
$ git init
$ git status
$ git add --all
$ git commit -m "Initial Commit"
然后我将cd刻录到桌面并克隆本地版本:

$ cd /c/Users/Account/Desktop/
$ git clone /x/Clients/ClientA/Website/
这是一个完美的克隆,我现在在我的桌面/网站/文件夹中使用Atom更改一个文件并保存它

然后,我提交这些更改并尝试将其推回到共享驱动器:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")

$ git add --all

$ git commit -m "Edited file"
[master 76782c6] Edited file
 1 file changed, 3 insertions(+)

$ git push
Counting objects: 11, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (11/11), 922 bytes | 0 bytes/s, done.
Total 11 (delta 6), reused 0 (delta 0)
remote: Checking connectivity: 11, done.
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: is denied, because it will make the index and work tree inconsistent
remote: with what you pushed, and will require 'git reset --hard' to match
remote: the work tree to HEAD.
remote:
remote: You can set the 'receive.denyCurrentBranch' configuration variable
remote: to 'ignore' or 'warn' in the remote repository to allow pushing into
remote: its current branch; however, this is not recommended unless you
remote: arranged to update its work tree to match what you pushed in some
remote: other way.
remote:
remote: To squelch this message and still keep the default behaviour, set
remote: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To X:/Clients/ClientA/Website/
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'X:/Clients/ClientA/Website/'
$git状态
论分行行长
您的分支机构是最新的“原始/主”分支机构。
未为提交而暂存的更改:
(使用“git add…”更新将提交的内容)
(使用“git签出--…”放弃工作目录中的更改)
修改:index.html
未向提交添加任何更改(使用“git add”和/或“git commit-a”)
$git add--全部
$git提交-m“已编辑文件”
[master 76782c6]已编辑文件
1个文件已更改,3个插入(+)
$git推送
计数对象:11,完成。
增量压缩最多使用4个线程。
压缩对象:100%(10/10),完成。
写入对象:100%(11/11),922字节| 0字节/秒,完成。
总计11(增量6),重复使用0(增量0)
远程:检查连接:11,完成。
远程:错误:拒绝更新签出分支:refs/heads/master
远程:错误:默认情况下,更新非裸存储库中的当前分支
远程:被拒绝,因为它将使索引和工作树不一致
远程:与您推送的内容相匹配,需要“git reset--hard”才能匹配
远程:指向头部的工作树。
远程:
远程:您可以设置“receive.denyCurrentBranch”配置变量
远程:在远程存储库中“忽略”或“警告”以允许推入
远程:其当前分支;但是,除非您
远程:安排更新其工作树,以匹配您在某些应用程序中推送的内容
遥控器:另一种方式。
远程:
远程:要压制此消息并保持默认行为,请设置
远程:“receive.denyCurrentBranch”配置变量设置为“拒绝”。
致X:/Clients/ClientA/网站/
! [远程拒绝]主机->主机(分支当前已签出)
错误:无法将某些引用推送到'X:/Clients/ClientA/Website/'
有人能给我指出正确的方向,告诉我如何设置它,以便办公室中的多个人可以成功克隆并推送到网络驱动器上的某个位置吗


谢谢

您正在尝试推送一个具有“工作树”的远程设备,而现在,在该repo上,签出的分支就是您正在尝试推送的分支。从另一个角度考虑:你正在处理分支X,而其他人试图挤进你的分支X。你希望git限制它,因为这就像从你脚下拉一块地毯,对吗?好的,就是这样。

您正在尝试推送一个具有“工作树”的远程设备,而现在,在该回购协议上,签出的分支就是您正在尝试推送的分支。从另一个角度考虑:你正在处理分支X,而其他人试图挤进你的分支X。你希望git限制它,因为这就像从你脚下拉一块地毯,对吗?嗯,就是这样。

对于非裸存储库来说,这不是一种常见的做法, 正如错误信息所显示的, 这在默认情况下不启用。 我建议改为使用裸存储库,而不使用工作树

您可以从现有的
/x/Clients/ClientA/Website/
创建一个裸存储库,如下所示:

git clone /x/Clients/ClientA/Website --bare /x/Clients/ClientA/Website.git
在此之后,您可以从
/x/Clients/ClientA/Website.git进行克隆,并可以推送到它。
但它不能有一个工作树

例如,如果您希望使工作树始终与
master
保持最新,
您可以从
/x/Clients/ClientA/Website.git
为其创建一个专用克隆,并且您可以在
/x/Clients/ClientA/Website.git
中设置一个post-commit钩子,以触发专用克隆中的
git-pull

非裸存储库不是常见做法, 正如错误信息所显示的, 这在默认情况下不启用。 我建议改为使用裸存储库,而不使用工作树

您可以从现有的
/x/Clients/ClientA/Website/
创建一个裸存储库,如下所示:

git clone /x/Clients/ClientA/Website --bare /x/Clients/ClientA/Website.git
在此之后,您可以从
/x/Clients/ClientA/Website.git进行克隆,并可以推送到它。
但它不能有一个工作树

例如,如果您希望使工作树始终与
master
保持最新,
您可以从
/x/Clients/ClientA/Website.git
为其创建一个专用克隆,并且您可以在
/x/Clients/ClientA/Website.git
中设置一个post-commit钩子,以触发专用克隆中的
git-pull

这实际上是不正确的。您可以推送到非裸回购,通过正确的配置,您甚至可以推送到已签出的分支。默认的遥控器通常是空的,这是正确的repo@MarkAdelsberger很公平,我重新改写了这一部分。谢谢你的解释,那么没有一棵工作的树会有什么样的后果呢?我只需要在每个人都进行更改时跟踪这些文件的更改,这是唯一的目的,所以不需要分支吗?好的,所以我将X:/drive上的文件夹克隆到了Website.git。然后,我将其克隆到我的桌面上,进行了更改,并成功地将其推回。我的更改在Website.git中跟踪,这很好,但是我推送到裸回购的物理文件在哪里?@KiwisTasteGood裸回购的“缺点”是它没有物理文件。要获得物理文件,您需要克隆。要在其他人推送到
master
后更新克隆中的物理文件,必须拉取。与处理任何Git回购协议时一样。至于树枝,你可以哈