我为我的网站使用git进行版本控制。
我将我的测试和现场网站设置为git repo,目前有一个干净的“git status”,因为我刚刚移动了服务器并修复了所有内容。我喜欢用git设置它们以便我可以看到它们是否随着时间的推移偏离了提交的内容,例如如果我忘记上传文件。
我不会在我的网站上使用git pull,因为它会覆盖我的文件的CHMOD和CHOWN(可能是某些默认的CHMOD),这会导致停机。
我ftp更改到我的测试站点,当他们工作时我将它们(本地)提交,然后ftp到实时站点。
“git status”会将这些文件显示为已修改,即使它们与最新版本匹配,我认为因为它知道它在提交时落后并且没有与最新版本进行比较?
“git diff --cached”为空白
我能更新这些文件的唯一方法是使用“git checkout”导致CHMOD问题。 “git pull”会导致合并冲突。
有什么方法可以让它更新到最新版本并忽略那些没有最新版本更改的文件?我永远不需要从这些结账中提交。
答案 0 :(得分:0)
除非您正在运行强制拉git,否则不应修改相同的文件。
git diff --cached
仅显示本地存储库中待处理提交的修改,而不显示远程存储库中的待处理更改。您可以通过运行来查看远程仓库中的更改。
git fetch
git diff master origin/master
(假设您当前的分支名为master)
您可以尝试git pull -Xours
,但这可能无效。
不幸的是,git不保存文件权限或所有者信息。 如果你运行git pull命令,它所改变的任何文件都将由运行该命令的用户拥有,因此你可以尝试以文件所需的用户身份运行git pull。
如果您还需要具有特定权限,或者由于某些原因用户未授予正确的所有权而运行git pull,则需要创建一个手动设置正确权限和所有权的脚本。
为简化此操作,您可以通过将脚本添加到git pull
来将脚本设置为在运行hooks/post-merge
后自动执行。你可以在这里找到更多关于git hooks的信息:https://git-scm.com/docs/githooks。
还有git-cache-meta
这是一个显然可以使用git保存文件权限和所有权的工具,但我对使用它一无所知。