https://wiki.postgresql.org/wiki/Working_with_Git#Using_git_hooks
我想快速测试我的想法(快速失败)。
所以无论我改变什么,都致力于当地分支机构。然后我使用切换到一个新分支
git checkout -b test1
我可以快速获取本地最新版本和远程版本(主分支),然后进行新的更改。
如何使用 git hooks 自动执行此操作。
https://postgresql.life/post/andrey_borodin/
我认为我所做的是一种反模式。我在 $HOME 目录下有 postgres0、postgres1、postgres2…postgresE、postgresF、postgres10…每当我不明白我在 postgresX 中更改了什么时 - 我会执行 git clonehttps://github.com/postgres/postgrespostgresX+1。
是的,我知道 git 的发明是有原因的。但要给分支命名,我至少需要对更改的目的有一个微妙的了解。
基本上,当我创建新分支时,我可以自动获取最新的遥控器。但是在我切换之前如果旧分支没有提交,旧分支会丢失吗? (所以我需要防止这种情况发生)。
我想确保每次使用“git checkout -b”时,新分支的本地内容与最新的远程内容一样新鲜。 (这意味着稍后当我进行一些更改或破坏某些内容时,这都是我的错)而且,前一个分支的更改仍然存在。 (我想自动化这个)。
答案1
经过聊天讨论后,我们澄清了 OP 的需求。
假设上游已提交 R1、R2 和 R3。本地分支 1 有这些(R1、R2、R3)以及一些本地提交 L1 和 L2。
对远程 (R4) 进行了另一次提交。
然后在本地创建一个新分支(branch2)并选择。问题是如何使用 git hooks 使branch2相对于远程来说是最新的,实际上是git fetch
自动执行的。
这不适合 git hooks。有人可能会说它也不适合 git 别名,因为在创建分支时不知道远程是否可访问。
无论如何,所需的命令序列是(假设遥控器被称为传统的origin
# get the changes from origin/master
git fetch origin
# If you want a linear history, with the local changes, create the
# new branch
git switch -c branch2
git rebase origin/master
如果 L1+L2 和 R4 之间存在编辑冲突,它们将在变基中报告并需要修复。
这将使branch1成为R1-R2-R3-L1-L2,branch2成为R1-R2-R3-R4-L1'-L2'。