【问题标题】:Ordering git commits订购 git 提交
【发布时间】:2017-08-23 13:37:19
【问题描述】:

我想知道如何更改我在 git 上的提交顺序(版本优先级),或者将提交定义为克隆的“默认”?

For example, i've three commits for my git project :
-s0441254z5 | "new features in dev" (most recent)
-p44mo47877 | "ENDED project"
-g487er54ee | "First commit" (the oldest)

我会的

-p44mo47877 | "ENDED project"
-s0441254z5 | "new features in dev" (most recent)
-g487er54ee | "First commit" (the oldest)

所以当有人对我的项目执行“git clone”时,他会得到“ENDED project”。 我知道我可以用另一种方式回答这个例子,使用 --branches,但这只是一个例子来说明我的问题。 所以,对于这个你有什么想法?

【问题讨论】:

  • git rebase -i 是你的朋友。
  • 详细说明git rebase -i,可以根据您的最终愿望重新排列拣货线。
  • 您呈现历史的方式不清楚。它是分支列表还是提交列表?您可以使用命令git branch -vgit log --oneline --decorate 来显示它们。这样会更好理解。

标签: git commit


【解决方案1】:

git rebase -i(或--interactive)正是为此而写的(还有更多......)。要更改最后 3 次提交的顺序,请运行

git rebase -i HEAD~3

编辑器会弹出指令,重新排列行,退出编辑器,让 git 完成剩下的工作。

【讨论】:

    【解决方案2】:

    您应该有一个分支,该分支停留在您希望正在克隆的人所在的提交上。

    您可以通过在包含所有提交的分支上执行此操作,假设所需的提交是倒数第二个(如您的示例中所示)。

    git checkout -b development # creates a new branch to be cloned
    git reset --hard HEAD^  # resets the branch to the commit you want
    

    然后,当人们克隆您的项目时,他们可以clone your project from a specific branch

    git clone --branch development <URL>
    

    您也可以(而不是让开发人员使用分支选项克隆项目)更改 HEAD 指向的分支。 Here 是如何完成此操作的描述性示例。

    我不明白您为什么要在克隆特定提交时重新排序提交会给您正在寻找的行为。虽然如 cmets 中所述,您可以使用 rebase to reorder your commits

    【讨论】:

    • reset HEAD~1checkout . 可以替换为 reset --hard HEAD^ :-)
    • @petrpulc 谢谢。
    【解决方案3】:

    所以当有人对我的项目执行“git clone”时,他会得到“ENDED project”。

    为此,远程上的当前分支(已签出)应指向提交。在 github,您可以通过选择另一个“默认”分支来更改它。

    【讨论】:

      猜你喜欢
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 2013-12-20
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      相关资源
      最近更新 更多