相关疑难解决方法(0)

.gitattributes 文件对于 git 真的有必要吗?

我最近阅读了一些关于 .gitattributes 的文章,还发现了像这样的地方,https://github.com/alexkaratarakis/gitattributes,他们试图在其中维护所有文件类型的 gitattributes。但在我心里,翻看那些文件,我本能地认为这是一个难以维护的烂摊子。这意味着每当您使用任何新的文件扩展名或任何软件产生新的文件扩展名时,您都必须更新该文件,这是不可能的。当你与一个超过 30 人的团队一起工作时,维护这样的文件简直就是一场噩梦,我们几乎无法维护一个简单的 icon.svg 文件。

但除此之外,我多年来一直在许多不同的项目中编码和使用 git,但我从未使用过 .gitattributes。我们在项目中使用 prettier 之类的东西,将换行符重写为“lf”,并且我们在 Windows 上有开发人员,这样的东西永远不会出现任何问题,vscode 也永远不会出现任何此类问题。Git 还会自动选取 png 等二进制文件,并自动显示 svg 等文件的文本差异,我从来不需要配置它。

所以我想问一下,这个文件真的有必要吗?因为在我看来,它正在签署大量完全没有必要的维护,而且 git 足够聪明,可以弄清楚它应该或不应该对文件做什么。

git

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

为什么git在两个明显相同的添加文件之间显示冲突?

我有一个在TFS中启动的项目,然后转移到Git.不幸的是,将它移动到Git的人只是检查当前文件而不是使用git-tfs.我试图在我使用git-tfs从TFS中提取的提交之后,在Git中重新设置他的新提交.

要做到这一点,我只是简单地在git-tfs提交之上重新提交他的提交.(我意识到这会弄乱远程Git分支机构,但我们是一个小团队,它会没事.我也尝试过挑选樱桃,但我遇到了同样的问题.)

我遇到的问题是一组看起来像这样的冲突:

<<<<<<< HEAD
namespace OurNiftyProject
{
    public enum CardType
    { 
        Visa = 0,
        MasterCard = 1
    }
}
||||||| merged common ancestors
=======
namespace OurNiftyProject
{
    public enum CardType
    { 
        Visa = 0,
        MasterCard = 1
    }
}
>>>>>>> Add a bunch of stuff.
Run Code Online (Sandbox Code Playgroud)

看来这是添加这些文件的TFS端提交和添加它们的Git端提交之间的冲突(因为Git repo开始为空).

逻辑上可能是跳过这个提交,但也有一些文件(比如几百个中的十个)是新的.当然,那些不会引起冲突.

为什么Git不能自己弄清楚两个文件是否相同?即使我在使用--ignore-whitespacerebase时使用,Git仍会显示几十个这样看似相同的文件.我对如何解决这个问题感到茫然.

git git-rebase merge-conflict-resolution git-cherry-pick

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

Git使所有签出文件的行尾CRLF

我在mac上编程,我真的不明白Git对我文件行的结尾做了什么:

我创建了一个包含Unix格式文件的存储库(LF行尾).

当我克隆我创建的存储库时,我的所有行都是CRLF.它不应该自动检测到我需要LF线端?

我将autoclrf设置为true.

GIT关于autoclrf的文档很难理解:

如果您只想在工作目录中使用CRLF行结尾而不管您正在使用的存储库,则可以设置配置变量"core.autocrlf"而不更改任何属性.

[核心]

   autocrlf = true
Run Code Online (Sandbox Code Playgroud)

这不会强制所有文本文件的规范化,但确保引入存储库的文本文件在添加时将其行结尾标准化为LF,并且已在存储库中标准化的文件保持规范化.

第一句话说"如果你想拥有所有的crlf",当第二句话说git会自动调整行尾.

就我而言,似乎Git将所有内容转换为CRLF,并在我尝试克隆时将其保留.

linux windows git macos

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

我可以使用mSysGit和Cygwin的git吗?

迁移到Windows后,我使用msysgit及其包含的bash shell,这对我来说很有用.但我有问题:我们的ant构建过程不会在那个shell中运行,我想使用Cygwin的xterms而不是Windows命令窗口,因为终端兼容性不足以运行我想要的其他所有内容那个窗口,等等.

我实际上已经在Windows命令shell中坚持使用msysgit,这样我就不必使用单独的窗口来构建,但是这会遇到更多问题:缺少cd- 并且文件完成会让我失望,大多数我想要管道的命令不存在,等等.

