当你';如果您是git中的原始回购,您如何进行本地拉取?

当你';如果您是git中的原始回购,您如何进行本地拉取?,git,Git,我有一个服务器,在那里我设置了一个Git存储库。从我的客户那里,我可以执行 git拉原点 及 git推送原点 我的更改被正确地推/拉到远程Git服务器。我还需要能够签出服务器本身的项目。我在设置时没有使用init--bare,因为我明确地希望在服务器上也有一个工作副本 然而,当我运行git pull时,我收到一条致命的消息:您今天想从哪里取回?。如何在服务器上签出本地工作副本的最新更改?我想没有远程设置 使用git remote add可以添加远程存储库只是您给它起的名字,addresss是您要

我有一个服务器,在那里我设置了一个Git存储库。从我的客户那里,我可以执行

git拉原点

git推送原点

我的更改被正确地推/拉到远程Git服务器。我还需要能够签出服务器本身的项目。我在设置时没有使用init--bare,因为我明确地希望在服务器上也有一个工作副本


然而,当我运行git pull时,我收到一条致命的消息:您今天想从哪里取回?。如何在服务器上签出本地工作副本的最新更改?

我想没有远程设置

使用
git remote add
可以添加远程存储库
只是您给它起的名字,addresss是您要从中提取的存储库的url。

修复工作副本以匹配最新的更改 可能就是你要找的

来自客户机的推送更改了索引而不是工作文件,因此在git记录的过程中,工作文件保持不变。为了只擦除工作文件以支持最新版本,您需要签出推送到服务器的最新版本

编辑:

使用两个非裸存储库 我刚刚意识到,我给了您理解问题的信息(索引隐式更改,但工作文件只显式更改),但不一定是解决问题的最佳方法。以下是我过去所做的工作,以及如果您不想涉及到一个中心裸存储库,我的建议:

在服务器上:

git branch staging
git checkout staging
Commit changes made on the staging branch.
git rebase master
git checkout master
git rebase staging
git checkout staging
在客户端计算机上:

Hack away at some changes in master, then push to the server.
在服务器上:
git-rebase-master
(显式更新暂存分支以匹配更新的索引。)

最后,如果您想从服务器上进行更改(错误修复,您有什么),您还需要将这些更改同步到master,您可以通过以下方式进行:

在服务器上:

git branch staging
git checkout staging
Commit changes made on the staging branch.
git rebase master
git checkout master
git rebase staging
git checkout staging
现在,master中的每个提交都将在staging中,而staging分支中的每个提交都将是master中最新的提交

即使使用非裸中心存储库,这种工作流也应该适合您。基本上,您将服务器的主分支保留为空,并使暂存分支成为服务器的工作副本

使用中央裸回购更干净 一般来说,尽管网络中的两点似乎最简单,但拥有一个“集中的”裸存储库通常更简单,它允许您始终推送和拉送到该位置,而无需真正考虑它。出于这个原因,我还推荐您可以从web代码可视化中获得的好处(开源免费,我现在做的每件事都使用它)。

您说:

我设置时没有使用init--bare 因为我明确地想 在服务器上有一个工作副本作为 嗯

假设此repo位于服务器上的
$repo\u DIR

是否要在服务器上打开shell,
cd
$REPO\u DIR
并在那里编辑代码?如果是这样的话,那么你就不需要从任何遥控器上拉。这是存储库的主副本。您只需原地编辑代码,然后
git添加。
git提交


如果要创建此repo的本地副本,例如在
/home/user/my_repo
,则需要
cd
/home/user
并运行
git clone$repo_DIR
。这将创建远程引用,该引用将允许您推送到
$REPO_DIR
并从中拉出。然后,当您完成更改后,您可以将其推送到远程。

您想从何处提取?我想从原点提取。例如,假设我的“Git服务器”是10.0.0.1。我在网络上有一些客户端将10.0.0.1设置为源。客户端推送到原点/从原点拉出。我希望能够ssh到10.0.0.1,转到/srv/git/myproject.git目录,并签出HEAD。当我运行checkout时,它会向我显示所有更改的文件,但我执行“ls”时,它们都不在那里。因为他说的是主存储库,所以没有什么可以添加远程存储。我想他想从child/leaf中的一个提取repositories@Jakub-我在阅读文章时没有想到这一点,但这是有道理的。如果是这样,那么Ikke的答案是正确的。