问题标签 [fast-forward]
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.
git - 在团队中强制执行 no-ff 合并
所以在工作中,我们正在实施一个新的、很好的 Git 分支策略——太棒了!
为了保留我们存储库的新(和漂亮)结构,我们希望所有合并都使用--no-ff
标志(以及--no-commit
允许更好的合并提交消息的标志)完成。不过,好像只是让大家记住,有点不靠谱。有没有办法强制每个开发人员都必须与上述标志合并?
据我所知,不可能用钩子检查这一点(因为 git 不能可靠地存储有关快进的任何信息)。我知道可以在每台开发人员机器上设置配置(通过运行git config --global merge.ff no
)。如果这是解决方案,我如何确保每个开发人员都有这个配置集?
git - 在不使用硬重置的情况下撤消快进合并
我正在将 git 与 Sourcetree 一起使用。我不小心快进合并并推到远程。现在我想撤消这个。我知道有这样的方法:
- 合并前硬重置提交
- 强制推送到远程
- 重新合并
但是,我知道硬重置是危险的。有没有其他方法可以做到这一点?包括步骤。
谢谢
git - 确定合并是否将通过快进解决
我想知道在运行合并命令之前特定的合并是否会通过“快进”解决。
我知道我可以明确要求不通过“快进”(使用--no-ff
选项)解决合并。或者我可以尝试仅通过快进(使用--ff
选项)来解决合并问题。
但有时我想知道某个特定的合并是否会在我运行它之前通过快进解决。我意识到理论上我可以通过挖掘历史树来解决这个问题。而且我也意识到我可以运行合并并查看会发生什么,但是如果我决定我希望以另一种方式解决合并,这将成为问题,因为我必须撤消合并(通过重新指向分支标签在参考日志中),然后再做一次。
注意:--dry-run
问题(Is there a git-merge --dry-run option?)更多的是关于查看合并中可能存在的合并冲突,而不是关于可以通过快进解决的合并。
git - 撤消旧的快速前向提交
回顾我所做的一些工作,有一个快进提交,这真的让人很难分辨出做了什么,所以我想把那个提交移到它自己的分支。这是我目前的情况:
假设 C 是我想要移动的一个提交。C 也(来自 FF 提交)有它自己的分支(branch2
)。我希望它看起来像:
所以 C 处于打开状态branch2
,C2 是合并提交,A、B 和 D 都处于打开状态master
。
这是一些额外的信息:
git-merge - git_checkout_tree() 有冲突,它可以将冲突的块写入文件吗?
目前我尝试了以下选项:
最有希望的是第一组标志——即使在预期发生冲突时也执行检查,以及“为冲突编写正常的合并文件”,如标题所述*_STYLE_MERGE
。我曾希望这句话意味着在有冲突的文件中,会有“<<<<<<<<<<< 他们的”等序言包装冲突的代码块。相反,该文件保持不变。有没有办法将序言等写入文件?
git - 如何在 Git 中实现快进以便保留两个分支?
在 libgit2 标头中,我读到在 fetch 之后,如果在分析期间发出快进信号可用,那么需要的是简单检查所获取的提示(并更改 head/<branch>)。这似乎是合乎逻辑的,但是我想知道如何将 refs/heads/<branch> 与 remotes/<remote>/<branch> 区分开来?提交中嵌入了父项——这构成了一个历史记录,而应该有两个历史记录,其中两个历史记录都有额外的“合并”提交。那么快进是如何实现的呢?它确实导致 SHA 哈希在两个历史记录中重复,所以 libgit2 似乎有它的意义。
git - Git 快进合并:有机会找到责任人吗?
假设有一个功能分支“my-feature”。在我开发该功能时,有人将它从“我的功能”合并到“主”中。因为这是一个快进合并,所以没有提交。我所做的一些更改还没有为 master 做好准备,当它被推送到 master 时,它打破了很多测试。然而,由于这些更改显然是由我做出的,所以我受到了指责,而不是进行快进合并的人(不管是谁)。
有没有机会找出谁将“我的特征”合并到“主”中,即使它是一个快进合并?我怎样才能防止这种情况在未来发生?
git reflog 显然只显示本地发生的事情。我们正在使用 gitlab 服务器,但我还没有找到检查 gitlab 存储库的 reflog 的方法。有任何想法吗?
git - 防止在 master 分支中提交
(为简单起见)我的 Git 存储库中有一个master
分支和一个dev
。我想确保master
分支一直在工作,所以我所做的所有工作都应该在dev
分支中。
但是,当我将更改与--no-ff
合并合并时,我倾向于留在master
分支中,并继续在其中工作(因为我忘记签出我的dev
分支)。
我可以为分支设置一条规则master
,说明我不能进行提交和快进合并,但只能--no-ff
从另一个分支合并吗?
这必须适用于私有托管存储库(ergo,而不是 GitHub 或 Bitbucket)。
git - 为什么 Git 需要快进才能构建 VSTFS?
我正在备份我们的开发 VSTFS Git 存储库中的一些数据。当我运行构建时,构建目录当然会被擦除,与 Git 存储库同步,从外部源下载数据,然后推送回 Git。
但是,每次发生这种情况时,即使我在 push 之前执行了 Git pull,它也会说我落后了,需要快进。所以我做了一个 Git pull -ff。
但是,我想更多地了解为什么会发生这种情况。是因为目录每次都会被擦除吗?
这是构建: https ://drive.google.com/file/d/0B8bQlVTjVjdoSWR6ZkhGOVNTd0U/view?usp=sharing
您可以忽略仅检索数据的 Powershell。
这是批处理文件
没有 -ff
我发现解决此问题的另一种方法是在构建的存储库设置中选择 Clean = true。这包括清理和重置
git - Git:需要快进合并,但不要快进
我想在一个项目中制定一个政策,其中只有在可以快进合并的情况下才接受拉取请求,但我实际上想在合并时创建一个合并提交。
换句话说,使用--ff-only
标志的验证部分,但是在创建提交时,就像--no-ff
已经使用过一样。这将大大有助于我们保持历史图表的整洁,鼓励人们尽可能使用git pull --rebase
等等。
有人知道可以实现的方法吗?一般来说,我们的环境至少使用 Git 2.8,并且我们使用 Bitbucket Server(现场托管)作为我们的存储库。