git的新功能--如何将克隆回购更改为原始回购?

git的新功能--如何将克隆回购更改为原始回购?,git,version-control,Git,Version Control,这可能是一个很新的问题,但我似乎无法理解 这就是我所做的 通过ssh在服务器上执行以下操作: 在专用服务器上创建了一个站点 创建了一个git回购我想是git init吧? 添加并承诺所有内容 在我的办公室: 在我的开发机器上克隆了repo 拉了所有的东西 对本地文件进行了一些更改 再次添加文件,对吗?不像svn! 犯了一个错误 推了一下 …现在,在服务器上,如果我做git show,它会显示一个差异,在这个差异中,服务器的最后一份内容被删除,而我从办公室推送的内容被添加。这就是我想要发生的。我不

这可能是一个很新的问题,但我似乎无法理解

这就是我所做的

通过ssh在服务器上执行以下操作:

在专用服务器上创建了一个站点 创建了一个git回购我想是git init吧? 添加并承诺所有内容 在我的办公室:

在我的开发机器上克隆了repo 拉了所有的东西 对本地文件进行了一些更改 再次添加文件,对吗?不像svn! 犯了一个错误 推了一下 …现在,在服务器上,如果我做git show,它会显示一个差异,在这个差异中,服务器的最后一份内容被删除,而我从办公室推送的内容被添加。这就是我想要发生的。我不明白的是:我需要在服务器上做什么才能使我从办公室推动的更改生效

在过去,我用svn部署网站非常成功,我想我也可以用git解决这个问题。。。但很明显我遗漏了一些谜题。谢谢你的帮助

编辑-我刚刚注意到这篇帖子:

我是否应该将我的办公室回购协议拉到我的服务器上,而不是放在那里?所以ssh从办公室进入服务器,然后让它git+ssh回到办公室来拉取repo?这似乎有点疯狂,如果可能的话,我宁愿想办法让推送成功

重新表述问题

我真的只想应用git show显示的补丁。git是否有一种内置的实现方法

答复


看起来服务器上的git checkout-f满足了我的要求,但是创建一个-bare repo本来是一个更好的方法,我现在改成了这个设置。

如果你推到的服务器上的git repo是用于实时系统的,那么你可能需要进行[EDIT]git重置[-hard |…]在推送之后,我想可以看到关于是否使用-hard或其他东西的详细信息-硬重置服务器上所有未提交的修改

如果实时系统在服务器上的其他地方,那么从您的实时系统所在目录中推送到的repo中执行git拉取

推送和取送是互补的,即从A推送到B就像从B取A一样。 pull是一个fetch,后跟一个checkout

编辑:
您还应该阅读链接到的关于推送和获取/拉送之间细微差别的文章:

如果您推送到的服务器上的git repo是用于实时系统的,那么在推送之后,您可能必须在服务器上执行[EDIT]git reset[-hard |…]头,我想可以查看有关是使用-hard还是其他什么的详细信息-硬重置服务器上所有未提交的修改

如果实时系统在服务器上的其他地方,那么从您的实时系统所在目录中推送到的repo中执行git拉取

推送和取送是互补的,即从A推送到B就像从B取A一样。 pull是一个fetch,后跟一个checkout

编辑:
您还应该阅读有关push和fetch/pull之间细微差别的文章:

通常在服务器上,您会执行git init-bare,它创建一个没有工作目录的repo。如果这是您采取的路线,那么作为部署步骤,您必须将更改从那里拉到web目录。所以你的工作流程可能看起来像

On dev PC:

1. git clone <path to server repo>

*make code changes*

2. git commit -am "fixed a bug"

*add some new feature*

3. git commit -am "added cool new feature"

4. git push origin master


On the server:

*cd to www folder*

5. git pull
将服务器repo克隆到您的开发机器上,这是您已经完成的 将错误修复提交到本地repo…而不是服务器的repo 将新功能提交到本地repo…再次提交,而不是服务器的 将所有更改从主分支推送到服务器的主分支 此时,您的更改在您的网站上都不可见。您需要部署它们

5.将最新更改从服务器上的中央repo拉入web服务器上正在提供服务的文件夹


有很多很好的原样,一本免费的在线书,通常在服务器上,你可以使用git init-bare创建一个没有工作目录的repo。如果这是您采取的路线,那么作为部署步骤,您必须将更改从那里拉到web目录。所以你的工作流程可能看起来像

On dev PC:

1. git clone <path to server repo>

*make code changes*

2. git commit -am "fixed a bug"

*add some new feature*

3. git commit -am "added cool new feature"

