Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在.gitconfig中包含一个文件_Git_Github - Fatal编程技术网

是否可以在.gitconfig中包含一个文件

是否可以在.gitconfig中包含一个文件,git,github,Git,Github,我想在我的.gitconfig中包含一个具有github设置的文件-这可能吗 我可以这样做吗: [core] include = /path/to/file 2012年更新: 请参阅: 包括 通过将特殊的include.path变量设置为要包含的文件名,可以从另一个配置文件中包含一个配置文件。 包含的文件会立即展开,就好像在include指令的位置找到了它的内容一样。 如果include.path变量的值是相对路径,则该路径被视为相对于在其中找到include指令的配置文件。 incl

我想在我的.gitconfig中包含一个具有github设置的文件-这可能吗

我可以这样做吗:

[core]
    include = /path/to/file
2012年更新:

请参阅:

包括 通过将特殊的
include.path
变量设置为要包含的文件名,可以从另一个配置文件中包含一个配置文件。
包含的文件会立即展开,就好像在include指令的位置找到了它的内容一样。
如果
include.path
变量的值是相对路径,则该路径被视为相对于在其中找到include指令的配置文件。
include.path
的值需要波浪式展开:
~/
展开为
$HOME
的值,而
~user/
展开为指定用户的主目录


我不这么认为

我宁愿把这个设置放在

用户特定的配置文件。也称为“全局”配置文件

这样,它就完成了特定于.gitconfig项目的文件,而不会在推送到GitHub时发布。有关全局配置文件的更多信息,请参见此部分。
Git有


在评论中添加:

看来每个人都没有抓住这个问题的重点。
David显然想把所有的点文件(
bashrc
gemrc
,等等)包括他的
.gitconfig
,都推到repo上,这样他就可以在所有的机器上设置所有的设置了。
通过包含和忽略私有条目来推送
.gitconfig
文件的一种方法是他(以及我)所追求的

一种可能的方法是使用A对一个包含私有敏感信息的文件进行解密/加密(请参阅),以便使用与该文件相关的解密部分完成像~/.gitconfig这样的本地文件

这样,您就可以拥有一个包含所有点文件的Git repo,再加上一个包含加密信息的文件,这些信息将被解密并添加到所述点文件中

.gittributes
(或
.git/info/a..
)中,使用:

在repo.config文件中:

[filter "gpg"]
smudge = gpg -d -q --batch --no-tty
clean = gpg -ea -q --batch --no-tty -r C920A124
[diff "gpg"]
textconv = decrypt
(a意味着,当然,您已经通过另一种方式将您的私钥/公钥传送到目标计算机上,您希望通过克隆此特殊repo恢复所有的点文件)

实际上,在您的情况下,需要完成涂抹脚本,因为它必须在解密该文件后,继续将相关部分添加到全局
~/.gitconfig
文件(除非)或其他点文件中

(gpg不便将在中进一步讨论)
(这与完全加密的Git回购不同,因为)

我相信您可以使用。这是git命令的包装器,它允许您拥有
GITHUB\u用户
GITHUB\u令牌
环境变量。这将覆盖本地
.gitconfig
文件中的设置

然后,为了使其无缝连接,您在用户界面中指向别名为
alias git=hub
的用户。然后,您应该能够获取一个本地文件,在其中设置环境变量,并将存储库与您的所有私人信息一起推送到公共世界

**注意:对于OSX上的自制用户,您可以通过
brew install hub

Git(1.7.10+)安装该工具。现在,此语法在
.gitconfig
中:

[include]
    path = /path/to/file
有关git更改及其边缘情况的详细说明,请参见

顺便说一下,有几个微妙之处值得指出:

  • 不支持环境变量扩展,例如
    $HOME
    。(Git 1.7.10.2中出现了
    ~
    的扩展。)

  • 如果指定了相对路径,则该路径相对于包含
    [include]
    语句的.gitconfig文件。即使是跨链接的包含也可以正常工作,例如,
    ~/.gitconfig
    可以有:

    [include]
        path = subdir/gitconfig
    
    [include]
        path = nested_subdir/gitconfig
    
    subdir/gitconfig
    可以有:

    [include]
        path = subdir/gitconfig
    
    [include]
        path = nested_subdir/gitconfig
    
    。。。这将导致加载
    subdir/nested_subdir/gitconfig

  • 如果git找不到目标文件,它会自动忽略错误。这似乎是故意的


  • 您可以从命令行加载它:

    $ git config --local include.path "/path/to/.gitconfig"
    
    如果要从当前目录加载文件,请改用“$PWD”/.gitconfig”

    运行上述命令后,以下行将添加到
    .git/config
    文件中:

    [include]
            path = /path/to/.gitconfig
    

    我想在git存储库中发布我的basic.gitconfig文件,但我不想在其中包含github详细信息,因此我希望以某种方式从外部文件中包含它们。“我不想在其中包含github详细信息,因此我希望以某种方式从外部文件中包含它们”:这正是全局配置文件的用途。有任何理由不在您的案例中使用它吗?是的,因为我想在git存储库中发布.gitconfig,并且我不想有人窃取我的github凭据。我不明白您的意思:您的常规gitconfig文件将发布到github,但不包含任何github设置。为什么?因为它们将位于全局配置文件(
    ~/.gitconfig
    )中,即不会推送到github repo。当您键入“
    git config
    ”时,您看到的是3个配置文件(repo、global和system)的串联。只有repo配置文件被推送。另外两个留在本地。看起来每个人都没有抓住这个问题的重点。显然,David希望对他的所有点文件(bashrc、gemrc等)进行回购,包括他的.gitconfig,这样他就可以在所有机器上进行所有设置。通过包含和忽略私有条目来推送.gitconfig文件的一部分的方法就是他(和我)after@bjeanes:正是!我还没有找到一个方法来做这件事。实际上你不需要
    ~
    。这是因为.gitconfig文件仍然必须驻留在
    ~/.gi中