相关疑难解决方法(0)

git可以在空格和制表符之间自动切换吗?

我在我的python程序中使用制表符缩进,但我想与使用空格的人合作(使用git).

有没有办法让git在推/取时自动在空格和制表符之间进行转换(例如,4个空格= 1个制表符)?(类似于CR/LF转换)

git tabs indentation

192
推荐指数
3
解决办法
5万
查看次数

git中的web.config和app.config特定于机器的设置

我们在不同的办公室有多个开发团队,他们需要在我们的项目web.configapp.config文件中进行大量配置设置的不同值.

我们希望使用一组合理的默认值来检查这些配置文件,这样通过检查trunk/master分支,您可以正常工作而无需挖掘配置文件.

从历史上看,我们已经使用了Subversion,特别是TortoiseSVN,这提供了一种管理本地更改的简便方法:我们只是将这些文件添加到TortoiseSVN的自动更改ignore-on-commit列表中.这可以防止意外签入这些文件,因为您需要专门选择它们以将其包含在签入中(并且您可以确保检查重大更改,而不是本地配置噪声).这种方法的主要缺点是配置文件总是看起来"已更改",因此无法一目了然地知道您是否有任何本地更改.

我们正在寻求转向Git,我正在努力找出最好的方法.

首先,其他StackOverflow答案中已有的内容:

选项1:检入xxx.sample文件和.gitignore实际配置文件:建议这样做,例如,在此答案中.我看到的主要问题是,在两个不同的点上很容易忘记对配置文件的更改:提交者很容易错过他们需要添加到.sample文件中的更改,而消费者(尤其是持续集成服务器)很容易错过他们需要将.sample文件中的更改合并到本地配置文件中.所以基本上,这似乎不是一个很好的解决方案.

选项2:拥有一个已签入的xxx.defaults文件和一个.gitignored xxx.local配置文件,该文件会覆盖它定义的任何设置:例如,这里提供了这个.问题是我们正在使用标准的.Net配置提供程序 - 当Mirosoft已经完成所有工作时,我真的不希望我们实现一个全新的设置加载框架.有没有人知道一种方法来获取app.config和web.config文件来引用可选的本地覆盖文件?

选项3:让开发人员保留本地分支机构,然后让他们总是检查樱桃选择或重新分支到主服务器,以便始终绕过/避免其本地分支中的不需要的提交:这是作为一个可能的工作流程在这里提供,而我在变更跟踪(所有签入的内容)方面欣赏它的清洁度,它在每次签入时都会引入大量所需的开销; 这是一个很大的痛苦!

方案4:有配置文件签入,但他们打上--assume-unchanged:这是献作为一个可能的选项,在这里 ; 据我所知,它与ignore-on-commitTortoiseSVN中的更改列表在精神上非常相似,除非您在提交过程中无法看到这些"隐藏"已更改的文件; 例如,TortoiseGit会显示带有"已更改"图标覆盖的文件,但在提交对话框中,文件根本不会显示.这看起来有点可怕,再次很容易忘记检查更改.

鉴于这些选项,我发现的所有选项,我真的希望有一种方法可以选择"包含"本地配置文件到/登录的app.config/web.config文件中,然后选择2 ; 有没有人知道这样做的方法,或者我缺少的其他选择?(我很想去考虑一个自定义的Xml合并预构建步骤......)

我之前应该提到,我们仍然在VS2008上,所以配置转换不可用.


更新:(删除,是完全错误的)

更新2:我删除了我以前的更新和答案,它是愚蠢的/不起作用.我没有意识到在"我们的"合并之后,另一个方向的下一次合并会带回这些文件的"原始"版本(覆盖本地分支的变化); 如果您有兴趣,请参阅编辑历史记录.这个问题和以往一样开放.

.net git configuration app-config web-config

32
推荐指数
3
解决办法
9920
查看次数

Git相当于subversion的$ URL $关键字扩展

我正在考虑从subversion迁移到git.我们使用subversion为我们的系统管理员管理诸如配置文件之类的东西之一.为此,我们将$URL$每个文件放入,该文件扩展到subversion树中文件的位置.这使管理员可以查看某个任意主机上的文件,并找出它来自树的位置.

我能找到的最接近的模拟是gitattributes.有filter=指令,但似乎git没有向过滤器传达它过滤的文件名,这是转换$URL$成路径所必需的.

还有ident指令,它将变成$Id$blob哈希.如果可以将其映射回路径名,这可能是有用的,但我的git-fu不够强大.

有什么建议?

工作流程如下:

  1. 管理员提交对VCS存储库的更改
  2. 管理员更新已签出仓库的中央位置
  3. 管理员使用cfengine将更改提取到主机

git keyword

15
推荐指数
1
解决办法
1万
查看次数

我应该如何向git表明变化是暂时的并且不应该被提交?

在维护实时系统时,我发现有时需要对文件进行临时临时更改 - 更改日志记录级别,向脚本添加跟踪选项等.

当我这样做时,我的半自动机制用于查找未提交的更改和未合并的分支通常会显示误报:

  • 如果我保留未提交的更改,或者只是暂停,那么我的检查程序脚本将repo标记为脏.
  • 如果我将它们作为"临时更改提交"提交,则会将其标记为"远程分支之前的更改"
  • 如果我在没有遥控器的新分支上提交它们,它们会被标记为"没有遥控器的分支".

通常情况下,所有这些都需要找到尚未合并的更改,但这也意味着"隐藏"临时更改的每种方式也会被阻止.

