私信  •  关注

bk2204

bk2204 最近创建的主题
bk2204 最近回复了
2 年前
回复了 bk2204 创建的主题 » 在GitHub中维护多个不同版本的最佳方法

这真的取决于版本是什么。

例如,如果你的版本是同一网站或程序的各种不同变体,通常你应该使用某种配置或功能选项,并保留一个版本,但可以配置。然后,您可以基于配置文件构建或运行变体。

如果你的版本只是想跟踪不同的变体,比如你正在基于一个共同的基础上构建各种程序生成的艺术品,那么你确实可以使用不同的分支,即使你不打算合并它们。如果你的基础得到更新,你可以在它上面重新设置分支的基础。或者,您可以将所有变体保存在同一棵树中,并将我们的模型分解为一个公共库,在这种情况下,您不需要分支,除非在处理新变体时需要临时分支。

例如,如果您的版本是点文件的不同版本,则可以保留一个主分支、基本分支,然后保留其他分支以用于在基本分支上重新设置基础或将基本分支合并到其中的其他上下文(例如,工作)。

保留你可能从未使用过的一次性树枝也很好。我在Git上有很多分支,它们可能永远不会被合并,或者已经过时,因为有人已经构建了我构建的东西,但是更好或者更先进。除非有额外的分支没有进展,这会让你感到不安,否则没有必要真的担心。

3 年前
回复了 bk2204 创建的主题 » Git声称,当源站按预期接收到它时,它无法推送

当你在HTTPS上推送时,会有一个请求,它是你推送的数据,还有一个响应,它包含一个状态码和一个正文(对于Git请求,它包含消息)。如果您推送数据,远程端接受数据,但从未成功发送响应,或者如果响应被网络问题或干预系统中断,那么Git无法知道您的请求是否成功。

在这种情况下,响应指示消息在读取边带响应的中间被中断,这意味着假设远程端确实完成了它的处理是不安全的。Git因此做了正确的事情,在这里失败了。

请注意,有一些可能的原因。如果你上传的是大量压缩不好的二进制文件,那么Git可能会合法地花费大量时间解包这些对象,并且可能无法及时发送边带数据包来保持连接。理想情况下,您不会在Git存储库中存储很多大型二进制文件,因为这对它们不是很好的用途,但您可以尝试SSH,使用keepalives,SSH可以让连接持续足够长的时间以完成连接。不过,您不应该将Git用作备份或归档解决方案,或者作为工件存储。

您的连接也可能确实存在一些网络问题(包括由代理、非默认防病毒或防火墙或TLS middlebox引起的问题),在这种情况下,您需要修复所述问题(或卸载或删除所述软件或设备)。有时联系也会减少。

2 年前
回复了 bk2204 创建的主题 » Unreal 4-Git说我没有更改文件中的一些更改

如果LFS文件的时间戳被更新,Git将使它在下次运行时通过干净的过滤器运行 git status ,将其转换为存储库中的指针文件。在您的例子中,已经存在的指针文件被破坏:它包含一个空行,这是无效的。

最好的办法就是跑步 git add --renormalize . 修复所有这些损坏的文件,然后提交。您还应该找到创建这些损坏指针文件的工具,并修复或删除它。一旦你做到了这一点,你就可以像往常一样继续你的改变了。

请注意,忽视这个问题不会让它消失,也不会让它消失 git reset --hard .由于Git处理像Git LFS这样的污迹和干净过滤器的方式,您唯一的选择就是修复更改并提交。

2 年前
回复了 bk2204 创建的主题 » 如何检索存储在github上的大型csv文件

这是Git LFS使用的指针文件,它存储在存储库中,代替实际的大文件并引用它。如果没有安装Git LFS或没有正确配置它,您将在存储库中看到这一点。

为了让Git LFS自动工作,请安装它,然后运行它 git lfs install 。这将设置一组过滤器,以便当存储库包含LFS文件时,它们会自动签出。

对于现有存储库,您应该能够运行 git lfs pull ,它应该获取大文件,然后在工作树中检出它们。

2 年前
回复了 bk2204 创建的主题 » 如何从GitHub复制文件而不进行克隆?

有几种方法可以让你进行一次修订。

首先,在GitHub上,有可供下载的API端点 a tarball a zip file 一个特定的修订。它们可以使用curl下载,只有在存储库是私有的情况下才需要身份验证。

如果存储库中有包含特定tarball或其他要下载的归档文件的发布资产,则可以先下载 look up the release 然后 download the asset 你想要的。如果发行版包含生成的文件或其他不在自动生成的tarball中的内容,这将非常有用。

你也可以选择进行浅层克隆。也就是说,你可以通过考试 --depth 1 选择 git clone 要仅下载一个修订版的数据,可以使用 -b BRANCH 选项最终会有一个 .git 目录,如果需要可以删除,也可以使用 git archive HEAD 从中生成存档。

2 年前
回复了 bk2204 创建的主题 » Git Commit在WSL2中请求凭据而不是SSH

这不是提示输入凭据。在进行提交时,Git需要知道要嵌入到提交中的名称(即个人名称,而不是用户名)和电子邮件地址。这些数据与身份验证完全无关,只是Git创建提交所需的数据。一旦你提交了,你就可以用 git log .

您应该按照指示指定您的个人姓名和电子邮件地址,然后提交才能成功。

2 年前
回复了 bk2204 创建的主题 » Git预接收挂钩性能问题

很难说一组给定的预接收挂钩是否会导致性能问题。要确定这一点,您需要设置一个测试实例,并使用实例的代表性工作负载进行测试。在一台小型服务器上进行数千次推送时可能会出现问题,而在一台功能强大的服务器上进行小型推送时可能会出现问题。

然而,在许多情况下,避免预接收钩子是有帮助的,它必须在接受任何推送之前立即运行,而是选择使用某种受保护的分支,然后使用CI作业检查代码。这不需要内联运行,可以在另一个功能更强大的系统上运行,而且它可能还为您提供了更大的灵活性,可以跨不同的存储库执行不同类型的检查。它还可以允许推送代码的人检查日志,从而为推送代码的人提供更有用的响应。

2 年前
回复了 bk2204 创建的主题 » 更新命令行Git凭据。GitHub上个人访问令牌(PAT)的助手

您应该将凭证助手设置回原来的状态: git config --global credential.helper store .然后,使用 technique outlined in the Git FAQ 要重置凭据助手中的凭据,请执行以下操作:

$ echo url=https://account@github.com | git credential reject

你应该替换 account 使用你的GitHub用户名。

然后,下次Git会提示您输入凭据,您应该输入GitHub用户名作为用户名,输入个人访问令牌作为密码。凭证助手随后将保存它们。

2 年前
回复了 bk2204 创建的主题 » Github的贡献没有出现,但邮件匹配

有几种可能性:

  • 你还没有把他们推到GitHub。
  • 您的更改不在主存储库中,而是在fork中。
  • 您的更改不在默认分支中。

GitHub有 documentation on the reasons this can happen .

2 年前
回复了 bk2204 创建的主题 » 使用共享机器时如何使用GitHub进行身份验证

你应该如何处理这件事取决于你的需求。

如果您想自动化一台机器的部署过程,那么使用该机器的部署密钥是一个好主意,因为这正是它们设计的目的。理想情况下,您的部署过程 自动化和部署密钥是一种很好的方法。

如果您的目标是通过SSH登录多台机器,并使用远程设备执行Git操作,那么可以使用SSH密钥。如果您是通过SSH登录的,请将SSH密钥添加到代理,并使用 -A 选项,这将允许您执行访问,就像您在远程系统上拥有该密钥一样。如果可以的话,这是最简单、最简单的解决方案,甚至比输入用户名和密码更方便。

如果需要在控制台登录到计算机,则生成一个SSH密钥,将其添加到GitHub,并将其存储在闪存驱动器上,此时可以通过设置环境变量装载闪存驱动器并将密钥与Git一起使用 GIT_SSH_COMMAND ssh -oIdentitiesOnly=yes -i /mnt/path-to-key (替换密钥的路径)。

4 年前
回复了 bk2204 创建的主题 » Git合并到master是否删除未更改的文件?

Git的合并操作在进行合并时正好考虑了三点:要合并的两个头部(通常是分支),以及 合并基 ,这通常是一个从另一个分叉的点。

