标签: git-config

C# git 命令行过程

我们的组织使用 VisualStudioOnline、GitHub 和 BitBucket 作为各种存储库。我一直在尝试在 C# 中找到一种方法来定期自动执行pull来自各个存储库的更改。git我尝试启动这样的过程,然后重定向标准输入/输出。

var p = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = @"C:\Program Files (x86)\Git\bin\sh.exe",
        RedirectStandardInput = true,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        Arguments = "--login -i"
    }
};

p.Start();

using (var so = p.StandardOutput)
{
    using (var si = p.StandardInput)
    {
        if (si.BaseStream.CanWrite)
        {
            ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在块内部,我可以执行git如下命令:

  • si.WriteLine("cd \"P:/code/testapp\"");它将git shell 导航到该目录
  • si.WriteLine("git rev-parse HEAD"); 这将为我提供该位置存储库的最新哈希值。

我可以看到 bash shell 中返回的哈希值,也可以通过标准输入读取它,如下所示var …

c# command-prompt git-config windows-process git-bash

5
推荐指数
0
解决办法
3157
查看次数

我可以在 git config 中设置推送选项(git push -o "...")吗?

Git 2.10 引入了 git Push 选项( git push -o "my string")。

许多命令行选项都是可配置的,我想知道是否也可以这样做。我无法在git-config中找到它,但也许我忽略了它。

那么,是否可以添加一组(一组)默认推送选项,以...

git push -o "r=joh.doe"
Run Code Online (Sandbox Code Playgroud)

...运行时的默认值...

git push
Run Code Online (Sandbox Code Playgroud)

上下文: 我将其与 Gerrit 一起使用,直接将更改分配给审阅者(参考文档- 使用兼容语法<push-ref>%my_string)。当上传许多更改并结对审查彼此的代码时,如果我可以在推送时将该人添加为审查者,那将会很有用。

git git-push git-config gerrit

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

在哪里可以找到 git 的所有颜色选项?

我想自定义我的 git 颜色输出。

  1. 在哪里可以找到可以指定颜色的所有选项的列表?

  2. 在哪里可以找到可以设置选项的所有颜色和修饰符?

例如,我在哪里可以找到完整的选项列表,例如:

color.ui
color.branch.current
color.branch.upstream
color.diff.new
color.diff.newMovedAlternative
color.diff-highlight.oldNormal
color.grep.match
color.interactive.help
color.status.untracked
Run Code Online (Sandbox Code Playgroud)

以及颜色和修饰符列表,例如:

blue green red
bold dim blink strike no-bold
Run Code Online (Sandbox Code Playgroud)

git git-config

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

将 git config core.ignorecase 设置为 false 是个好主意吗?

我的团队目前管理跨多个文件系统的 git 存储库。我们大多数人使用 Windows,但也有一些人使用 Linux。另外,我们将生产代码部署在 Linux 服务器上。这导致了我们的代码库中文件名大小写的多个问题(即,Foo.js当文件实际上是 时导入foo.js)。最近,我完成了对项目文件夹的清理,主要包括重新组织目录并将目录/文件重命名为通用命名标准。许多文件名更改都改变了文件的大小写(例如foo.js-> Foo.js)。

\n\n

当我进行这些更改时,我并没有完全意识到 git 在区分大小写和不区分大小写的文件系统上如何以不同的方式处理文件名,这导致了很多奇怪的错误。我在研究这个问题时遇到的一件事ignorecase.gitconfig.

\n\n

来自 git-config 文档:

\n\n
\n

内部变量,它支持各种解决方法,使 Git 能够在不区分大小写的文件系统上更好地工作,例如 APFS、HFS+、FAT、NTFS 等。例如,如果目录列表在 Git 时找到“makefile”如果需要“Makefile”,Git 会假设它确实是同一个文件,并继续将其记住为“Makefile”。

\n\n

\xe2\x80\xa6

\n\n

Git 依赖于您的操作系统和文件系统对此变量的正确配置。修改此值可能会导致\n 意外行为。

\n
\n\n

据我所知,设置ignorecase = true将使得如果 git 检测到相同的文件名但大小写不同,它将更改 git 索引中的名称以匹配文件系统上的名称(即,如果 Windows hasfoo.js和 git checkout/pull has Foo.js,它会假设这foo.js是正确的,并且 git 将使用该大小写)。我担心的是,如果我推送到远程并且我们的部署服务器接收到更改会发生什么。然后它将尝试导入Foo.js不存在的内容并出错。

\n\n

但是,通过设置ignorecase = false,git 应该能够检测到文件名存在差异并正确替换文件。这是正确的吗?因为我们跨不同的文件系统工作,我是否应该让我的团队将此值设置为 false?

\n\n

我读过一些帖子,人们说你绝对应该这样做,而有些帖子的说法恰恰相反。 …

filesystems git case-sensitive ignore-case git-config

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

接受主分支名称和主分支名称的 git 别名?

我从事几个项目,其中一些具有main默认master分支。我无法用一个或其他名称重命名所有项目,因为并非所有项目都由我管理。我知道.gitconfig别名系统非常广泛,所以我想知道是否有一种方法可以接受涉及的每个命令的两个名称。到目前为止,我只找到了这个,但它涉及修改每个单独的命令,并且使用!sh -c它不是很“漂亮”。理想的情况是还测试两个分支是否确实存在于存储库中以避免错误。
我尝试master = main在 .gitconfig[alias]部分的开头添加,但无论哪种方式都不起作用。

git git-config

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

我应该使用的正确 core.autocrlf 设置是什么?

理论上来说,在 Windows 机器上工作时,人们应该使用core.autocrlfset 为 true。

我的 Windows 机器 git 配置设置是core.autocrlf=true

然而,当我克隆 gitlab 存储库时,我可以看到一些 sh ​​文件的行已在\r.

(我通过这样做来做到这一点cat -A thefile.sh)。

当我将这些文件复制到 Linux 环境并尝试运行它们时,这会产生各种问题。

作为参考,我在 Linux 机器(未设置该配置)中克隆了相同的 gitlab 存储库,并且 sh 文件\r中没有。

我的问题是,我该如何解决这个问题?

设置core.autocrlf输入并再次克隆存储库会有帮助吗?这些是什么时候\r引入的?

git clone newline git-config

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

如何处理未跟踪的文件并提高 git status 性能

我目前在 Mac 上。

\n

在 Git 2.35.1 中,当我克隆存储库时,需要 7 秒来枚举未跟踪的文件,而当我这样做时time git status,大约需要 2 秒。\n而且,当我签出到其他分支时,大约需要 15 秒,而当我签出时,大约需要 15 秒。返回我的主仓库git status花了 15 秒(不应该花这么多时间)。

\n

(2.35.1) 中的解决方法是:\n我设置core.untrackedCache=trueGIT_FORCE_UNTRACKED_CACHE=1\n这有助于更新未跟踪的缓存并提高git status大多数 Stack Overflow 答案中提到的性能(大约 4 秒)。\n stack-溢出问题

\n

但现在在 Git 2.36.1 中,这种解决方法似乎不起作用。所有分支大约需要 20 秒。

\n

代码中可能的更改:

\n

在 Git 2.35.1 中,代码如下dir.c

\n
if (dir->untracked) {\n        static int force_untracked_cache = -1;\n\n        if (force_untracked_cache < 0)\n            force_untracked_cache =\n                git_env_bool("GIT_FORCE_UNTRACKED_CACHE", 0);\n        if (force_untracked_cache &&\n            dir->untracked …
Run Code Online (Sandbox Code Playgroud)

git git-config

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

git 配置 `branch.&lt;name&gt;.fetch` 曾经存在吗?

第一个示例1branch.<name>.fetch中提到了Git配置:git-fetch

  • 更新远程跟踪分支:

    $ git fetch origin
    
    Run Code Online (Sandbox Code Playgroud)

    上面的命令从远程 refs/heads/ 命名空间复制所有分支并将它们存储到本地 refs/remotes/origin/ 命名空间,除非使用branch..fetch 选项指定非默认的 refspec。

git-config但我在s doc中找不到它的文档。曾经branch.<name>.fetch存在过吗?

git-config在的文档中搜索以 开头branch.或结尾的配置.fetch,似乎branch.<name>.fetch是 的拼写错误remote.<name>.fetch

1此示例是在 2009 年的提交 d504f69中添加的。

git git-config git-fetch

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

移动目录以进行便携式git配置

我已经在我的闪存驱动器上安装了便携式git版本,但我不希望我的存储库与程序位于同一目录中.我可以使用以下命令到达目录:

$ git -- git-dir=../Gits --work-tree=..Gits
Run Code Online (Sandbox Code Playgroud)

但我不想每次都输入.所以,我在发现这篇文章gitconfig文件.但它只显示如何设置core.worktree

core.worktree

设置工作树根目录的路径.这可以通过GIT_WORK_TREE环境变量和--work-tree命令行选项覆盖.它可以是.git目录的绝对路径或相对路径,由--git-dir或GIT_DIR指定,或自动发现.如果指定了--git-dir或GIT_DIR但未指定--work-tree,GIT_WORK_TREE和core.worktree,则将当前工作目录视为工作树的根.

请注意,即使在目录的".git"子目录中的配置文件中设置此变量,并且其值与后一目录不同(例如"/path/to/.git/config"已设置core.worktree),此变量也会受到尊重. to"/ different/path"),这很可能是一个配置错误.在"/ path/to"目录中运行git命令仍将使用"/ different/path"作为工作树的根目录,并且可能会对用户造成很大的混淆.

我试过这些设置无济于事.

[core]
  worktree = ../Gits
  gitdir = ../Gits
Run Code Online (Sandbox Code Playgroud)

有没有人知道为Windows 设置PortableGit-1.7.0.2-preview20100309.7zgit-dirwork-tree目录的方法所以我不必一直输入?

还有一种方法可以添加密码,所以我不必在其中输入密码吗?我看到了这些说明,但便携版本显然没有~/.profile~/.bashrc文件.

windows git github git-config

4
推荐指数
1
解决办法
6586
查看次数

每个分支使用gitconfig

我们公司使用许多定制的开源项目。每当我向上游分支机构捐款时,我都会更改为使用我的个人电子邮件地址/名称。有什么办法让每个分支都有gitconfig吗?

例如我想要的是

[remote 'gerrit']
name = 'Personal Name'

[branch 'origin']
name = 'Name in company'
Run Code Online (Sandbox Code Playgroud)

git git-config

4
推荐指数
2
解决办法
354
查看次数