如何接受git远程存储库上推送的更改?
我有git从我的web服务器克隆了我的git远程仓库到我的本地机器上。在我的本地机器上进行更改后,我已经提交并使用git远程存储库将更改推送到Web服务器,并且在运行git状态时发现有更改。但是我能想到实现这个变化的唯一方法就是运行git stash。我相信这是不正确的方法。我尝试了git fetch和git merge,但是这是远程资源库,我试图用生产中的其他更改进行更新。如何接受git远程存储库上推送的更改?
git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: test.txt
#
git stash
Saved working directory and index state WIP on master: eb8230d Changes
HEAD is now at eb8230d Changes
我猜你的意思是远程存储库有一个工作目录是一个实时网站。您希望将更改推送到远程存储库并将更改自动应用到工作目录(即实时网站),从而将更改部署到您的网站。
你想要做的就是设置一个远程仓库和一个post-receive钩子来检查新文件。
Git的默认设置是假设工作目录中的更改很重要,不应该轻易被吹掉。这是因为默认设计是为了使工作目录成为用户正在工作的实际目录,进行更改等。对于充当实时网站的存储库,此假设不成立,因此默认行为不会工作得很好。
特别是,推送到远程存储库将更新分支和该存储库上的git索引,但不会对工作目录进行任何更改。这使得它看起来好像在你的工作目录中有变化,它只是撤消刚推出的任何工作。
您可以使用已找到的命令git checkout --force
并将其放入post-receive
挂钩中,并且每次推送更改时,存储库都会检出新文件。这会消除工作目录中的任何更改,但推测这些“更改”永远不会是除了推送的更改之外的假更改。如果您曾在远程存储库的工作目录中手动编辑任何内容,则可能会失去这些编辑。
另一种选择是让库您的Web服务器是一个--bare库,远程存储库通常应该是。不要让工作目录也用作实时网站,而是使用post-receive hook脚本运行命令将网站部署到另一个位置。
http://krisjordan.com/essays/setting-up-push-to-deploy-with-git
这正是我所掌握的。没有意识到这个命令吹动了Web服务器的变化。开发人员将更改推送到远程存储库,即Web服务器。我可能本应该做一个git init --bare,因为该计划只接受来自开发人员的更改。在阅读该链接之前,对裸露的存储库不太熟悉。谢谢!我们仍然在让每个人都使用git,而不是在制作网站上开发,但到目前为止这么好! – imparante 2015-04-04 21:23:55
您将需要让您的远程web服务器从正在跟踪的分支中提取最新的提交。这是用git checkout(branchname)和git pull(在正确的分支上一次)手动完成的。
你可以编写一个cronjob来定期尝试一个git pull,或者为你的仓库设置钩子。这会在每次将提交推送到回购站时向远程Web服务器发送消息。
我通过使用Jenkins服务器和ssh-command插件来SSH解决了这个问题,并执行了git pull。
另一种解决方案是将您的网络服务器添加为另一个远程。你可以通过键入做到这一点:
git remote add webserver ssh://<your user name>@<FQDN>:22/path/to/repo.git
git push webserver <branch>
我不确定它是否不正确,但我没有直接创建分支并对文件进行修改,并执行git commit和git push。 – imparante 2015-04-02 15:33:23
这是一种正确的做事方式,只要您将新分支合并回您的主分支。你可以用git merge
看起来像我需要运行
git checkout -f
到Web服务器更新到分支或变更的头。
接受变更是什么意思?你的意思是'git pull'? git'stash'表示临时分离当前状态,例如,如果您有一些工作正在进行并且必须切换分支 – MorKadosh 2015-04-02 15:07:06
实施推送到远程存储库的更改。如果我cat test.txt,它仍然是旧的,原始文件。我不知道这是否回答你的问题。 – imparante 2015-04-02 15:08:29
[Git Post-Receive Hook for Website Staging]的可能重复(http://*.com/questions/3838727/git-post-receive-hook-for-website-staging) – Charlie 2015-04-02 15:13:35