0

所以我决定在本地安装 Windows 版本的 Git(我做 Unix web 开发,也做 .NET 开发,所以在 UNIX 上为我的 .NET 项目运行 Git 似乎很迂回)。

对于 Web 开发工作,我将自己使用 FTP 进行部署,但想问:有没有方便的方法让 Git 为文件子集(例如特定分支中的所有文件)构建目录结构?

例如:假设我有这个 Web 服务器文件结构

/public_html/index.php
/public_html/config.php
/public_html/style/style.css
/public_html/style/typography.css

在本地我只修改 index.php 和 style.css

如果有某种方法可以“签出”这些文件并让它构建它们的完整文件路径,那就太好了。在 Visual Source Safe 中,它实际上将所有文件存储在 VSS 数据库中。因此,您可以删除您的工作副本,并签出一些文件,它会将它们写入您的工作目录中相应的目录结构中。GIT中有类似的东西吗?如果是这样,那么我可以导出修改后的文件并将根文件夹(/public_html)上传到服务器

4

2 回答 2

1

退房git diff-tree。您可以使用它比较两个提交树的状态并确定哪些文件已更改。例如:

git diff-tree --name-status -r `git merge-base master mybranch` mybranch

将显示任何已更改文件的名称和状态。如果您确定仍会正确处理已删除文件之类的事情,您也可以使用--name-only代替。--name-status

(当然,使用 `` 的命令替换是 UNIX-shell 结构;在 Windows 上,您可能需要使用 FOR /F 之类的东西。)

然后,您可以将此命令列出的文件传递给git checkout. 如果要将文件检出到单独的目录中,可以使用--work-tree参数:

git --work-tree=path/to/build checkout mybranch -- file file file...
于 2012-09-11T23:51:54.580 回答
0

您可以使用以下命令恢复索引的最新副本file

git checkout HEAD -- <file>

因此,如果您删除了工作目录中的文件,则可以使用该命令“恢复”它。

于 2012-09-11T16:05:07.563 回答