当合并发生时,Git会考虑在每个头和合并基之间计算的更改。然后它生成一个与合并基完全相同的结果,但同时添加了两组更改。换句话说:

  • 如果您在一侧而不是另一侧进行了更改,Git将包含该更改。这种情况下的更改包括添加、删除或修改文件或其中的一部分。
  • 如果您没有对文件或其中的一部分进行任何更改,Git将包含这些未更改的部分。

我想你要找的命令是 git ls-files -ioc --exclude-standard . 该命令将列出使用标准排除路径跟踪(在索引中)或未跟踪的文件。

即使这不是你要找的那个调用, git ls-files -z 选项,对于奇数文件名和脚本使用非常有用。

4 年前
回复了 bk2204 创建的主题 » 如何在执行git pull时不更改开发团队?

一般来说,不应将每个用户的数据存储在存储库中。应忽略此文件,而不将其签入存储库,如果需要在开发人员系统上创建此文件,则应根据模板生成,如中所述 this answer .

你要找的是GitHub所说的 . 这是一个SSH密钥,与任何人的帐户都没有关联,但只能访问一个特定的存储库。这个键将提供读访问,也可以选择性地提供写访问。它专门为服务器或自动化系统需要自动访问存储库的情况而设计。

注意,SSH密钥用作部署密钥 不能 与任何帐户关联,尝试这样做将导致错误。这是因为SSH密钥唯一标识一组访问权限。

您指的是一个不存在的版本中不存在的动作。你已经指定 workflows/checkout 修订版 0 工作流/签出 知识库存在。

actions/checkout ,您可能需要指定一个标记 v1 ,所以这些行看起来像 uses: actions/checkout@v1 .

This repository 可能有适当工具的链接。

4 年前
回复了 bk2204 创建的主题 » Git-lfs从本地裸回购中获取?或其他本地LFS文件副本?

使用Git LFS 2.9.0,如果将其指定为绝对文件URL,则可以从本地存储库进行克隆。不支持本地路径,但它们将位于Git LFS 2.10.0中。

另外,您当前需要使用 %3a 而不是冒号,如果你在Windows上。你不是,但其他人是,这是一个共同的问题来源。这个要求也应该在2.10.0中消失。

因此,基本上,使用Git克隆的URL应该如下所示: file:///home/nick/checkouts/somerepo.git .

git在commit对象中包含各种信息。所有这些信息都被分解到对象的散列中;如果其中任何信息不同,散列也会不同。包含在每个提交中的是

  • 树对象的哈希(取决于每个跟踪的文件和目录)
  • 前一个提交(或提交,如果是合并)的哈希
  • 作者的姓名、电子邮件、时间戳和时区
  • 提交者的姓名、电子邮件、时间戳和时区
  • gnupg签名,如果有的话
  • 提交消息

因此,如果您在两台机器上进行更改,除非它们在完全相同的时间戳上进行更改,否则散列将不同,因为作者和提交者的时间戳将不同。

5 年前
回复了 bk2204 创建的主题 » git checkout只给我一些机器上的指针文件

为了让git lfs自动签出文件,您需要正确设置过滤器选项。你可以跑 git lfs env ,应该打印三个 git config 命令在底部。如果配置正确,它们应该如下所示:

git config filter.lfs.process = "git-lfs filter-process"
git config filter.lfs.smudge = "git-lfs smudge -- %f"
git config filter.lfs.clean = "git-lfs clean -- %f

如果该值为空或对于您的系统看起来不正确,则应适当配置该值,或使用 git lfs install --skip-repo 以每个用户为单位安装(或使用该命令的其他选项之一将其安装到其他位置)。

请注意,如果您不确定它在其工作的系统上的设置位置,可以使用 git config -l --show-origin ,然后将配置复制到另一个系统上的相同位置。

问题是你试图使用 wincred 凭据帮助程序,仅在Windows和MacOS上可用。你说过你跑了 git config --global credential.helper wincred ,它将凭据帮助程序设置为 瓦辛德 . 当git试图调用它时,它失败了,因为它不可用。

相反,你应该跑 git config --unset-all credential.helper 并运行 git config --global credential.helper osxkeychain . 这将导致您使用macos密钥链来存储凭证,这将在macos上工作。

5 年前
回复了 bk2204 创建的主题 » 来自拉取请求的git提交消息