所以如果我转而使用Cygwin的git,或者更糟糕的是,在不同的时间使用它们,那么行结尾会咬我吗?Cygwin的git会期待一切,\n并认为它看到了变化,因为mSysGit \r\n在结账时转换成了吗?将Cygwin的git检查出来\n并混淆我的Windows Eclipse,我确信它应该是一切\r\n吗?

windows git cygwin msysgit

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

Git:用git hook将回车符\ r转换为新行\n?

一个编码员使用Windows计算机,在我们的源代码中随处可见回车.

有没有办法写一个git钩子,将所有转换\r\n\n

注意我以前没有使用git hooks,所以一点点额外的手持可能会有很长的路要走:)

git newline githooks

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

eclipse比较编辑器停止显示详细的差异

我一直在使用eclipse进行java android开发6个月,我喜欢比较编辑器.在过去的几天里,我一直在被黑客攻击,我想我已经把我所有的git ducks连续,或者足够接近,以至于东西干净整洁,我可以找到旧版本的应用程序.

但似乎在最后一两天,日食比较编辑器已停止显示差异!我右键单击未提交的PlayThread.java并选择与Commit ...或HEAD或branch或任何东西进行比较,无论文件有多么相似,比较编辑器在其右侧显示一个大白条,然后单击以转到下一个区别突出显示整个文件!

我查看了git并比较了eclipse的首选项,找不到任何可能有用的内容.

任何帮助让我漂亮的比较编辑器再次为我工作将不胜感激!

eclipse git compare editor

8
推荐指数
2
解决办法
5993
查看次数

PhpStorm + GIT行结尾从LF变为CRLF

我已经将我的PhpStorm行结尾设置为LF,但是当我提交github时,有时我会看到一些文件再次出现在CRLF行结尾(我在Windows上工作).

它发生在我编辑的相同文件中,没有人在我的提交/推送到存储库之间编辑它们.这非常烦人,我需要经常将行结尾更改为同一个文件.它可能是什么以及如何解决它?

我也检查了选项"如果要提交CRLF行分隔符就警告"

编辑

我的本地git配置是这样的:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    url = https://github.com/*
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "develop"]
    remote = origin
    merge = refs/heads/develop
Run Code Online (Sandbox Code Playgroud)

我的全局配置是这样的:

[user]
    name = *
    email = *
[core]
    autocrlf = false
Run Code Online (Sandbox Code Playgroud)

我的系统范围配置是这样的:

[core]
    symlinks = false
    autocrlf = false
[color]
    diff = auto
    status = auto
    branch = auto
    interactive = true
[pack]
    packSizeLimit = 2g …
Run Code Online (Sandbox Code Playgroud)

git github line-endings phpstorm

7
推荐指数
2
解决办法
8592
查看次数

Android Studio - 基于Git的多平台项目的CRLF vs LF

我正在开发一个涉及多个开发人员的Android项目,其中一些开发人员在Windows上,另一些开发人员在Linux/MacOS上.由于我在Windows上,我已被指示配置Git如下以避免问题:

autocrlf = true
safecrlf = true
Run Code Online (Sandbox Code Playgroud)

这很好用.我在Android Studio中创建的任何.java/XML/etc文件都是CRLF,当我将它们推入repo时转换为LF,然后当我将更改提取到本地副本时返回CRLF.问题是,由于某种原因,某些类型的文件(如矢量可绘制资源)会在LF中生成.因此,当我尝试将它们添加到Git时,我得到了"不可逆转换"错误:

在此输入图像描述 我知道我可以设置safecrlf = warn,但据我所知,如果Git错误地将它们用于文本文件,则存在破坏二进制文件的风险,因此我正在寻找更安全的解决方案.现在我在将它们添加到Git之前手动将矢量资源编辑到CRLF中,这避免了上述错误消息,但是为每个文件重复该过程变得乏味.有什么方法可以强制Android Studio在CRLF中生成所有本地文件?

git android core.autocrlf android-studio

7
推荐指数
3
解决办法
3630
查看次数

Git Update之后无法推送

我刚刚从Git 1.7.11更新到1.8.5

现在,当我尝试推送到bitbucket时,我收到以下消息:

致命:无法读取" https://xxxxxx@bitbucket.org "的密码:没有这样的文件或目录

其中xxxxx是我的用户名.

推动仍在1.7的其他机器正常工作.

是什么导致这种情况,我该如何解决?

git bitbucket git-push

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

使用Linux和Windows时,最好的git配置是什么?

我对git config的core.eol,core.autocrlf,core.safecrlf有点困惑.

http://git-scm.com/docs/git-config

我正在使用Ubuntu和Widows.

我之前有过^ M和其他问题.

谁能为这个问题建议最好的git配置设置?

提前致谢.

linux git windows-7

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