是否可以使用 .ssh/config 中的 IdentityFile 指令指定转发的密钥?
我在我们的生产服务器上尝试通过 Capistrano/GIT 部署一些代码时遇到了这个怪癖。我的个人和我的工作 GIT 密钥总是加载在我的 SSH 代理中,而且碰巧我的个人密钥首先添加到代理中。我在使用 Capistrano 部署时使用代理转发,因此当主机尝试对 `git pull` 操作进行身份验证时,它失败并出现以下错误:
错误:对“您的用户”的“某些回购”的权限被拒绝。
因为它在尝试适当的密钥(稍后在 ssh 代理中提供)之前尝试使用我的个人 git 密钥进行身份验证,并假设我正在访问一个我无权访问的外部存储库。我可以让我的个人用户访问每个工作仓库,但在我的本地机器上,我可以通过在 .ssh/config 中定义自定义域来解决这个问题,如下所示:
主机个人.github.com主机
名github.com
用户git
IdentityFile ~/.ssh/some_key
主机work.github.com
主机名github.com
用户git
IdentityFile ~/.ssh/some_other_key
这样 git 永远不会混淆。是否可以为我的生产设备上的转发密钥创建 .ssh/config 规则,以便他们在拉入新代码时始终知道使用哪个密钥?基本上我希望能够做到:
主机work.github.com
主机名github.com
用户git
IdentityFile some_forwarded_key
谢谢!
如何从git树中删除文件而不删除它?
git add一个未跟踪的文件很容易在下一次提交时包含它,但是我不知道如何删除该文件以使其再次被另一个提交“取消跟踪”。
使用一段时间后(几年?),etckeeper +git 不符合我寻求的要求。
我想要类似 etckeeper的文件系统元数据控制,用于非/etc、git 控制的目录。Home 和 web-app 目录等通常对元数据(文件所有权、ACL、权限)敏感。这对于使用 git 进行自动化服务器部署(以及诸如Fabric 之类的工具)非常有用/重要。我想在上述目录上重新使用类似 etckeeper 的功能,无论是使用 etckeeper 本身还是其他东西。
任何人都可以提出任何提示/技巧/工作解决方案来提供以下一项或两项:
使用文件系统元数据控制功能扩展 git 的兴趣越来越大。根据我的经验,etckeeper 的元数据“引擎”似乎非常强大和可靠,而且etckeeper 似乎也很受其他人的欢迎。 Metastore至少部分是由于Metastore 的非基于文本/不友好的挑战。此外,etckeeper 似乎是从基于 Metastore 的核心开始的,但后来转向了自己的(推测性的?)。
显然,这具有特定于操作系统/文件系统的依赖性。(例如,不要尝试在 Windows 上自动部署。)建议一个可选的git 的扩展(如果它是“本机扩展”),由用户按需启用,了解跨平台损坏的后果,这样本机行为不会破坏 git 的“默认”跨平台友好性。此外,不需要保存奢侈的 unix/darwin/etc 元数据(如 ACL);基本的用户/组/其他权限和用户/组所有权就可以了。(这些是目前唯一破坏我的“安全/漏洞控制/政策”的东西。)我预先瞄准的特定操作系统:Debian、Ubuntu、MacOS …
我刚开始在 Windows 上使用 Git,我有一个小问题。当我git commit和一条消息一起说时,我意识到 git 提交了文件。但是它究竟在哪里存储提交的文件?
假设我进行了一些更改,并希望使用 Git GUI 恢复到我的第三次提交。我该怎么做?
我有一台四核 MacBook Pro(总共 8 个线程),每周一次我被迫等待大约 5-7 分钟,而整个系统实际上变得没有响应。多任务目前基本不可用。
git 告诉我它正在使用 8 个线程。我如何告诉它使用更少?
我打算去一个互联网连接很差的国家,我希望在那里做一些软件开发。
我一直在使用repo sync同步 Android 源(以及我的 AWS 服务器上的 CyanogenMod 源)。但是它们太大了(> 30 GB),以至于我在离开我的国家之前不会得到它们。
有什么办法可以从树中排除代码吗?我只需要 Nexus 7 (wifi) (grouper) 设备。我可以排除任何项目吗?如果是这样,如何?
我正在使用 Ubuntu 12.04 和 repo。
(我正在使用 Android 平板电脑来教育世界上非常贫穷的地区的孩子。我想锁定 UI,让孩子们只能使用教育应用程序。作为防盗措施,我需要启用创作Wi-Fi 热点,并让平板电脑在 48 小时内未通过 Wi-Fi 连接到其他平板电脑时自行禁用。)
在一个 repo 中,我有多个分支,其中包括“master”和“develop”,它们被设置为跟踪远程分支“origin/master”和“origin/develop”。
是否可以指定我希望 master 和 develop 一次合并(快进)?
当我git pull现在这样做时,我会得到这样的东西:
remote: Counting objects: 92, done.
remote: Compressing objects: 100% (56/56), done.
remote: Total 70 (delta 29), reused 28 (delta 8)
Unpacking objects: 100% (70/70), done.
From scm.my-site.com:my-repo
5386563..902fb45 develop -> origin/develop
d637d67..ba81fb2 master -> origin/master
Updating 5386563..902fb45
Fast-forward
Run Code Online (Sandbox Code Playgroud)
获取所有远程分支,但只有我当前所在的分支与其对应的远程分支合并。
所以我必须做git checkout master...
Switched to branch 'master'
Your branch is behind 'origin/master' by 106 commits, and can be fast-forwarded.
Run Code Online (Sandbox Code Playgroud)
...然后git pull再次,然后切换回开发,以获得所需的结果。
我知道我可以制作执行这些步骤的别名/脚本。但我想尽可能避免这种情况,因为它容易出错且效率不高。
编辑:好的,让我改写一下。我的目标不是阻止或反对 …
当我尝试使用刚刚通过自制软件安装的最新版本的 git 时,我遇到了一个非常奇怪的问题。which git将我指向自制软件安装,但调用git返回与 OS X 一起安装的原始版本。
我首先检查以查看我使用的原始版本。
[user@home ~]$ git --version
git version 1.8.5.2 (Apple Git-48)
Run Code Online (Sandbox Code Playgroud)
然后我去自制软件安装最新版本。
[user@home ~]$ brew install git
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/git-2.0.0.mavericks.bottle.2.tar.gz
######################################################################## 100.0%
==> Pouring git-2.0.0.mavericks.bottle.2.tar.gz
==> Caveats
The OS X keychain credential helper has been installed to:
/usr/local/bin/git-credential-osxkeychain
The 'contrib' directory has been installed to:
/usr/local/share/git-core/contrib
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completion has been installed to:
/usr/local/share/zsh/site-functions
==> Summary
/usr/local/Cellar/git/2.0.0: 1324 files, 31M
Run Code Online (Sandbox Code Playgroud)
看起来它奏效了!检查它是否指向正确的 git
[user@home ~]$ …Run Code Online (Sandbox Code Playgroud) 我在 ubuntu 13.10 和 12.10 中遇到了一个问题,尝试连接到 github(git clone / pull / push 或任何东西)会失败并且没有输出。
我检查了我的 /.ssh 目录config和任何 ssh 密钥。没有配置文件,并且 ssh 密钥id_rsa与我的 github.com 帐户上的相同。
我尝试 ping github 服务器并且也可以。
我按照 github 指南来调试情况 - 它建议
ssh -T -v git@github.com
Run Code Online (Sandbox Code Playgroud)
输出停止在:
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
Run Code Online (Sandbox Code Playgroud)
任何人都有一个解决方案可以让我的 git pull / push 等工作。
我在 Atom 中看到了这个很酷的功能,在左下角 Git 状态是显示器(例如哪个分支,更改了多少文件等),并且在侧边栏中创建但未添加和更改的文件以绿色和黄色显示颜色。
有没有办法在 Sublime Text 3 中实现这样的目标?
git ×10
ssh ×2
android ×1
atom-editor ×1
deployment ×1
download ×1
filesystems ×1
github ×1
homebrew ×1
linux ×1
macos ×1
metadata ×1
openssh ×1
path ×1
ssh-agent ×1