【问题标题】:Git switching between commitsGit 在提交之间切换
【发布时间】:2012-01-07 19:19:26
【问题描述】:

我在这里阅读并搜索了很多但没有找到答案,所以有没有一种方法可以像使用分支一样在提交之间切换。假设我有这些提交:a;b;c 其中c 是我的最后一次提交,我可以切换回提交a吗?或者你必须做一个git diff 并手动修改文件?

【问题讨论】:

标签: git version-control


【解决方案1】:

只需输入git checkout a。或者更有用的是git checkout -b mybranch a,将a 签出为新分支mybranch

如果您想恢复bc,可以使用git revert,或者将它们从当前分支的历史记录中完全删除,您可以git rebase -i a 将它们丢弃。

即使您打算使用git diff,您也无需手动执行任何操作。查看 git format-patchgit applygit am 以自动创建和应用补丁。

【讨论】:

  • 所以我猜不可能在提交之间切换,只有当你创建分支并在它们之间切换?我是对的?
  • 或者我可以做git revert b(which stand for the commit ID)
  • 还有git reset --hard
  • @svick - 好主意,比我想的要好得多...一定是在写作的时候走神了。
  • @Uffo - 是的,没错。但取决于你想做什么,这可能是一个好计划,也可能不是一个好计划。
【解决方案2】:

您可以从要使用的修订版本创建一个分支。可以使用查看修订号

   git log

从上一个版本中分出

 git branch -f branchname rev

【讨论】:

  • 这很好,以防你创建了分支,但当你只有 master 分支并且你想在提交之间切换时,我猜
  • 您可以强制您的主分支指向旧版本。使用 master 作为分支名
【解决方案3】:

git 使用 commitish 的定义。 git 将 commitish 定义为:

提交式

表示提交或标记对象名称。一个接受 commit-ish 的命令 参数最终想要对提交对象进行操作但自动 取消引用指向提交的标记对象。

这似乎有点不完整,因为分支也经常被视为提交。

基本上,您可以检查任何具有 sha-1 哈希值的内容。

【讨论】:

    猜你喜欢
    • 2021-05-20
    • 1970-01-01
    • 2014-01-02
    • 2015-11-18
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 2014-08-28
    • 2021-09-23
    相关资源
    最近更新 更多