【问题标题】:Git push new branch as specific user picks up old commit当特定用户选择旧提交时,Git 推送新分支
【发布时间】:2018-10-01 18:02:19
【问题描述】:

为了触发一些自动化,我需要以特定用户的身份推送到 gitlab 存储库,并具有遵循某些特定格式的分支名称。为了便于参考,我们称该用户为Joe Programmer <jp@company.com>,分支名称为example-branch

有一个预先存在的提交,我想抓取并推送到 gitlab,所以我更改了我的用户

git config --local user.name "Joe Programmer"
git config --local user.email "jp@company.com"

删除分支(如果存在),并将删除的内容也推送到仓库

git push origin --delete refs/heads/example-branch
git branch -D example-branch

从我的已知良好提交中结帐

git checkout good_commit

并从中分支

git checkout -b example-branch good_commit

然后我提交一个空的更改集并推送到原点。

git commit -m "triggering automation" --allow-empty
git push origin example-branch

但是,当我查看 Gitlab 时,我发现它不仅拾取了我的空提交(作为 Joe Programmer),而且还拾取了我在上面称为 good_commit 的上一个提交,归因于做出该提交的实际人。

我如何最容易地省略 good_commit,所以唯一推送到远程的是我作为 Joe Programmer 的提交?

【问题讨论】:

  • 澄清一下:由于good_commit 是这个新分支中的第一个提交(并且它不是由 Joe Programmer 提交的),因此自动化不会正确触发。
  • 试试 git checkout --orphan example_branch good_commit? git-scm.com/docs/…
  • @York 这听起来可行,但我注意到git log --all 仍然显示本地存储库上的先前提交。这可能会在远程消失,但我没有办法测试它!你确定吗?如果是这样:请随意写一个答案!

标签: git gitlab


【解决方案1】:

一个选项,但可能并不完美,是修改最后一次提交。

因此,您将执行以下操作,而不是空提交:

git commit  --amend --no-edit --author "Joe Programmer <jp@company.com>"
git push origin example-branch

据我了解,需要换作者,所以还加了--author

所以缺点是每个分支都有相同内容(但哈希不同)的重复提交,但也许它比那些空的“触发自动化”提交更好。

【讨论】:

  • 这是否也修改了旧分支上存在的提交 (good_commit)?这不是破坏交易,因为good_commit 是我们工作流程中一次性分支的尖端,但很高兴知道...
  • 如果你有一个commit A+B的分支,那么在分支修改之后,旧分支还是A+B,新分支还是A+C。
猜你喜欢
  • 2021-05-31
  • 1970-01-01
  • 2013-10-09
  • 2020-10-08
  • 2016-06-06
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
相关资源
最近更新 更多