Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git在路上-推送错误';[远程拒绝]主机->;master(分支机构当前已签出)和#x27;_Git_Offline_Git Checkout - Fatal编程技术网

Git在路上-推送错误';[远程拒绝]主机->;master(分支机构当前已签出)和#x27;

Git在路上-推送错误';[远程拒绝]主机->;master(分支机构当前已签出)和#x27;,git,offline,git-checkout,Git,Offline,Git Checkout,假设我和一个朋友在路上,我们从裸git存储库离线。 我有一个工作副本(使用.git文件夹),我的朋友想帮我,所以他从我的工作副本克隆了我的git存储库,并独立工作,当然这两个副本都是签出的,所以基本上我不能提交,他不能推送,直到我们中的一个分支。有更好的方法吗?有没有办法不让我们的本地主结账?我想我总是可以在本地创建一个裸git,我们都可以指向它,但这似乎有点过分了。 他的目标是让他轻松地将自己的更改合并到我的更改中,然后当我在线时,我将提交所有这些更改 不要用推。以远程方式相互添加,并使用gi

假设我和一个朋友在路上,我们从裸git存储库离线。 我有一个工作副本(使用.git文件夹),我的朋友想帮我,所以他从我的工作副本克隆了我的git存储库,并独立工作,当然这两个副本都是签出的,所以基本上我不能提交,他不能推送,直到我们中的一个分支。有更好的方法吗?有没有办法不让我们的本地主结账?我想我总是可以在本地创建一个裸git,我们都可以指向它,但这似乎有点过分了。
他的目标是让他轻松地将自己的更改合并到我的更改中,然后当我在线时,我将提交所有这些更改

不要用推。以远程方式相互添加,并使用git fetch/merge、cherry pick、rebase或任何您认为合适的方法来拉入彼此的贡献。

只是不要使用推送。将彼此添加为远程,并使用git fetch/merge、cherry pick、rebase或任何您认为合适的方法来获取彼此的贡献。

问题中缺少一些细节,但我将尝试回答。首先,如果你们都有自己的回购协议副本,那么你们都应该能够将更改提交给自己的本地副本

如果您的朋友试图将其更改推送到您的本地回购协议,这听起来好像不起作用,因为您当前已签出
master
,这将是一项安全功能……您不会希望Git在没有警告的情况下悄悄地从您的鼻子底下调出您的工作副本。您可以通过直接签出Git所在的提交,允许Git移动您的
主机
分支/引用/标签/指针:

$ git checkout head
然后你的朋友可能会把他的变化推到你的回购协议上。完成后,确保在本地回购中再次签出
主分支机构
(如果您想处理它):

然而,人们通常不会推动他人个人/私人回购协议的变更。他们通常互相发送请求,取而代之的是
fetch
。因此,您可以添加朋友的遥控器和
获取
他的更改,然后
合并
这些更改(或
拉动
以同时执行这两项操作):

$git add
$git获取
$git合并/主
#或者使用pull组合获取和合并
$git拉动主机
或者,您可以在好友更改的基础上重新设置本地更改的基础,而不是将好友的更改提取并合并(或拉入)到本地
master
分支:

$git fetch
$git rebase/master

这个问题缺少一些细节,但无论如何我都会尝试回答。首先,如果你们都有自己的回购协议副本,那么你们都应该能够将更改提交给自己的本地副本

如果您的朋友试图将其更改推送到您的本地回购协议,这听起来好像不起作用,因为您当前已签出
master
,这将是一项安全功能……您不会希望Git在没有警告的情况下悄悄地从您的鼻子底下调出您的工作副本。您可以通过直接签出Git所在的提交,允许Git移动您的
主机
分支/引用/标签/指针:

$ git checkout head
然后你的朋友可能会把他的变化推到你的回购协议上。完成后,确保在本地回购中再次签出
主分支机构
(如果您想处理它):

然而,人们通常不会推动他人个人/私人回购协议的变更。他们通常互相发送请求,取而代之的是
fetch
。因此,您可以添加朋友的遥控器和
获取
他的更改,然后
合并
这些更改(或
拉动
以同时执行这两项操作):

$git add
$git获取
$git合并/主
#或者使用pull组合获取和合并
$git拉动主机
或者,您可以在好友更改的基础上重新设置本地更改的基础,而不是将好友的更改提取并合并(或拉入)到本地
master
分支:

$git fetch
$git rebase/master

@cupcake的答案很好,但是在你的机器上建立一个裸机回购并没有什么过分的,它可以作为你和你朋友的中央远程存储库。它实际上简单得多,一旦设置完成,生活就会变得更轻松:

准备新的裸存储库

mkdir newrepo
cd newrepo
git init --bare
回到您现有的回购协议:

git remote add new_repo_alias /path/to/newrepo
git push new_repo_alias something
您的朋友也使用
ssh://...
,但您已经了解了这一部分


轻松点

@cupcake的答案很好,但是在你的机器上建立一个简单的repo,作为你和你的朋友的中央远程存储库,并没有什么过分的。它实际上简单得多,一旦设置完成,生活就会变得更轻松:

准备新的裸存储库

mkdir newrepo
cd newrepo
git init --bare
回到您现有的回购协议:

git remote add new_repo_alias /path/to/newrepo
git push new_repo_alias something
您的朋友也使用
ssh://...
,但您已经了解了这一部分


轻松点

可能相关或重复:。你们两个怎么可能都不能提交到自己的本地克隆?你是说你们两个都不能互相推动改变吗?在Git中,提交和推送是两件截然不同的事情。细节很重要!还有,你的朋友“克隆你的工作副本”是什么意思?不能从工作副本克隆Git回购,因为它们不包含历史记录,只能从其他回购进行克隆。请澄清您的问题。谢谢纸杯蛋糕,我的朋友工作副本是从我的git存储库工作副本。因此,我不能提交,他也可以提交,但他不能将我的工作副本git存储库(对他来说是远程的)推入,因为两者都是签出,所以我们可以通过创建一个分支使其按照指定的方式工作,但这似乎有点过分了。有没有办法不让我的本地工作副本结帐?另一方面,我们尝试了哪种方法效果好