当你是git中的原始回购时,你如何做一个本地拉?

Rob*_*ell 2 git

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

git pull origin

git push origin

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

然而,当我运行git pull时,我收到一条致命的消息:你想从今天的哪个地方获取?.如何在服务器上查看我本地工作副本的最新更改?

Kzq*_*qai 8

修复工作副本以匹配推送的最新更改

git checkout HEAD
Run Code Online (Sandbox Code Playgroud)

可能就是你要找的东西.

来自客户端的推送更改索引而不是工作文件,因此您可以在事物的git记录向前移动时保持工作文件不变.为了擦除工作文件以支持最新版本,您可以将已推送到服务器的最新版本签出.

... 编辑:

使用两个非裸存储库

我刚刚意识到我向你提供了解问题的信息(索引隐式更改但工作文件只是明确更改),但不一定是修复它的最佳方法.以下是我过去所做的事情,以及如果您不想让中央裸存储库参与其中我建议的内容:

在服务器上:

git branch staging
git checkout staging
Run Code Online (Sandbox Code Playgroud)

在客户端机器上:

Hack away at some changes in master, then push to the server.
Run Code Online (Sandbox Code Playgroud)

在服务器上:( git rebase master显式更新您的暂存分支以匹配更新的索引.)

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

在服务器上:

Commit changes made on the staging branch.
git rebase master
git checkout master
git rebase staging
git checkout staging
Run Code Online (Sandbox Code Playgroud)

然后你去,master中的每个提交都将在staging中,并且在staging分支中进行的每个提交都将是master中的最新提交.

即使使用非裸中央存储库,这种工作流也应该适合您.基本上,您将离开服务器的主分支,并使分段分支成为服务器的工作副本.

使用中央裸仓可以更清洁

一般来说,尽管网络中的2点似乎最简单,但拥有"集中式"裸存储库通常更简单,它允许您始终推送和拉动到该位置而无需真正考虑它.我还建议你可以从github.com获得网络代码可视化的好处(开源软件免费,我用它来做我现在所做的一切).