繁体   English   中英

git 拉取更改到特定目录

[英]git pull changes into a specific directory

我正在准备一个部署自动化脚本,以在 Linux 系统中部署 Drupal 项目。 在暂存分支是“Master”,我想将“Release”分支的所有最新更改拉到特定目录,我想将更改同步到我的 web 目录。 我正在尝试使用以下命令:

git -C /var/tmp/staging_12.21 pull

此命令不会将更改的文件拉入 /var/tmp/staging_12.21 文件夹,而是直接更新 .git 文件。 有没有办法只将最新更改的文件下载/拉到特定目录中? staging_12.21 也是一个空文件夹。

您正在尝试使用 Git 作为部署系统以及版本控制系统。 它不是一个部署系统,所以这通常不能很好地工作。 它作为版本控制系统运行良好。

有没有办法只下载/提取最新更改的文件...

不适用于 Git,没有。 Git 的版本控制适用于提交,而不是文件。 git fetch命令下载新的提交 The git merge and git rebase commands incorporate new commits into some existing repository, and the git pull command is a convenience command that first runs git fetch , then runs either git merge or git rebase (depending on how you instruct it) to combine the new致力于自己的工作。 (如果您不自己做工作,可以将其作为穷人的部署系统投入使用,尽管这绝对是矫枉过正,可能不是一个好主意。)

staging_12.21 也是一个空文件夹。

一个空文件夹并不是特别有用,除了可能作为“从提交中提取部分或全部文件”之类的操作的容器。 请记住,提交是一个由两部分组成的实体,包括:

  • 所有文件的(压缩和只读)快照,从 state 开始,无论是谁提交,都提交了;
  • 有关提交的元数据,例如谁提交、何时提交,以及一些早期提交的 hash ID。

因为提交是所有文件的快照,所以始终可以从该提交中提取部分或全部文件(如果有的话)。

因为提交是快照,所以它没有“更改”。 (练习: 这是一张 1920 年的巴黎照片。点击它,看看,告诉我发生了什么变化。我还需要给你什么其他信息?我什至首先说变化是什么意思?我是意思是从 1919 年开始?)

如果您有一个完整的存储库,根据定义,它包含每个快照,并且您知道在某个位置部署了哪个快照,则可以使用 Git部署的快照与其他一些快照进行比较。 这将为您提供所需的信息。 您可以使用它来构建已更改文件的列表,然后从您想要部署的快照中提取这些文件。 请注意,您需要知道当前部署了哪个提交,并且部署的内容最好与该提交实际匹配。 提取整个提交并从中进行全新的部署可能更简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM