标签: git

如何在 git 中的第一次提交时修复元信息?

这是与如何编辑 git 的历史记录以更正不正确的电子邮件地址/名称相关的问题。使用git rebase -i <first commit>, git commit --amend --author "Foo <foo@example.com>", 和git rebase --continue,我能够修复除第一个提交之外的所有提交的日志。如何修复第一次提交?

git

7
推荐指数
1
解决办法
1638
查看次数

致命:http://myserverip/home/git/example.git/info/refs 未找到:您是否在服务器上运行了 git update-server-info?

我按照这个例子在我的服务器上设置了一个 git 存储库。它奏效了,我成功地将push我的代码写入了它。

但是现在,我如何拉取或克隆?

使用文档,我试过

git 克隆 http://REMOTE_SERVER/home/git/example.git

.. 但对我来说,我得到:

致命:http://myserverip/home/git/example.git/info/refs 未找到:您是否在服务器上运行了 git update-server-info?

我运行了 git-update-server info,但没有任何改变

编辑:

啊,等一下。我把它改成了git clone ssh://REMOTE_SERVER/home/git/example.git,我得到了一些东西..它想要我的用户/通行证,但是如何使服务器公开而不需要登录?

clone git

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

如何使用 git 插件为 Hudson 指定 SSH 密钥?

我有 Hudson(持续集成系统)和在 Tomcat Windows 服务上运行的 git 插件。msysgit 已安装,并且 msysgit bin 目录位于路径中。PuTTY/Pageant/plink 已安装,并且 msysgit 已配置为使用它们。

我认为,我遇到的问题是拥有 Tomcat/Hudson 服务(本地系统)的用户没有设置 SSH 密钥来克隆 git 存储库。当 git Hudson 插件尝试克隆时,它给出了错误:

$ git clone -o origin git@hostname:project.git "e:\HUDSON_HOME\jobs\Project Trunk\workspace"
ERROR: Error cloning remote repo 'origin' : Could not clone git@hostname:project.git
ERROR: Cause: Error performing git clone -o origin git@hostname:project.git e:\HUDSON_HOME\jobs\Project Trunk\workspace
Trying next repository
ERROR: Could not clone from a repository
FATAL: Could not clone
hudson.plugins.git.GitException: Could not clone
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何设置以便 git 插件/msysgit 在尝试克隆时知道使用特定的 SSH 私钥?我不认为 Pageant 会起作用,因为 …

ssh git hudson

7
推荐指数
1
解决办法
8176
查看次数

当存储库位于 Windows 文件共享上时,对多个用户使用 git 是否安全?

我们是一个不到十人的团队,需要快速建立一个支持基于活动目录的身份验证的 git 存储库。

最简单的解决方案似乎是使用带有 git 存储库的文件共享并使用 unc 路径访问它,例如

git clone //server/share/repo.git
Run Code Online (Sandbox Code Playgroud)

但是,我们有点担心稳健性。当几个人使用同一个 git 存储库并且没有实际的服务器组件在运行时,并发性是否没有问题?

客户端运行 Windows 7,服务器是 Windows Server 2008R2。使用 msysgit 1.8.1.2

(我很清楚还有很多其他的 git 服务器解决方案,但是,特别是考虑到 AD 身份验证的要求,它们设置起来并不简单)

windows network-share git

7
推荐指数
2
解决办法
5865
查看次数

在 debian(基于系统)上为 git-http-backend 配置 nginx

我在 Ubuntu 13.04 机器上使用 nginx 服务器无法让 git-http-backend 工作。之前在 Debian 7 上试过,但结果相似。基本上我遵循了http://weininger.net/configuration-of-nginx-for-gitweb-and-git-http-backend/但忽略了与 gitweb 相关的任何内容。

我做了以下事情:

使用以下命令安装 nginx、git、git-core 和 fcgiwrap:

apt-get install git git-core nginx fcgiwrap
Run Code Online (Sandbox Code Playgroud)

在 /var/git/test.git 上创建了一个裸仓库,并将其添加到 www-data:

mkdir -p /var/git/test.git
cd /var/git/test.git
git init --bare
git update-server-info
chown -R www-data:www-data /var/git
Run Code Online (Sandbox Code Playgroud)

将 /etc/nginx/sites-enabled/default 替换为

server {
        listen 80;

        server_name localhost;

        location / {
                root /var/git;

                fastcgi_pass unix:/var/run/fcgiwrap.socket;
                fastcgi_param SCRIPT_FILENAME   /usr/lib/git-core/git-http-backend;
                fastcgi_param PATH_INFO         $uri;
                fastcgi_param GIT_PROJECT_ROOT  /var/git;
                fastcgi_param GIT_HTTP_EXPORT_ALL "";
                include /etc/nginx/fastcgi_params;
        }
}
Run Code Online (Sandbox Code Playgroud)

做的时候

GIT_CURL_VERBOSE=1 git clone …
Run Code Online (Sandbox Code Playgroud)

http nginx git

6
推荐指数
1
解决办法
3824
查看次数

将 ssh 限制为本地网络,git 用户除外

我有一个使用 Gitlab 和 OpenVPN 设置的 Ubuntu 12.04 服务器作为我们的 git 和 vpn 服务器。

目前我已经在防火墙中打开了端口 1194 以打开 OpenVPN 并让用户通过 rsa 证书和 google auth 密钥进行身份验证。

我还没有为 SSH 流量打开防火墙,因为我不希望 SSH 完全暴露给 WAN。但是,我们需要能够在不连接到 vpn 的情况下进行推拉。

如何只为有限的 git 用户打开对 WAN 的 ssh 访问,同时允许管理员从 LAN 访问服务器?

我怀疑我应该在 sshd_config 文件中寻找使用匹配组的方向。正如在这个问题中看到的:“我如何设置 OpenSSH 每用户身份验证方法? ”,有人有这方面的经验吗?


编辑:

我最初接受了使用 access.conf 来限制登录访问的答案。但是后来的答案表明,可以通过 match 指令或使用 username@hostaddress 语法在 sshd.conf 中实现相同的目的。

起初我觉得把它放在 sshd 中更直观,而且对于其他管理员来说可能更容易维护和理解。与 sshd.conf 相比,使用 access.conf 有什么强大的优势吗?

如果我要对这里提到的选项的直观程度进行范围划分,我会说: 1. sshd.conf 2. access.conf 3. IpTables

你同意?

ssh git

6
推荐指数
2
解决办法
6120
查看次数

使用远程 powershell 执行 git 命令会导致 NativeCommmandError

执行远程 PowerShell 脚本时出现错误。在我的本地机器上,我正在运行一个 PowerShell 脚本,该脚本Invoke-Command用于cd进入远程 Amazon Windows Server 实例上的目录,然后Invoke-Command执行位于该服务器实例上的脚本。服务器上的脚本正在尝试从 GitHub git clone 存储库。我可以在服务器脚本中成功执行诸如“ls”甚至“git --version”之类的操作。但是git clone,git pull等会导致以下错误:

克隆到 'MyRepo'... + CategoryInfo : NotSpecified: (克隆到 'MyRepo'...:String) [], RemoteException +fullyQualifiedErrorId : NativeCommandError

这是我第一次使用 PowerShell 或 Windows Server。任何人都可以就这个问题提供一些指导。

客户端脚本:

$s = new-pssession -computername $server -credential $user
invoke-command -session $s -scriptblock { cd C:\Repos; ls } 
invoke-command -session $s -scriptblock { param ($repo, $branch) & '.\clone.ps1' -repository $repo -branch $branch} -ArgumentList $repository, $branch
exit-pssession
Run Code Online (Sandbox Code Playgroud)

服务器脚本: …

windows powershell git

6
推荐指数
1
解决办法
8903
查看次数

我希望 Jenkins 在 Gerrit 中上传或更改补丁集时触发构建。我该如何配置?

我正在使用 Jenkins 1.557 来观察 Gerrit 2.8 实例的变化。我正在使用以下插件:

  • Git 插件 2.1.0
  • Git 客户端插件 1.7.0
  • Gerrit 触发器 2.11.1