4. git push origin master


On the server:

*cd to www folder*

5. git pull
将服务器repo克隆到您的开发机器上,这是您已经完成的 将错误修复提交到本地repo…而不是服务器的repo 将新功能提交到本地repo…再次提交,而不是服务器的 将所有更改从主分支推送到服务器的主分支 此时,您的更改在您的网站上都不可见。您需要部署它们

5.将最新更改从服务器上的中央repo拉入web服务器上正在提供服务的文件夹


有非常好的,一本免费的在线书

人们真的需要了解评论和答案之间的区别。你可能会为此得到代表…:你的问题和这个很相似:::一般来说,你只想进入一个赤裸裸的世界repository@cHao字体嗯。。。我自己已经意识到了。。。删除评论。我
如果我的答案有点不完整,倾向于评论而不是回答。请参阅我编辑的答案。git重置可能就是你想要的。人们真的需要了解注释和答案之间的区别。你可能会为此得到代表…:你的问题和这个很相似:::一般来说,你只想进入一个赤裸裸的世界repository@cHao字体嗯。。。我自己已经意识到了。。。删除评论。如果我的答案有点不完整,我倾向于评论而不是回答。请参阅我编辑的答案。git重置可能是您想要的。git签出什么东西还是只是git签出?git签出显示M已修改?和一堆文件,但更改不会出现,git show随后会给出相同的输出。。。奇怪+1对于push和fetch是互补的。git checkout-f即使索引或工作树没有对活动文件进行更改,也要继续,但git info仍然显示相同的差异。。。这让我很烦恼。我应该做一个git clean什么的吗?抱歉,刚刚更新了我的答案。它应该是git重置,但是,推送到非裸存储库并不像看上去那样是一个很好的实践。最好有一个裸回购和拉从那里到你的生活系统。git重置似乎并没有做任何有用的清理git显示,但我可能应该在我尝试git签出之前做它-f。。。嗯,我来看看我能为一个裸机repo做些什么在非裸机存储库中执行git重置-你推到的硬头应该将你的工作副本文件更新到最近推送的commit.git checkout什么的还是仅仅是git checkout?git签出显示M已修改?和一堆文件,但更改不会出现,git show随后会给出相同的输出。。。奇怪+1对于push和fetch是互补的。git checkout-f即使索引或工作树没有对活动文件进行更改,也要继续,但git info仍然显示相同的差异。。。这让我很烦恼。我应该做一个git clean什么的吗?抱歉,刚刚更新了我的答案。它应该是git重置,但是,推送到非裸存储库并不像看上去那样是一个很好的实践。最好有一个裸回购和拉从那里到你的生活系统。git重置似乎并没有做任何有用的清理git显示,但我可能应该在我尝试git签出之前做它-f。。。嗯,我来看看我能为一个裸机repo做些什么,在你推到的非裸机存储库中做一个git重置-硬盘应该会将你的工作副本文件更新到最近推送的提交。好的,我试试这个。。。考虑到我现在的处境,我应该采取什么步骤来建立我的“裸”回购协议,并检查所有内容?我真的不在乎这些最近的变化,它们很小,我可以在以后随时修补它们。。。搜索git-bareinit。上面的内容是关于用户设置的,我想你已经完成了。我现在将我的克隆提交到服务器上的一个裸repo中。做了一个git远程源裸repo。我是否应该能够删除原始非裸机repo上的.git文件夹,然后将其远程连接到新裸机,但将我的东西从克隆repo签入,然后更新以同步所有内容?嘿,看看这个:git签出警告:您似乎在一个尚未出生的分支上。警告:强制检查头部。致命:你希望我怎么合并0棵树?@不,irc://irc.freenode.net/git ... git IRC频道是现场疑难解答帮助的绝佳资源。好的,我试试这个。。。考虑到我现在的处境,我应该采取什么步骤来建立我的“裸”回购协议,并检查所有内容?我真的不在乎这些最近的变化,它们很小,我可以在以后随时修补它们。。。搜索git-bareinit。上面的内容是关于用户设置的,我想你已经完成了。我现在将我的克隆提交到服务器上的一个裸repo中。做了一个git远程源裸repo。我是否应该能够删除原始非裸机repo上的.git文件夹,然后将其远程连接到新裸机,但将我的东西从克隆repo签入,然后更新以同步所有内容?嘿,看看这个:git签出警告:您似乎在一个尚未出生的分支上。警告:强制检查头部。致命:你希望我怎么合并0棵树?@不,irc://irc.freenode.net/git ... git IRC频道是实时疑难解答帮助的绝佳资源。