标签: git

在使用 AgentForwarding 时在 ssh_config 中使用 IdentityFile 指令

是否可以使用 .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

谢谢!

ssh git deployment ssh-agent

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

从 git 版本控制中删除文件而不从文件系统中删除它

如何从git树中删除文件而不删除它?

git add一个未跟踪的文件很容易在下一次提交时包含它,但是我不知道如何删除该文件以使其再次被另一个提交“取消跟踪”。

git

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

如何重用/扩展 etckeeper 的元数据引擎来控制非 /etc 文件系统,或使用上述功能在本地扩展 git?

更新:2020-09-22

使用一段时间后(几年?),etckeeper +git 不符合我寻求的要求。

概述 + 问题

我想要类似 etckeeper的文件系统元数据控制,用于非/etc、git 控制的目录。Home 和 web-app 目录等通常对元数据(文件所有权、ACL、权限)敏感。这对于使用 git 进行自动化服务器部署(以及诸如Fabric 之类的工具)非常有用/重要。我想在上述目录上重新使用类似 etckeeper 的功能,无论是使用 etckeeper 本身还是其他东西。

任何人都可以提出任何提示/技巧/工作解决方案来提供以下一项或两项:

  1. 将 etckeeper 引擎(只关心 etckeeper 的 git 特定功能)应用于非 /etc、git 控制的目录。(至少可以假设 Debian/Ubuntu Linux;如果可能,希望 MacOSX/自制软件支持。)
  2. 使用元数据支持扩展 git(超越过度简化的东西,如git-cache-meta)以支持类似 etckeeper 的功能或更好?

更多细节,背景

使用文件系统元数据控制功能扩展 git 的兴趣越来越大。根据我的经验,etckeeper 的元数据“引擎”似乎非常强大和可靠,而且etckeeper 似乎也很受其他人的欢迎Metastore至少部分是由于Metastore 的非基于文本/不友好的挑战。此外,etckeeper 似乎是从基于 Metastore 的核心开始的,但后来转向了自己的(推测性的?)。

显然,这具有特定于操作系统/文件系统的依赖性。(例如,不要尝试在 Windows 上自动部署。)建议一个可选的git 的扩展(如果它是“本机扩展”),由用户按需启用,了解跨平台损坏的后果,这样本机行为不会破坏 git 的“默认”跨平台友好性。此外,不需要保存奢侈的 unix/darwin/etc 元数据(如 ACL);基本的用户/组/其他权限和用户/组所有权就可以了。(这些是目前唯一破坏我的“安全/漏洞控制/政策”的东西。)我预先瞄准的特定操作系统:Debian、Ubuntu、MacOS …

linux metadata filesystems git

17
推荐指数
1
解决办法
2980
查看次数

如何恢复到 Git 提交?

我刚开始在 Windows 上使用 Git,我有一个小问题。当我git commit和一条消息一起说时,我意识到 git 提交了文件。但是它究竟在哪里存储提交的文件?

假设我进行了一些更改,并希望使用 Git GUI 恢复到我的第三次提交。我该怎么做?

git

17
推荐指数
2
解决办法
16万
查看次数

压缩时如何告诉 git 使用更少的内核/线程?

我有一台四核 MacBook Pro(总共 8 个线程),每周一次我被迫等待大约 5-7 分钟,而整个系统实际上变得没有响应。多任务目前基本不可用。

git 告诉我它正在使用 8 个线程。我如何告诉它使用更少?

git

17
推荐指数
1
解决办法
7521
查看次数

如何使用“repo sync”限制需要下载的 Android 源的大小?

我打算去一个互联网连接很差的国家,我希望在那里做一些软件开发。

我一直在使用repo sync同步 Android 源(以及我的 AWS 服务器上的 CyanogenMod 源)。但是它们太大了(> 30 GB),以至于我在离开我的国家之前不会得到它们。

有什么办法可以从树中排除代码吗?我只需要 Nexus 7 (wifi) (grouper) 设备。我可以排除任何项目吗?如果是这样,如何?

我正在使用 Ubuntu 12.04 和 repo。

(我正在使用 Android 平板电脑来教育世界上非常贫穷的地区的孩子。我想锁定 UI,让孩子们只能使用教育应用程序。作为防盗措施,我需要启用创作Wi-Fi 热点,并让平板电脑在 48 小时内未通过 Wi-Fi 连接到其他平板电脑时自行禁用。)

android download git

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

如何使用git一次拉入多个分支?

在一个 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

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

不能使用自制软件安装的 git

当我尝试使用刚刚通过自制软件安装的最新版本的 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)

path git homebrew osx-mavericks macos

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

git pull 什么都不做 / git push 只是挂起 / debug1: 期待 SSH2_MSG_KEX_ECDH_REPLY

我在 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 等工作。

ssh git openssh github

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

我可以在 Sublime Text 3 的侧边栏中以某种方式显示 git 文件状态吗?

我在 Atom 中看到了这个很酷的功能,在左下角 Git 状态是显示器(例如哪个分支,更改了多少文件等),并且在侧边栏中创建但未添加和更改的文件以绿色和黄色显示颜色。

有没有办法在 Sublime Text 3 中实现这样的目标?

git user-interface sublime-text-3 atom-editor

16
推荐指数
1
解决办法
9127
查看次数