大多数代码托管平台将pull请求作为一个特别命名的ref提供。例如,在github上,pull请求被命名为 pull/ID/head 在哪里 身份证件 是请求号。

所以如果主存储库被命名为 origin 您可以通过运行检查分支请求123 git fetch origin pull/123/head:pr-123 ,这将创建分支 pr-123 . 然后你可以运行 git log 一切正常。

如果您使用的是gitlab或bitbucket,它们有类似的配置,但是ref的名称不同。您可以查阅您正在使用的平台的文档,以查看它们使用的引用。

当然,这些平台还提供了您可以使用的Web界面。

5 年前
回复了 bk2204 创建的主题 » 规范化后的git行尾:好的还是坏的实践?

如果您的git项目因任何原因被多个平台上的人使用,您将希望使用git的行结束规范化。非windows系统上的用户不希望有crlf结尾,因为在这些平台上,回车往往在git diff输出中显示为尾随空格。然而,windows工具(包括编辑器和编译器)通常需要crlf结束才能工作。如果不使用行尾规范化,用户可能会犯错误,并意外提交错误的行尾,从而导致差异噪声。

话虽如此,你用不着 .gitattributes 以处理线条末端。在windows上使用 core.autocrlf 设置,因为Git可以检测大多数二进制文件,而不改变它们上的结束,同时更改任何文本文件上的行结束。如果这适合您的存储库,则不需要 .gittattributes属性 完全是文件。

4 年前
回复了 bk2204 创建的主题 » 如何使gitignore应用于除特定文件夹之外的特定扩展?

你可以写一个 .gitignore 文件如下:

*.dcu
!project/compiled-only/**/*.dcu

这排除了所有 .dcu 文件,除了 project/compiled-only 或任何子目录。

请注意,您必须在所有操作系统上使用正斜杠,因为反斜杠用作转义字符。

5 年前
回复了 bk2204 创建的主题 » 设置代理后Git克隆挂起

407代码意味着需要代理身份验证。当使用 http_proxy 环境变量或使用 http.proxy ,您需要在字符串中指定用户名(以及可选的密码)。您可能还需要提供 http.proxyAuth 如果代理提供的身份验证方法不会导致成功连接。

PAC文件跨多个系统和用户使用,并且不包含指定需要或需要身份验证或使用哪些凭据的方法。当在Web浏览器中使用时,浏览器将提示输入凭据,但大多数命令行程序不会。只有在指定用户名时,Git才会提示您输入密码;否则,它假定代理未经身份验证。

5 年前
回复了 bk2204 创建的主题 » git-使用用户和密码将参数传递给git

这里有几个问题需要解决。

首先,你不能使用 git fetch --all 并指定一个遥控器。 --all 意味着获取所有已知的遥控器,这在命令行上仅指定一个遥控器时没有意义。如果需要将现有远程的凭据传递给Git,请将所拥有的URL写入临时文件,然后使用 -c 在命令行上传递凭证助手的选项,如:

DIR=$(mktemp -d -t "$TMP/tmp.XXXXXX")
echo "$USR_CREDENTIALS" >$DIR/creds
git -c credential.helper="store --file=$DIR/creds" fetch --all --prune
rm -fr "$DIR"

如果您只想获取一个遥控器,那么您可以执行与上面相同的操作,只需替换 ——所有 与URL对应的远程服务器的名称。

注意, -C 这里的选项必须在 fetch 子命令。

您也可以通过运行以下命令来完成此操作,但请注意,如果您执行此操作,系统上的任何人和访问repo的任何人都可以以纯文本形式看到您的密码:

git fetch "$USR_CREDENTIALS" "$BRANCH_NAME"
git checkout -b "$BRANCH_NAME" FETCH_HEAD

它也不会获取远程跟踪分支 origin .

第二,不能像现在这样混合选项和非选项参数。在某些情况下,它可能会正常工作,但您会发现,在某些边缘情况下,它会被破坏。除非您正在传递配置选项(即, git -c ,所有选项(即,从 -- - )需要出现在任何非选项参数之前和子命令之后。

第三,你看到的问题 git checkout 意思是说 origin/$BRANCH_NAME 本地系统上不存在。它可能在远程服务器上,但不在本地计算机上。如果获取成功,并且远程服务器包含具有适当分支名称的服务器,则命令应该可以工作。