Gout中的“Checkout”修改文件进行部署

时间:2012-09-11 15:27:55

标签: git

所以我决定在本地安装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)上传到服务器

2 个答案:

答案 0 :(得分: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...

答案 1 :(得分:0)

您可以使用以下内容恢复索引的所有file的最新副本。

git checkout HEAD -- <file>

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