gpt4 book ai didi

git - 我怎么知道哪些 GIT 分支没有完全 merge ?

转载 作者:太空狗 更新时间:2023-10-29 13:11:08 24 4
gpt4 key购买 nike

所以我对有关我当前的 GIT 工作流程(我是新手)的意见感兴趣,以及如何确定我的哪些更改尚未 merge/推送到适当的存储库。所以首先,我当前的系统如下所示:

      remote.master
|
|
V
local.master
| | |
V V V
branch branch branch

对于一个新任务,我会从 remote.master pull 到 local.master,创建一个新分支并检查它。我会在处理任务的同时进行各种提交,也许会切换到其他任务,然后在准备就绪时,将从 remote.master pull 到 local.master,将我的分支 merge 到 local.master,最后推送到 remote.master。

所以有 2 个问题:对于一个小团队来说,这是否有点矫枉过正?省略本地分支是否更有意义?如果是这样,some advice建议要么存在“快速转发”问题(据我所知,这使得 remote.master 中的更改无法区分),要么存在大量具有潜在意外时间戳且难以解析的提交。

第二,假设上面的工作流程:我有时会频繁地在任务之间切换。我想要一个显示我的屏幕:

'branch 01' -> partially merged to local.master 
'branch 04' -> notmerged to local.master
'local.master' -> partially merged to remote.master

我可能会忘记是否 merge 了各种功能,以及 merge 到哪里。我绝对不想逐个分支并尝试通过“git diff”或其他命令来预测此信息。我目前在 Windows 上使用 Tortoise GIT,但对其他图形替代方案持开放态度。我有时确实使用 shell,但更喜欢 UI。有没有办法获取此信息?

最佳答案

无论您想在本地环境中做什么都不过分。如果您想拥有 100 个本地分支机构,这完全取决于您,如果结果(可能)太过分了,那么您可以适当缩减规模。

“快进问题”是一个品味问题。如果两个分支没有分歧,Git 的默认行为是快进而不是 merge 。和作者一样,我也不喜欢这个,但我不会称之为“问题”。作为解决方法,我执行这样的 merge :

# merge branch without fast forward and commit
git merge --no-ff --no-commit branchname

# code review
git diff

# commit the merge
git commit -m 'merged: branchname'

我使用别名 rev = merge --no-ff --no-commit 将 merge 步骤简化为 git rev branchname(命名为“rev”,如“审查”,如“代码审查”)。

要仅查看 merge 提交的日志,请使用另一个别名:revlog = log --first-parent

由于我为每个功能使用一个单独的分支,这样我就可以看到项目演变的大步骤,就像一个变更日志。

对于你的第二个问题,我认为你正在寻找这些命令:

# view the branches that have been merged already
git branch --merged

# view the branches that have NOT been merged yet
git branch --no-merged

我不知道 Tortoise,但是 gitk 非常好,如果我没记错的话,它包含在 Git Bash 中。

关于git - 我怎么知道哪些 GIT 分支没有完全 merge ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17281637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com