问题标签 [git]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
10155 浏览

git - 防止人们使用不同的作者姓名推送 git 提交?

在 git 中,每个用户都可以在其本地 git 配置文件中指定正确的作者。当他们推送到一个集中的裸存储库时,存储库上的提交消息将具有他们在提交到自己的存储库时使用的作者姓名。

有没有办法强制使用一组已知的提交作者?“中央”存储库将可通过 ssh 访问。

我知道这很复杂,因为有些人可能会推送其他人所做的提交。当然,您也应该只允许您信任的人推送到您的存储库,但如果有一种方法可以防止用户出错,那就太好了。

git中有这个问题的简单解决方案吗?

0 投票
6 回答
3205 浏览

svn - 将 Git 历史移植到 SVN 分支上


有一个 Git 存储库和一个 SVN 存储库,它们都拥有相同的源代码但不同的提交历史。Git repo 有很多小的评论很好的提交......而 SVN repo 有一些巨大的提交,带有“很多东西”之类的评论。这两个系列的提交都遵循在代码中所做的相同更改,并且大致相同。

想要的结果
我想切换到使用 Git-SVN ,而不会丢失当前 Git 存储库的详细历史记录。这应该通过将 Git 存储库中的历史“嫁接”到项目的 SVN 分支上来完成(从我真正开始使用 Git 的那一点开始分支)。

为什么要这么做?(历史)
前段时间我开始玩 Git。我首先在一个受 SVN 控制的项目中设置了一个 Git 存储库。通过一些配置,我让 Git 和 SVN 在同一个源代码上并行工作。

这对我来说是学习和使用 Git 的好方法,同时仍然拥有 SVN 的安全网。它基本上是一个带有真实数据的沙箱。我没有时间真正学习Git,但我真的很想修补它。这对我来说实际上是一个学习 Git 的好方法。

起初,在进行了一些编辑之后,我会提交给 SVN,然后提交给 Git……然后在知道我的更改在 SVN 中安全的情况下使用 Git。很快我就比 SVN 更频繁地提交到 Git ......

当了解 和 之间的区别时git revertsvn revert高兴我一直在检查 SVN 存储库。假设两者工作相同,我几乎失去了几个星期的工作。

我现在知道 Git-SVN 的荣耀,并且在其他几个项目中愉快地使用它。当我开始时,我完全意识到我可能会丢失我的 Git 存储库,并且必须使用“正确”设置一个新的存储库git-svn init……但是现在使用 Git 已经有一段时间了,我确信有一些方法可以破解 Git 历史进入SVN。

0 投票
17 回答
49924 浏览

git - 使用 git 版本控制系统锁定二进制文件

一年半以来,我一直在关注 git 社区,希望能够摆脱 SVN。阻碍我的一个特殊问题是无法锁定二进制文件。在过去的一年里,我还没有看到这个问题的进展。我知道锁定文件违背了分布式源代码控制的基本原则,但我不知道当存在二进制文件冲突的可能性时,Web 开发公司如何利用 git 来跟踪源代码和图像文件的更改。

为了达到锁定的效果,必须确定一个“中央”存储库。不管 git 的分布式特性如何,大多数公司都会有一个软件项目的“中央”存储库。我们应该能够将文件标记为需要从指定地址的管理 git 存储库中锁定。也许这很困难,因为 git 跟踪文件内容而不是文件?

你们有没有处理过修改前应该锁定的 git 和二进制文件的经验?

注意:Source Gear 的新开源分布式版本控制项目 Veracity 似乎将锁定作为其目标之一。

0 投票
3 回答
2766 浏览

windows - Windows 上 Git 的文件描述符无效问题

我已经在 Linux 上使用 Git 大约一年了,一切正常。最近,一位同事加入了开发,他正在使用 Windows。那里一切正常,但有时当他尝试将更改推送到 Linux 服务器上的远程存储库(裸机)时,它会以“无效的文件描述符”消息退出。

