只将特定路径和文件提交给Git?

时间:2016-03-13 18:57:14

标签: git git-remote

我正在尝试将项目中已更改的文件及其相关路径推送到远程仓库中的特定分支。但是,我总是得到项目中的所有文件。所以,如果我对resources/views/index.php进行了更改,并且我想在分支limited1中只拥有该文件夹路径和文件,那么我一直在这样做:

git add resources/views/index.php
git commit -m "Path and File only"
git push master limited1

正如我所说,这会将项目中的所有文件放入有限的1分支中。如何将远程分支限制为仅更改的文件及其相应的路径?

现在在这堵墙上撞了好几个小时,对我有所帮助。

2 个答案:

答案 0 :(得分:0)

如果这是您的要求,您可以为此创建一个新分支,然后将.gitignore更改为忽略除目录路径或所需文件之外的所有文件。

link会有所帮助。

答案 1 :(得分:0)

Git不存储更改; git存储内容。每次提交都是提交时索引(临时区域)中每个文件的完整快照。

因此:

$ mkdir new; cd new; git init
$ make-some-files a b c
$ git add a b c; git commit -m first

第一次提交包含文件abc。然后:

$ append-stuff-to b; git add b; git commit -m second

第二次提交包含文件ab(通过附加内容修改)和c

如果您希望第二次提交只包含 文件b,请在提交之前删除ac

$ append-stuff-to b; git rm a c; git add b; git commit -m second

当您使用git push时,git将提交(而不是文件)传输到远程。提交包含对树的引用,树包含对文件的引用。 Git会动态计算将旧树转换为新树所需的所有更改集,这包括在执行git push时。它实际上需要 less 时间和空间来发送一个新的提交,只修改文件b(一次更改),而不是发送一个新的提交文件b modified和files {已删除{1}}和a(三次更改)。

这意味着如果你认为你通过删除东西来节省时间和精力等等,那你就错了:你为自己和git做了更多的工作。 (这可能就是为什么你的问题已被低估了,尽管不是我。)