我同步~/.gitconfig,并~/.gitignore通过使用Dropbox和符号链接创建为它在Ubuntu和Mac文件。
并且excludesfile是这样声明的。
[core]
editor = /usr/bin/vim
excludesfile = /Users/username/.gitignore
Run Code Online (Sandbox Code Playgroud)
问题是主目录因操作系统而异,因此我需要对 excludesfile 进行多个设置。
可以定义多个core.excludesfile吗?
有没有办法用用户名和密码来识别 github.com 服务器,以便向 github 用户帐户添加 ssh 密钥?到目前为止,我读过的所有内容都表明必须通过 Web GUI 添加用户的 ssh 密钥。我正在寻找通过命令行界面或 bash/ansible/something 脚本添加密钥的方法或过程。
git log -G<regex> -p是一个很好的工具,可以在代码库的历史记录中搜索与指定模式匹配的更改。然而,在几乎不相关的大块海洋中找到差异/补丁输出中的相关大块可能会让人不知所措。
当然可以搜索git log原始字符串/正则表达式的输出,但这对减少许多不相关更改的视觉噪音和干扰几乎没有作用。
继续阅读git log,我看到了--pickaxe-all,这与我想要的完全相反:它扩大了输出(到整个变更集),而我想限制它(到特定的大块)。
本质上,我正在寻找一种方法来“智能地”将差异/补丁解析为单个大块,然后对每个大块执行搜索(仅针对更改的行),丢弃不匹配的大块,并输出那些大块那做。
是否存在我描述的工具?有没有更好的方法来获得匹配/受影响的帅哥?
我做过的一些初步研究......
如果可以grep使用 diff/patch 输出并使上下文选项值动态化(例如,通过正则表达式而不是行数),那可能就足够了。但grep并非完全按照这种方式构建(我也不一定要求该功能)。
我找到了patchutils套件,最初听起来它可能适合我的需求。但是在阅读其man页面后,这些工具似乎无法处理基于正则表达式的匹配块。(不过,他们可以接受帅哥的名单……)
我终于遇到了splitpatch.rb,它似乎可以很好地处理补丁的解析,但它需要显着增强以通过 处理读取补丁stdin,匹配所需的大块,然后输出大块。
今天我通过在线阅读这个文档来学习一些基本的 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 Hash和Tree hash做什么?
Parent Hash意思是分支直接起源的哈希值吗?我创建了 ssh 密钥。我用它来连接 git 存储库。创建密钥时,我注意到提示说密码应该很难猜到。因此,我想出了 40 多个字符长的密码。现在,我每次做的时候git clone,push或任何类似的,我需要输入密码(这需要一些时间,尤其是当我不明白它的权利)。
我当然很高兴我享受安全功能;但是,我更喜欢 ssh 密码缓存 5-15 分钟(或任何其他任意数量);有时我在很短的时间内对存储库进行了很多操作,并且输入密码花费了太多时间。我怎样才能做到这一点?
我想使用 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 访问。
我正在考虑一个系统,在/etc远程 git 存储库中跟踪的位置。我正在考虑 git 工作流程,其中每个主机都有一个不同的分支。
每台机器上的每个以前的版本都可以轻松跟踪、比较和合并。
如果/etc必须在多台机器上提交修改,则可以通过一些合并脚本轻松完成。
如果发生“不需要的”/etc更改,这可能很明显(甚至可以调整警报脚本以查看)。
有人用过这样的配置吗?它有任何安全问题吗?
我试图watch从“git status”中显示颜色。
我已经尝试使用该--color选项运行 watch ,正如此处其他地方所建议的那样,但仍然watch --color 'git status'不显示颜色。
我正在使用 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) 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)
我以前指的是语法高亮,但那是不正确的。我的意思是输出着色,参见例如
