这是与如何编辑 git 的历史记录以更正不正确的电子邮件地址/名称相关的问题。使用git rebase -i <first commit>, git commit --amend --author "Foo <foo@example.com>", 和git rebase --continue,我能够修复除第一个提交之外的所有提交的日志。如何修复第一次提交?
我按照这个例子在我的服务器上设置了一个 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,我得到了一些东西..它想要我的用户/通行证,但是如何使服务器公开而不需要登录?
主要问题:在生产服务器上使用 Git 进行部署是一个好策略吗?
我看到的许多部署策略都围绕着在您的服务器上安装 Git(开发、暂存和生产)。
对于部署到舞台/生产,这的优点似乎很明显:
但是,我看到了一些缺点:
git pull 如果生产中存在某种未分阶段的更改(也可以使用 -f 克服),则在生产服务器上可能会失败部署即服务公司(例如 Beanstalkapp.com、deployhq.com)使用 FTP、SFTP 或 SSH。Beanstalkapp 尤其擅长只根据 git 历史修改文件(而不是重新部署每个文件)。这些服务不要求您在舞台/生产服务器上安装 git(尽管如果您通过 SSH 部署,您是否会/可以使用该策略是有争议的)。
我发现我喜欢使用 sftp:
就最佳实践和安全性而言,在生产服务器上轻松使用 git 是否值得?如果没有,在跳过持续集成工具的同时进行部署的好方法是什么?
(我只询问是否跳过 CI 工具,因为时间/预算/客户限制不允许它们用于我的日常使用)。
我正在使用 Amazon 的 Elastic Beanstalk 通过 Git 部署我的应用程序,并且我的 Git 中有子模块。当然,当我查看子模块数据应该在的目录时,什么都没有,因为子模块尚未初始化。
显然 Elastic Beanstalk 不支持子模块。这样对吗?如果是这样,我如何说服 Git 让我拥有子模块的功能,但在推送主 repo 时仍然上传子模块的所有代码?
我正在使用 node.js 所以我认为安装脚本可能是最好的选择
查看htop我服务器上的输出,我看到 Gitlab 产生了 25 个 sidekiq 进程。我私下使用 Gitlab,所以永远不会有任何负载,所以我怀疑所有这些过程都是必需的,但我看不到如何配置它们的数量。
在资源受限的服务器上,我真的有必要为此烦恼吗?
我需要构建一个解决方案来托管内部 git 存储库。它需要支持数十万(或更多)存储库。
我计划将多个“哑”服务器与共享存储一起使用,因此基本上当客户端尝试访问存储库时 - 负载平衡器会将其重定向到任何可用服务器。对存储库的任何更改 - 将在所有节点上复制。
我的第一个想法是为此使用 GlusterFS,但我读过它不能很好地处理小文件。我也在考虑使用 DRBD 自己复制所有内容,但这需要更多设置,并且与 GlusterFS 相比似乎更复杂。
两者中哪一个提供更好的性能?基本上,我试图解决的问题是,当任何服务器出现故障时 - 我希望其他人仍然能够提供数据。
我在堆栈溢出上问了同样的问题,但我只得到了 5 次查看,我认为这是一个更好的论坛来解决这个问题。
我正在为托管在 github 上的私有仓库中的 C# 项目设置 CI。Git 安装在主 CentOS 机器上,MSBuild 安装在从属 Windows 上。
我已经在 github 上创建了帐户,并将其添加到我的私人仓库中。当我在 Jenkins 上设置源代码控制时,我输入了 URL(如https://github.com/.../repo.git)并使用新帐户输入凭据。
詹金斯报道:
Failed to connect to repository : Command "git config --local credential.helper store --file=/tmp/git2956041026506359040.credentials" returned status code 129:
stdout:
stderr: error: unknown option `local'
usage: git config [options]
Config file location
--global use global config file
--system use system config file
-f, --file <FILE> use given config file
Action
--get get value: name [value-regex]
--get-all get all …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试使用 .ebextensions 命令向我的弹性 beanstalk 实例添加一个 ssh 密钥。
我存储的密钥在我的应用程序代码中,我尝试将它们复制到根 .ssh 文件夹,以便稍后在执行 git+ssh 克隆时访问它们
这是我的 .ebextensions 文件夹中的配置文件示例
packages:
yum:
git: []
container_commands:
01-move-ssh-keys:
command: "cp .ssh/* ~root/.ssh/; chmod 400 ~root/.ssh/tca_read_rsa; chmod 400 ~root/.ssh/tca_read_rsa.pub; chmod 644 ~root/.ssh/known_hosts;"
02-add-ssh-keys:
command: "ssh-add ~root/.ssh/tca_read_rsa"
Run Code Online (Sandbox Code Playgroud)
问题是我在尝试克隆 repo 时遇到错误
Host key verification failed.
Run Code Online (Sandbox Code Playgroud)
我尝试了多种尝试将主机添加到 known_hosts 文件的方法,但都没有奏效!
执行克隆的命令是 npm install 因为 repo 指向节点模块
我按照本教程在 EC2 实例上设置了 git 存储库。
http://git-scm.com/book/ch4-4.html。基本上,我添加了一个新git用户并将我的公钥包含在authorized_keys 中。设置git用户后,我只是通过git init --bare.
但是,我注意到我可以轻松地克隆它而无需我的私钥。有没有办法强制它只能通过 SSH 使用,以便遵循 authorized_keys ?我猜它正在使用 git 的默认值,即端口 9418,它似乎不支持身份验证。
所以我让 Jenkins-CI 与插件一起运行:
首先,为了使用远程存储库对 Git 进行身份验证,我将服务器凭据添加到没有域的全局作用域。
但是,这允许我的 Jenkins 服务器上的任何用户使用这些相同的凭据,从而与我的 Git 远程存储库进行交互。所以我试着去:
Jenkins-> People-> [Username]->Credentials
我尝试添加:
但是,当我进入Jobs-> [Job]-> Configure-> Source Code Management-> Git-> 时Credentials,它只列出服务器范围的凭据,而不是我注册到帐户的凭据。
所以我的问题是:如何使用对 Jenkins 服务器的其余部分不可用的凭据并在作业的 SCM 凭据中使用它们?