当我在 Gerrit 触发器上使用“测试连接”时,它返回成功,所以我知道凭据正在工作。我在“高级”按钮下使用默认值。

对于我的测试构建类型,我使用了 Jenkins 检查的 git repo(我添加了“ls -l”的构建后步骤,它正确显示了 repo 内容)。我将构建触发器设置为“gerrit event”,对于“gerrit trigger”,我选择了“Check non-reviewed patchsets”,并启用了“patchset created”的触发器。gerrit 项目设置似乎正确。

我无法通过上传新更改或更改的新补丁集来启动构建。当我使用“查询并触发 Gerrit 补丁”按钮手动触发构建时,构建会发生,但不会记录任何投票。我显然错过了部分难题 - 如果我 ssh 进入 gerrit 并执行“流事件”,我会看到我期望看到的事件。

Jenkins - 权威指南 - 来自 O'Reilly 并没有真正涵盖 Gerrit。我试图避免轮询,因为此 Jenkins 实例将管理数十个 git 存储库。

调试的下一步是什么?

git jenkins gerrit

6
推荐指数
1
解决办法
5116
查看次数

为什么 ssh 不使用配置文件中设置的身份?

我正在尝试配置某些 git 存储库以使用特定的公钥/私钥进行身份验证。

这是在 ~/.ssh/config 里面

Host Repo
HostName bitbucket.org
User git
IdentityFile ~/.ssh/ynd
LogLevel DEBUG
Run Code Online (Sandbox Code Playgroud)

这是尝试推送到仓库时的日志

debug1: Connecting to bitbucket.org [104.192.143.1] port 22.
debug1: Connection established.
debug1: identity file /Users/evgenipetrov/.ssh/ynd type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/evgenipetrov/.ssh/ynd-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9
debug1: Remote protocol version 2.0, remote software version conker_1.0.315-a08d059 app-134
debug1: no match: conker_1.0.315-a08d059 app-134
debug1: Authenticating to bitbucket.org:22 as 'git'
debug1: …
Run Code Online (Sandbox Code Playgroud)

ssh mac-osx git

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

ECDSA 密钥指纹 - 看起来是 base64 编码,但字符太少

我已经设置了一个GitLab VM,并在其上创建了一个项目。现在我正在尝试使用我的 git 客户端从另一台机器连接到它(Git for Windows v2.7.1 ...也尝试升级到最新版本 2.15.1,但没有变化)。

在 Windows 机器上,我尝试:

git push -u origin --all
The authenticity of host 'localgit.local (10.1.2.3)' can't be established.
ECDSA key fingerprint is SHA256:twmcV7LjBtI9vUsDeFEHeH0lUcBAihWtGye0K9vHCrk.
Are you sure you want to continue connecting (yes/no)? no
Run Code Online (Sandbox Code Playgroud)

我选择“否”是因为当我在虚拟机上仔细检查时,我发现了不同的指纹:

ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
256 7e:e4:4e:7f:47:b0:41:75:2c:45:bd:be:f5:44:77:d7 /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
Run Code Online (Sandbox Code Playgroud)

好的,它是十六进制格式,所以我将其转换为 base64,对吗?

hex: 7ee44e7f47b041752c45bdbef54477d7
base64: fuROf0ewQXUsRb2+9UR31w==
Run Code Online (Sandbox Code Playgroud)

好吧,这不匹配......如果我走另一条路并将该 base64 指纹转换为十六进制并看看它是什么样子怎么办?结果我不能,它是 43 个字符,并且 base64 字符串的长度必须是 4 的倍数。

关于我在这里缺少什么的任何想法?

git ssh-keys gitlab

6
推荐指数
1
解决办法
2436
查看次数

标签 统计

git ×10

ssh ×3

windows ×2

clone ×1

gerrit ×1

gitlab ×1

http ×1

hudson ×1

jenkins ×1

mac-osx ×1

network-share ×1

nginx ×1

powershell ×1

ssh-keys ×1