我在我的python程序中使用制表符缩进,但我想与使用空格的人合作(使用git).
有没有办法让git在推/取时自动在空格和制表符之间进行转换(例如,4个空格= 1个制表符)?(类似于CR/LF转换)
.gitignore 可以忽略整个文件,但有没有办法在编码时忽略特定的代码行?
我经常反复在项目中添加相同的调试行,只需记住在提交之前删除它们.我想在代码中保留这些行并让git忽略它们.
我怀疑是否有一种方法可以在Java中创建编译时条件,如C++中的#ifdef #ifndef.
我的问题是有一个用Java编写的算法,我有不同的运行时间改进了该算法.所以我想测量每次改进时我节省了多少时间.
现在我有一组布尔变量,用于在运行时决定应该使用哪些改进,哪些不使用.但即使测试这些变量也会影响总运行时间.
所以我想找到一种方法来在编译期间决定编译和使用程序的哪些部分.
有人知道在Java中使用它的方法.或者也许有人知道没有这样的方式(它也会有用).
我们正在为所有项目使用Gradle Wrapper,但我们的一个工具(IntelliJ IDEA)经常重新运行包装器任务,该任务会在每次运行时更改第一行 - 关于文件生成时间的注释.这种变化倾向于被添加到拉取请求中,这意味着存在不必要的合并冲突的高可能性.
正确的解决方案是让所有开发人员永远不会检查文件,除非它实际上以有意义的方式进行了更改,但开发人员(包括我)可能会仓促而健忘,因此文件会在拉取请求中定期显示.
我有一些想法可以解决这个问题,但不能真正决定它们中的任何一个.
让Git忽略像这样的第一行gradle-wrapper.properties,感觉很麻烦,并且必须由每个开发人员完成,因为它是本地的.
在gradle包装器任务中添加一个尾部,删除第一行gradle-wrapper.properties,感觉有点hackish.
不知何故,每当我们同步项目时,IDEA都不会自动重新运行包装器任务,不知道如何执行此操作.
我现在倾向于2.但我想知道是否有其他人有更好的想法.
我有一个文件,database.properties其中有
password = something
Run Code Online (Sandbox Code Playgroud)
因此,每当我必须测试某些东西时,我必须将此行更改为我的本地密码.团队中的每个人都有自己的本地密码.
我想我将不得不做以下其中一项:
每次我提交我都不应该添加database.properties索引(我不想要ignore这个文件),但是当文件太多时很容易错过这个文件.
在提交之前撤消更改,但大多数时候我忘记这样做.
创建个人资料可能是实现这一目标的一种方式,但即使会有类似的问题database.properties.
我已经检查了可以git忽略一个特定的行吗?以及如何告诉git忽略单独的行,即特定行代码的gitignore.
从暂时忽略文件,我看到我们可以做到
git update-index --assume-unchanged <file>
Run Code Online (Sandbox Code Playgroud)
但我每次都要这样做.
所有上述参考文献在3 - 4年之前被提出/写入.所以我只想知道如果有更好的方法可以忽略这一行.
编辑
按照@ VonC的回答,我试图添加一个过滤器 .git/info/.gitattribute
{directory_path}/database.properties filter=password // I have given the correct directory path.
Run Code Online (Sandbox Code Playgroud)
我已添加smudge和clean脚本为:
git config --global filter.password.smudge ~/smudge.sh
git config --global filter.password.clean ~/clean.sh
Run Code Online (Sandbox Code Playgroud)
(当我运行~/smudge.sh并且~/clean.sh它password= something正确替换了行.所以脚本是正确的.)
但是当我添加/提交时database.properties,似乎对database.properties文件没有任何影响.(我猜我~/clean.sh应该在将其添加到索引时运行)
我究竟做错了什么?
我正在建立一个网络应用程序的项目.我们使用Git进行版本控制,使用Gulp进行任务自动化.我想暂时忽略文件到某个文件夹,即build文件夹.我们倾向于在一天结束时(或编码会话结束时)对该文件夹进行更改.
经过一些研究后,我发现以下命令开始忽略对文件的更改:
$ git update-index --assume-unchanged path/to/file
当我运行该代码以忽略我在终端上看到的构建文件夹时: Ignoring path build/
但是它仍然显示没有为该文件夹暂存的更改,因此我必须git checkout -- build/在每次提交之前运行.
我究竟做错了什么?
我在具有基本操作系统(基于Ubuntu的发行版)的PC上使用git 2.9.3.
我正在尝试将我的.bashrc .gitconfig和其他有用的配置放到github上(因为我想分享一些有价值的代码片段),但问题是我不想分享某些"关于我的有价值的信息" ,
那么有没有办法告诉git忽略文件的某些模式或行(例如.gitignore?)
注意:我想知道如何进行我的bashrc共享(我将保留bashrc公共事物并将私有移动到我不会分享的bashprofile)但我有点想知道如何共享我的gitconfig(有一些非常好的别名)
谢谢
我正在使用Visual Studio 2010和git(git svn).我的同事使用纯svn和Ankhsvn插件.
当我尝试在启用Git源代码控制提供程序的情况下打开文件时,Visual Studion会抱怨:
源控制插件
活动解决方案或项目由与您选择的插件相关的源控制插件控制.如果更改源控件插件,将关闭活动解决方案或项目.
你想继续吗?
当我单击是时,将打开一个空的解决方案.当我单击否时,解决方案项旁边的所有git特定图标都会丢失(我仍然会在解决方案资源管理器中看到分支名称),每次打开解决方案时都会收到有关源控件插件的提示.
当我克隆我的同事创建的svn存储库时,解决方案sln文件包含以下内容
GlobalSection(SubversionScc)= preSolution
Svn-Managed = True
Manager = AnkhSVN - 对Visual Studio
EndGlobalSection的 Subversion支持
我已经删除了这一部分,现在解决方案在Git源代码控制提供程序被激活时没有问题,但是当您选择Ankhsvn提供程序时会抱怨 - 情况正好相反.
我想告诉git在pull(git svn fetch)期间删除.sln文件的这一部分,并在我提交时添加它(git svn dcommit).这可能通过gitattributes以及如何做到这一点?
编辑:
我现在补充说
solutionname.sln filter = ankhsvn
到$ GIT_DIR/info/attributes
和
[filter "ankhsvn"]
clean=sed '/^Global$/ r ../ankhsvnsection '
smudge=sed '/GlobalSection(SubversionScc)/,/EndGlobalSection/d '
Run Code Online (Sandbox Code Playgroud)
到我的.git/config文件.
ankhsvnsection包含由涂抹操作删除的部分.我似乎什么也没做?!
我在进行本地开发时使用“替换”语句。所以我的 go.mod 看起来像这样:
require (
gorm.io/gorm v1.21.11
github.com/mypackages/session v1.1.0
)
replace (
github.com/mypackages/session => ./../session
)
Run Code Online (Sandbox Code Playgroud)
但是当git commit我更改并将代码部署到生产时,我不需要“替换” ,所以我需要在每个替换代码上注释这行替换代码,git commit然后取消注释。有没有办法忽略生产环境中的“替换”语句?
git ×7
gitignore ×2
compilation ×1
conditional ×1
filter ×1
git-svn ×1
go ×1
go-modules ×1
gradle ×1
ignore ×1
indentation ×1
java ×1
tabs ×1