我使用 Linux git 更新了同一个远程存储库,没有任何问题。我们尝试了 WinGit 0.2 和MSysGit(今天下载,使用 Git 1.5.6)。两者都有同样的问题。

我应该提一下,网络运行没有任何问题。我可以从头开始克隆整个存储库。我只是无法对其进行任何更改。

有没有人见过这样的东西?

0 投票
8 回答
6914 浏览

git - 使用分布式版本控制时的构建顺序

现在,我们正在使用 Perforce 进行版本控制。它有一个方便的特性,即严格增加的更改编号,我们可以使用它来引用构建,例如“如果您的构建至少为 44902,您将获得错误修复”。

我想改用分布式系统(可能是 git),以便更轻松地进行分支和在家工作。(Perforce 完全可以实现这两者,但 git 工作流有一些优势。)因此,尽管“附属开发”将是分布式的,而不是指通用的修订顺序,但我们仍然会维护一个主 git 存储库,所有更改都会需要在创建构建之前输入。

保留严格增加的构建 ID 的最佳方法是什么?我能想到的最直接的方法是有某种 post-commit 钩子,只要主 repo 更新就会触发,它会注册(哈希)新树对象(或提交对象?我是新手git) 带有一个分发 id 的集中式数据库。(我说“数据库”,但我可能会用 git 标签来做,只是寻找下一个可用的标签号或其他东西。所以“数据库”实际上是 .git/refs/tags/build-id/。 )

这是可行的,但我想知道是否有更简单、已经实现或标准/“最佳实践”的方式来实现这一点。

0 投票
8 回答
3959 浏览

windows - Git 可以在 Windows 上运行吗?

我一直在 Linux 上工作,我对 Windows 一无所知,甚至没有 Windows 机器。Git 现在可以在 Windows 上运行吗?还是我使用它给我的 Windows 朋友带来了问题?

0 投票
5 回答
645 浏览

git - 在开始使用 Git 之前,我应该了解什么?

我使用“传统”版本控制系统来维护过去项目的源代码存储库。我正在与一个分布式团队开始一个新项目,我可以看到使用分布式系统的优势。鉴于我了解 SourceSafe、CVS 和 Subversion;你对 Git 新手有什么建议?

0 投票
3 回答
3275 浏览

svn - git-svn 合并和提交细节

我们正在使用 git-svn 来管理 SVN 存储库的分支。我们面临以下问题:用户 X 在分支中多次提交后,用户 Y 想使用 git-svn 将分支中的更改合并到主干。我们看到的问题是所有单个合并操作的提交消息看起来好像是由用户 Y 进行的,而分支中的实际更改是由用户 X 进行的。

有没有办法向 git-svn 表明在合并时,使用原始提交消息/作者进行给定的更改,而不是进行合并的人?

0 投票
29 回答
777045 浏览

git - 如何通过 HTTP 代理从 Git 存储库中提取?

注意:虽然描述的用例是关于在项目中使用子模块,但这同样适用于git clone通过 HTTP 的存储库的正常情况。

我有一个受 Git 控制的项目。我想添加一个子模块:

但我明白了

我设置了 HTTP_PROXY:

我什至有一个用于 http 代理的全局 Git 设置:

有没有人通过代理获得 HTTP 提取以始终如一地工作?真正奇怪的是,GitHub 上的一些项目运行良好(awesome_nested_set例如),但其他项目始终失败(例如rails )。

0 投票
19 回答
1430284 浏览

git - 撤消 git rebase

有人知道如何轻松撤消 git rebase 吗?

想到的唯一方法是手动进行:

  • git checkout 两个分支的提交父级
  • 然后从那里创建一个临时分支
  • 手工挑选所有提交
  • 用手动创建的分支替换我重新设置的分支

在我目前的情况下,这将起作用,因为我可以轻松地发现来自两个分支的提交(一个是我的东西,另一个是我同事的东西)。

然而,我的方法给我的印象是次优且容易出错(假设我刚刚用我自己的 2 个分支重新设置了基础)。

有任何想法吗?

澄清:我说的是重放一堆提交的rebase。不止一个。