请注意,我不希望--assume-unchanged,因为同一个文件通常包含临时更改(我不想提醒)和永久更改(我这样做),并查看处理临时更改(不承诺)Git没有提出满足所有这些要求的建议.

使用Mercurial,我会考虑使用Mercurial Queues来获得我想要的东西.我会用我的临时更改创建一个补丁,然后如果我的分析实用程序找到一个补丁队列,它会弹出它们,执行分析然后再推回它们.这将有效地仅删除临时更改,仅对我认为不是临时的更改执行分析,然后重新应用这些更改.

任何更改工作目录的方法的问题在于这会影响实时系统的行为 - 例如,我们的日志记录系统每10秒左右检查一次日志记录配置的更新.

那么,我怎样才能最好地指出git某些变化是暂时的,不应该被提交和/或合并,而其他变化应该?

git workflow

14
推荐指数
1
解决办法
255
查看次数

什么是合适使用.gitattributes与merge =我们的

我刚刚尝试过第一次使用.gitattributes.我认为我必须做错事,因为它没有工作,因为我认为使用merge=ours属性的目的是为了(?).

我用法的一个例子:

我有两个分支; 一个是"主人",另一个是"GCE-Site"."GCE-Site"分支上的文件具有不同的设置,这些设置也存在于"master"分支上,我不想合并到"master"[或其他分支].

在这两个分支上,我有一个.gitattributes包含以下规则:

README.md merge=ours
config.php merge=ours
.gitattributes merge=ours
.gitignore merge=ours
.cache/ merge=ours
Run Code Online (Sandbox Code Playgroud)

需要规则的所有文件都在根级别加上.cache /文件夹上的所有内容.当我这样做时git merge GCE-Site,所有文件仍然在我不想要的时候合并到主服务器中.

有什么我想念的吗?非常感谢您的帮助.日Thnx

git merge attributes bitbucket

11
推荐指数
2
解决办法
8195
查看次数

我们应该gitignore .python-version文件吗?

我有一个.python-version文件,当我用github创建一个Python repo并指定它应该有一个时.gitignore,它会将.python-version文件添加到它.在我看来,该文件不应该被忽略,因为在不同机器上运行代码的其他人想要知道他们需要什么版本的Python.

那么为什么呢.gitignore

python github gitignore pyenv

10
推荐指数
3
解决办法
705
查看次数

将master合并到每个主机自定义分支时避免合并冲突

我想将所有的dotfiles git存储在存储库中,每个机器都有单独的分支.我有一个问题我无法解决阻止我使用git它的目的.我想知道其他人是如何解决它的.

我将有一个单独的master分支,其中只包含模板定义和定义,这些定义和定义应该对所有分支都是通用的,例如:

export EMAIL="@EMAIL@"
export SURFRAW_google_results=1000
Run Code Online (Sandbox Code Playgroud)

我将用@EMAIL@机器分支上的正确电子邮件替换并提交它但SURFRAW_google_results保持不变.例如,在work分支上我会有这样的:

export EMAIL="user@corp.com"
export SURFRAW_google_results=1000
Run Code Online (Sandbox Code Playgroud)

现在,我决定改为SURFRAW_google_results=100010.它应该在全球范围内共享,所以我首先要改变它master:

export EMAIL="@EMAIL@"
export SURFRAW_google_results=10
Run Code Online (Sandbox Code Playgroud)

然后在我的基础workmaster:

$ git checkout work
$ git rebase master
Run Code Online (Sandbox Code Playgroud)

现在我遇到了冲突,因为我改变的线上方的线是不同的:

<<<<<<< a60114eea1c98d2354a07bd4fd0cdd63cba62e93
export EMAIL="@EMAIL@"
export SURFRAW_google_results=10
=======
export EMAIL="user@corp.com"
export SURFRAW_google_results=1000
>>>>>>> m
Run Code Online (Sandbox Code Playgroud)

如果bash我可以迅速通过采购机制包括机器特定的部分,但不支持包括/采购其他配置,如.fluxbox/keys.screenrc

git dotfiles

8
推荐指数
1
解决办法
373
查看次数

zend框架自动切换生产分期测试等

我要改变什么来从生产切换到舞台......等等..哪里.. Bootstrap?

此外,好奇,如果有人已经配置他们的Zend框架根据主机信息自动切换生产,登台,测试等.

例..

 if (hostname = 'prodServer') ... blah
 if (hostname = 'testServer') ... blah
Run Code Online (Sandbox Code Playgroud)

我是Zend的新手,但我通常会将项目配置为根据主机信息自动切换运行环境.

谢谢

environment production zend-framework staging

6
推荐指数
1
解决办法
1万
查看次数

Xcode改变故事板的帧值自动导致git合并冲突.怎么解决?

每当我合并其他团队成员的iOS objc项目时,我都会遇到一些奇怪的冲突:

<<<<<<< HEAD
    <rect key="frame" x="254.00000003476939" y="0.0" width="63" height="21"/>
=======
    <rect key="frame" x="254.00000010362709" y="0.0" width="63" height="21"/>
>>>>>>> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

我们永远不会改变x的值,我们总是给出像值一样的整数.显然,Xcode会自动更改该值.如何防止这种事情发生?

git xcode uistoryboard

6
推荐指数
1
解决办法
363
查看次数

你可以在工作目录中的不同文件上应用相同的提交吗?

例如,假设我有两个文件,A和B.我创建了B作为A的副本,但我希望它们非常相似 - 我只想在B中有两行不同.在Git中是否有办法同步这些以任何方式改变,或者更有效的方式来完成这项任务?

git version-control github

6
推荐指数
1
解决办法
508
查看次数