.gitignore以保留一个文件
我正在尝试创建一个cronjob来备份git中的所有Jenkins配置。在我的存储库中唯一需要跟踪的是每个Jenkins项目中的.gitignore以保留一个文件,git,jenkins,gitignore,git-add,Git,Jenkins,Gitignore,Git Add,我正在尝试创建一个cronjob来备份git中的所有Jenkins配置。在我的存储库中唯一需要跟踪的是每个Jenkins项目中的config.xml。文件系统的结构类似于。/jenkins/jobs/[PROJECTNAME]/config.xml。.git位于作业中 我不想显式忽略所有其他文件夹/文件,但只允许该位置的config.xml。我提出了以下工作解决方案: * !.gitignore !config.xml !*/ */workspace */modules /config-hi
config.xml
。文件系统的结构类似于。/jenkins/jobs/[PROJECTNAME]/config.xml
。.git
位于作业中
我不想显式忽略所有其他文件夹/文件,但只允许该位置的config.xml
。我提出了以下工作解决方案:
*
!.gitignore
!config.xml
!*/
*/workspace
*/modules
/config-history
*/config-history
*/*/config-history
*/*/*/config-history
*/*/*/*/config-history
*/*/*/*/*/config-history
*/*/*/*/*/*/config-history
*/*/*/*/*/*/*/config-history
不幸的是,有很多项目,git add.
需要一段时间。忽略工作区
,直接包含大多数文件,没有增加任何好处
顺便说一句,直观和快捷的方式根本不起作用:
*
!.gitignore
!*/config.xml
优化my.gitignore或my git add而不列出这两种情况下的所有文件,有什么想法吗?既然这只是一项自动化任务,为什么不直接添加所需的文件呢?替换
git add .
与
git不必遍历整个项目树
如果要显示回购的状态,而不加载未跟踪的文件,请使用
git status -uno
编辑:当然,您必须在目录中包含要添加的config.xml
;如果要在当前目录的子目录中添加所有config.xml
s,请使用
git add */config.xml
既然这只是一个自动化的任务,为什么不直接添加所需的文件呢?替换
git add .
与
git不必遍历整个项目树
如果要显示回购的状态,而不加载未跟踪的文件,请使用
git status -uno
编辑:当然,您必须在目录中包含要添加的config.xml
;如果要在当前目录的子目录中添加所有config.xml
s,请使用
git add */config.xml
既然这只是一个自动化的任务,为什么不直接添加所需的文件呢?替换
git add .
与
git不必遍历整个项目树
如果要显示回购的状态,而不加载未跟踪的文件,请使用
git status -uno
编辑:当然,您必须在目录中包含要添加的config.xml
;如果要在当前目录的子目录中添加所有config.xml
s,请使用
git add */config.xml
既然这只是一个自动化的任务,为什么不直接添加所需的文件呢?替换
git add .
与
git不必遍历整个项目树
如果要显示回购的状态,而不加载未跟踪的文件,请使用
git status -uno
编辑:当然,您必须在目录中包含要添加的config.xml
;如果要在当前目录的子目录中添加所有config.xml
s,请使用
git add */config.xml
那么,您至少可以使用双星号来缩短.gitignore:
# other stuff here
**/config-history
它将匹配任何路径中的
配置历史记录。您至少可以使用双星号缩短.gitignore:
# other stuff here
**/config-history
它将匹配任何路径中的配置历史记录。您至少可以使用双星号缩短.gitignore:
# other stuff here
**/config-history
它将匹配任何路径中的配置历史记录。您至少可以使用双星号缩短.gitignore:
# other stuff here
**/config-history
它将在任何路径中匹配config history
。我很快在一个示例回购上尝试了您的方法,但这在子目录上不起作用?随时都会添加新项目,当然,我还想备份新的config.xml。请记住,相对于git,配置位于/[projectname]/config.xml中。git add
是明确的。需要.gitignore的唯一原因是,不是添加实际要添加的文件,而是添加包含该文件的整个目录。因此:您是否仍在执行git add.
?你真的不应该,我不明白。请参阅我的示例:>mkdir gittest>cd gittest\gittest>git init。在C:/Users/User/gittest/.Git/\gittest>echo“xx”>config.xml\gittest>mkdir sub\gittest>cd sub\gittest\sub>echo“xx2”>config.xml\gittest\sub>echo“xx4”>other.xml\gittest\sub>cd\gittest>GitAdd-n。添加'config.xml'add'sub/config.xml'add'sub/other.xml'\gittest>git add-n config.xml添加'config.xml'
(请将其复制到某个地方阅读:))这仅用于测试目的。第二个是重要的。但是现在我有了它:>git add-n*/config.xml
请更新您的anwser以真正匹配我的问题。我已经把它排除在外并投了更高的票,因为这是正确的方向。我很快就在一个样本回购上尝试了你的方法,但这在子目录上不起作用?随时都会添加新项目,当然,我还想备份新的config.xml。请记住,相对于git,配置位于/[projectname]/config.xml中。git add
是明确的。需要.gitignore的唯一原因是,不是添加实际要添加的文件,而是添加包含该文件的整个目录。因此:您是否仍在执行git add.
?你真的不应该,我不明白。请参阅我的示例:>mkdir gittest>cd gittest\gittest>git init。在C:/Users/User/gittest/.Git/\gittest>echo“xx”>config.xml\gittest>mkdir sub\gittest>cd sub\gittest\sub>echo“xx2”>config.xml\gittest\sub>echo“xx4”>other.xml\gittest\sub>cd\gittest>GitAdd-n。添加'config.xml'add'sub/config.xml'add'sub/other.xml'\gittest>git add-n config.xml添加'config.xml'
(请将其复制到某个地方阅读:))这仅用于测试目的。第二个是重要的。但是现在我有了它:>git add-n*/config.xml
请更新您的anwser以真正匹配我的问题。我已经把它排除在外并投了更高的票,因为这是正确的方向。我很快就在一个样本回购上尝试了你的方法,但这在子目录上不起作用?任何时候都有新的项目