标签: git

如何在`.gitconfig`中设置多个`core.excludesfile`?

我同步~/.gitconfig,并~/.gitignore通过使用Dropbox和符号链接创建为它在Ubuntu和Mac文件。

并且excludesfile是这样声明的。

[core]
        editor = /usr/bin/vim
        excludesfile = /Users/username/.gitignore
Run Code Online (Sandbox Code Playgroud)

问题是主目录因操作系统而异,因此我需要对 excludesfile 进行多个设置。

可以定义多个core.excludesfile吗?

git

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

命令行方法或以编程方式将 ssh 密钥添加到 github.com 用户帐户

有没有办法用用户名和密码来识别 github.com 服务器,以便向 github 用户帐户添加 ssh 密钥?到目前为止,我读过的所有内容都表明必须通过 Web GUI 添加用户的 ssh 密钥。我正在寻找通过命令行界面或 bash/ansible/something 脚本添加密钥的方法或过程。

ssh terminal git github

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

基于正则表达式仅显示差异/补丁的相关块

git log -G<regex> -p是一个很好的工具,可以在代码库的历史记录中搜索与指定模式匹配的更改。然而,在几乎不相关的大块海洋中找到差异/补丁输出中的相关大块可能会让人不知所措。

当然可以搜索git log原始字符串/正则表达式的输出,但这对减少许多不相关更改的视觉噪音和干扰几乎没有作用。

继续阅读git log,我看到了--pickaxe-all,这与我想要的完全相反:它扩大了输出(到整个变更集),而我想限制它(到特定的大块)。

本质上,我正在寻找一种方法来“智能地”将差异/补丁解析为单个大块,然后对每个大块执行搜索(仅针对更改的行),丢弃不匹配的大块,并输出那些大块那做。

是否存在我描述的工具?有没有更好的方法来获得匹配/受影响的帅哥?

我做过的一些初步研究......

  • 如果可以grep使用 diff/patch 输出并使上下文选项值动态化(例如,通过正则表达式而不是行数),那可能就足够了。但grep并非完全按照这种方式构建(我也不一定要求该功能)。

  • 我找到了patchutils套件,最初听起来它可能适合我的需求。但是在阅读其man页面后,这些工具似乎无法处理基于正则表达式的匹配块。(不过,他们可以接受帅哥的名单……)

  • 我终于遇到了splitpatch.rb,它似乎可以很好地处理补丁的解析,但它需要显着增强以通过 处理读取补丁stdin,匹配所需的大块,然后输出大块。

diff patch git

21
推荐指数
1
解决办法
3807
查看次数

git中的`Commit hash`、`Parent Hash`和`Tree hash`有什么区别?

今天我通过在线阅读这个文档来学习一些基本的 git 知识:

http://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-Hi

在那一章,我开始学习使用我喜欢的git log --pretty=format:" "方式显示日志信息。

但是有些方法,我在格式表中看到了两个类似的选项,%Hfor Commit Hash%PforParent Hash%Tfor Tree Hash

我在命令行上对它们进行了试验,结果它们都是具有不同值的相同长度的哈希值。

我用谷歌搜索和计算器溢出,到目前为止没有明显的提示。

我对此有想法Hash value,它是该 git commit 的校验和。

但是做什么Parent HashTree hash做什么?

  • PS:啊,我现在有了一些想法,Parent Hash意思是分支直接起源的哈希值吗?

git

20
推荐指数
3
解决办法
2万
查看次数

记住一段时间的 ssh 密钥密码

我创建了 ssh 密钥。我用它来连接 git 存储库。创建密钥时,我注意到提示说密码应该很难猜到。因此,我想出了 40 多个字符长的密码。现在,我每次做的时候git clonepush或任何类似的,我需要输入密码(这需要一些时间,尤其是当我不明白它的权利)。

我当然很高兴我享受安全功能;但是,我更喜欢 ssh 密码缓存 5-15 分钟(或任何其他任意数量);有时我在很短的时间内对存储库进行了很多操作,并且输入密码花费了太多时间。我怎样才能做到这一点?

ssh git

20
推荐指数
1
解决办法
6863
查看次数

使用 git 获取特定分支

