代码之家  ›  专栏  ›  技术社区  ›  globewalldesk

如何维护多个独立稳定的git分支

  •  1
  • globewalldesk  · 技术社区  · 7 年前

    这是一个git问题。我在做一个决定 programming study review app 在纯(命令行)Ruby中。此应用程序允许用户设计和安排对编程任务的审核,管理执行任务的文件,并从应用程序自动运行结果。出于这些目的,当只有一个文件时,我不需要git。但大多数高级和网络编程任务都涉及编辑和使用多个文件,为了管理这些文件, I need to use git ,我对git不太在行。

    在这个应用程序中,这些更复杂的“repotasks”的制作者将根据(他自己选择的)repo(他自己选择的)的git分支提出问题。因此,我认为这需要的是,对于每一次回购,都有一系列分支机构,每个分支机构都相互独立,并且每个分支机构都相对稳定;应用程序基本上会根据需要检查分支以回答问题。信息技术 声音

    问题是:

    • 在我做了新的树枝之后(用手,用 git checkout -b branch_name 一些 以前的分支机构。例如:

      $ git checkout foobar_JS_enabled_missing_prompt error: The following untracked working tree files would be overwritten by checkout: display_nodename.html Please move or remove them before you switch branches. Aborting

    • 我(想我)需要 git reset --hard

    应用程序进行的git交互(主要使用 ruby-git

    • 实际手动创建回购协议和分支机构。
    • 列出可供提问者选择的分支。
    • 选择分支后,使用

      g = Git.open("data/repos/#{repo}") g.branch(branch).checkout

    • g = Git.open("data/repos/#{repo}") g.reset_hard

    • 我还没有这样做,但是我想为每个问题创建一个归档分支,也就是说,我想让一个问题回答者回顾一个旧的答案,然后切换到该问题的主分支,以便创建一个新的答案。

    更新(11/18):我将把这作为一个评论而不是回答,因为这个问题有点模糊。我从未意识到索引和树是独立于分支的。因此,我的代码实际上有一些微妙的错误,与我让我的树变得不干净有关。在一些地方,我需要在让回答者开始回答之前硬重置代码,即使在大多数情况下,这不是必需的。我还需要在应答者完成后硬重置代码。我需要做的另一件事是检查当前签出的分支并切换到正确的分支(我已经这样做了,但不是在我应该去的任何地方)。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Umesh Malhotra    7 年前

    在切换分支之前,可以将工作保存在隐藏中。 Read here
    在切换到其他分支之前,使用 git stash
    当您再次返回此分支时,您可以通过加载保存在stash中的工作 git stash pop .

        2
  •  -1
  •   phili_b    7 年前

    除了恢复一个旧版本,或者如果你犯了一个错误,git重设必须是非常罕见的。git reset的唯一真正用途是当你不想保存你的工作时。

    在分支之间的每次移动中,您必须在离开之前进行git提交和git推送(即发送到服务器),在git签出之后进行git拉送(即从服务器获取)。

    如果你不这样做,你就会像你所说的那样犯错误。