Its*_*Odi 4 linux git wordpress
我有一个大问题,我听不懂这个话题。我有一台带有网站的服务器。我在那里创建了一个存储库git init。然后我git add *将服务器上的所有文件添加到存储库中。比我提出commit要提交所有文件到存储库。
比我将其克隆git clone ssh://username@mysite.com/wordpress/.git到本地客户端。
一切正常,我从项目中得到了一份副本。不,我更改了本地版本的内容,并使用制作commit了push。我查看了FileZilla,但文件中的内容没有更改。在另一个方向上,当我更改服务器上的某些内容并将pulled其更改为本地副本时,我看到了更改。您知道为什么在服务器上看不到我在本地副本上所做的更改吗?
谢谢您的帮助!
您需要将更改推送到本地存储库和服务器都可以从中提取的中央存储库(或将它们添加为彼此的远程存储库)。GitHub之类的服务可以很好地解决此问题。这是适用于此的完整工作流程的说明。更新的说明可以在本要点中找到。此工作流程使用挂钩进行繁重的工作,从而自动更新服务器。
作为自由职业者,我建立了许多网站。要跟踪的代码更改很多。值得庆幸的是,具有适当分支的启用Git的工作流使项目跟踪的工作量减少了。我可以轻松地看到分支中的开发功能以及站点生产代码的快照。该工作流程的一个很好的补充就是能够在提交更改的同时使用Git将更新推送到我正在处理的各个站点中的任何一个。
您需要在开发机器以及您希望托管网站的一个或多个服务器上安装Git。此过程甚至可以调整为与多个服务器一起使用,例如负载平衡器后面的镜像。
更新实时Web服务器的过程依赖于Git环境中发布后挂钩的使用。由于这是完全自动化的,因此在建立到远程服务器的SSH连接时没有机会输入登录凭据。要解决此问题,我们将设置无密码的SSH访问。首先,您需要使用SSH进入服务器。
ssh user@hostname
Run Code Online (Sandbox Code Playgroud)
接下来,您需要确保~/.ssh用户的主目录中有一个。如果没有,请立即创建一个。
mkdir ~/.ssh
Run Code Online (Sandbox Code Playgroud)
在Mac和Linux上,您可以利用终端的功能一次性完成这两项任务。
if [ ! -d ~/.ssh ]; then mkdir ~/.ssh; fi
Run Code Online (Sandbox Code Playgroud)
接下来,如果您还没有公共SSH密钥,则需要生成一个公共SSH密钥。列出~/.ssh目录中要检查的文件。
ls -al ~/.ssh
Run Code Online (Sandbox Code Playgroud)
您要查找的文件的名称通常与相似id_rsa.pub。如果不确定,可以生成一个新的。以下命令将使用提供的电子邮件作为标签来创建SSH密钥。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Run Code Online (Sandbox Code Playgroud)
您可能需要保留所有默认设置。这将在先前创建id_rsa的~/.ssh目录中创建一个命名文件。
出现提示时,请确保提供安全的SSH密码。
如果必须创建SSH密钥,则需要配置ssh-agent程序以使用它。
ssh-add ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
如果您知道自己在做什么,可以~/.ssh通过将私钥文件提供给ssh-agent 来使用目录中的现有SSH密钥。
如果仍然不确定发生了什么,则应在~/.ssh目录中的两个文件分别对应于私钥和公钥文件。通常,公钥将是具有相同名称的文件,并添加.pub扩展名。一个示例是名为的私钥文件id_rsa和名为的公钥文件id_rsa.pub。
在本地计算机上生成SSH密钥后,就该将匹配的共享密钥文件放到服务器上了。
ssh user@hostname 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
这会将您的公共密钥添加到远程服务器上的授权密钥中。可以从每个开发机重复此过程,以向服务器添加所需数量的授权密钥。当您关闭连接并重新连接而没有提示输入密码时,您会知道您正确地做了。
您打算用作实时生产服务器的计算机需要具有一个Git存储库,该存储库可以写入适当的Web可访问目录。Git元数据(.git目录)不需要位于可通过Web访问的位置。相反,它可以在您的SSH用户可以由用户写的任何位置。
为了将文件推送到Web服务器,您需要在Web服务器上拥有存储库的副本。您首先需要创建一个裸仓库来容纳您的网站。存储库应设置在Web根目录之外的某个位置。稍后,我们将指示Git在哪里放置实际文件。确定存储库的位置后,以下命令将创建裸存储库。
mkdir mywebsite.git
cd mywebsite.git
git init --bare
Run Code Online (Sandbox Code Playgroud)
裸仓库包含所有Git元数据,而没有任何HEAD。从本质上讲,这意味着您的存储库具有.git目录,但没有检出任何工作文件。下一步是创建一个Git挂钩,该挂钩将在您指示的任何时间签出这些文件。
如果希望从分离的工作树中运行git命令,则需要在运行任何命令之前将环境变量设置
GIT_DIR为的路径mywebsite.git。
post-receive使用以下内容在存储库的hooks目录中创建一个名为的文件。
#!/bin/sh
GIT_WORK_TREE=/path/to/webroot/of/mywebsite git checkout -f
Run Code Online (Sandbox Code Playgroud)
创建钩子后,继续并将其标记为可执行文件。
chmod +x hooks/post-receive
Run Code Online (Sandbox Code Playgroud)
GIT_WORK_TREE允许您指示Git存储库的工作目录应在哪里。这使您可以通过Web可访问位置中的独立工作树将存储库保留在Web根目录之外。确保您指定的路径存在,Git不会为您创建它。
本地开发机器将容纳网站存储库。每当您选择推送这些更改时,相关文件将被复制到实时服务器中。这意味着您应该在开发机器上保留存储库的工作副本。您还可以使用任何集中式存储库,包括基于云的存储库,例如GitHub或BitBucket。您的工作流程完全取决于您。由于所有更改都是从本地存储库推送的,因此此过程不受选择处理项目的方式的影响。
在开发机器上,您应该有一个正常的Git存储库。如果没有,您可以使用以下命令在现有项目目录中创建。
git init
git add -A
git commit -m "Initial Commit"
Run Code Online (Sandbox Code Playgroud)
拥有可用的存储库后,您需要添加一个远程指向您在服务器上设置的存储库。
git remote add live ssh://server1.example.com/home/user/mywebsite.git
Run Code Online (Sandbox Code Playgroud)
确保您提供的主机名和路径指向您先前设置的服务器和存储库。最后,是时候将您当前的网站第一次推送到实时服务器了。
git push live +master:refs/head/master
Run Code Online (Sandbox Code Playgroud)
此命令指示Git将当前的master分支推送到live远程。(无需发送任何其他分支。)将来,服务器将仅从master分支中检出,因此您无需每次都明确指定。
一切准备就绪。是时候让创意汁流淌了!您的工作流程根本不需要更改。只要准备就绪,将更改推送到实时Web服务器就像运行以下命令一样简单。
git push live
Run Code Online (Sandbox Code Playgroud)
receive.denycurrentbranch在服务器上设置为“ ignore”可以消除将更新推送到服务器上已签出分支时由最新版本的Git发出的警告。
这里有一些使用这种样式的工作流程时可能会有用的技巧。
您可能会发现需要推送到多个服务器。也许您有多个测试服务器,或者您的实时站点跨负载平衡器后面的多个服务器镜像。无论如何,推送到多个服务器就像在中的[remote "live"]部分中添加更多url一样容易.git/config。
[remote "live"]
url = ssh://server1.example.com/home/user/mywebsite.git
url = ssh://server2.example.com/home/user/mywebsite.git
Run Code Online (Sandbox Code Playgroud)
现在发出命令git push live将一次更新您添加的所有URL。简单!
有时,您会在存储库中找到要跟踪的文件,但不希望每次更新网站时都进行更改。一个很好的例子是网站中的配置文件,这些文件具有特定于该站点所在服务器的设置。通常,将更新推送到您的站点将使用开发计算机上存在的任何版本的文件覆盖这些文件。防止这种情况很容易。SSH到远程服务器并导航到Git存储库。输入以下命令,列出要忽略的每个文件。
git update-index --assume-unchanged <file...>
Run Code Online (Sandbox Code Playgroud)
这指示Git在以后结帐时忽略对指定文件的任何更改。您可以在需要时随时对一个或多个文件恢复这种效果。
git update-index --no-assume-unchanged <file...>
Run Code Online (Sandbox Code Playgroud)
如果要查看被忽略文件的列表,这也很容易。
git ls-files -v | grep ^[a-z]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4804 次 |
| 最近记录: |