我想使用 git从master-next 分支下载源代码,如Xilinx wiki 中所述

我试过这个:

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git

Initialized empty Git repository in /home/Hannan/master-next/.git/
fatal: remote error:
Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name
Email support@github.com for help
Run Code Online (Sandbox Code Playgroud)

即使这失败了:

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git
Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/
fatal: remote error:
Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name
Email support@github.com for help
Run Code Online (Sandbox Code Playgroud)

有效的命令是:

 git clone git://github.com/Xilinx/u-boot-xlnx.git
Run Code Online (Sandbox Code Playgroud)

但是我怎么知道这确实会获取master-next 分支而不是master 分支?如何使用 git 正确获取特定分支?

我正在使用 RHEL 6,通过 PuTTY 访问。

git github

19
推荐指数
2
解决办法
12万
查看次数

使用 git 来管理 /etc?

我正在考虑一个系统,在/etc远程 git 存储库中跟踪的位置。我正在考虑 git 工作流程,其中每个主机都有一个不同的分支。

每台机器上的每个以前的版本都可以轻松跟踪、比较和合并。

如果/etc必须在多台机器上提交修改,则可以通过一些合并脚本轻松完成。

如果发生“不需要的”/etc更改,这可能很明显(甚至可以调整警报脚本以查看)。

有人用过这样的配置吗?它有任何安全问题吗?

configuration git

19
推荐指数
2
解决办法
6544
查看次数

watch 命令不显示“git status”的颜色

我试图watch从“git status”中显示颜色。

我已经尝试使用该--color选项运行 watch ,正如此处其他地方所建议的那样,但仍然watch --color 'git status'不显示颜色。

colors git watch

18
推荐指数
1
解决办法
3728
查看次数

我该如何解决这个 ssh-agent 问题?

我正在使用 Linux Mint,并且似乎无法在登录时自动解锁 gnome-keyring。

我的问题的一个症状如下:

$ ssh-add
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

$ git pull
WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-Nmf3J3/pkcs11: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我怎样才能让 git 可以在没有我输入任何密码的情况下推/拉?

我意识到 gnome-keyring 和 ssh-agent 有几件事情,但一直无法确定。

ssh-add在会话期间运行意味着不再要求我提供 SSH/git 的密码。

问题是我需要ssh-add在每个会话期间运行- 我一定错过了如何在登录时解锁 Gnome 的钥匙圈。

$ export | grep GNOME          
GNOME_KEYRING_CONTROL=/tmp/keyring-hjMM4V
GNOME_KEYRING_PID=1961
Run Code Online (Sandbox Code Playgroud)

它在与第一次编辑相同的会话期间再次发生。我做了git pull并得到了WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-hjMM4V/pkcs11: No such file or directory

$ env | grep SSH
SSH_AGENT_PID=2116
SSH_AUTH_SOCK=/tmp/ssh-OACxJMBY2038/agent.2038

$ ps -fp $SSH_AGENT_PID
UID        PID  PPID …
Run Code Online (Sandbox Code Playgroud)

ssh git gnome-keyring ssh-agent

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

Git 寻呼机较少,但是是什么导致输出着色?

less根据这个线程,它本身不能进行语法高亮显示。

但是,git diff在它的默认寻呼机 less 中很好地显示了彩色输出。当我将 的输出重定向git diff到文件中时,看不到颜色转义序列。

是否git diff知道它被发送到哪里,并相应地格式化输出?那怎么办呢?


我只是注意到 git 为diff输出着色(例如git diff),但是,它通常不知道如何语法突出显示。例如

git show 415fec6:log.tex
Run Code Online (Sandbox Code Playgroud)

不启用任何类似 TeX 的语法。


阅读git资料,我发现以下提示

diff.h

int use_color;
Run Code Online (Sandbox Code Playgroud)

我以前指的是语法高亮,但那是不正确的。我的意思是输出着色,参见例如

示例颜色输出

colors pager diff git colordiff

18
推荐指数
2
解决办法
5725
查看次数

标签 统计

git ×10

ssh ×3

colors ×2

diff ×2

github ×2

colordiff ×1

configuration ×1

gnome-keyring ×1

pager ×1

patch ×1

ssh-agent ×1

terminal ×1

watch ×1