Git: 将 Stage 转为 Commit,什么是正确的工作流程?

10 浏览
0 Comments

Git: 将 Stage 转为 Commit,什么是正确的工作流程?

我刚创建了一大块代码,我想分成几个独立的提交。

因此,我可以暂存相关部分,提交,暂存,提交,...直到我所有的更改都被提交。

缺失的部分是如何测试我是否正确地分割了提交。

即暂存区中的部分至少是否可以编译?

为了做到这一点,我必须以某种方式使我的工作树与索引(暂存区)同步,而不会丢失以后要提交的更改。

正确的方法是什么?

最快的方法是什么?

更新:

如何在magit中实现这一点?

0
0 Comments

Git:将暂存区转换为提交,正确的工作流是什么?

Git是一个非常强大的版本控制系统,可以帮助开发人员管理和跟踪代码的更改。在Git中,有一个重要的概念,即“暂存区”(也称为“索引”),它允许开发人员选择性地将更改添加到下一次提交中。然而,对于一些开发人员来说,理解如何将暂存区转换为提交并采取正确的工作流程可能会有些困惑。

在解决这个问题之前,我们先来了解一下Git的基本工作原理。在Git中,当你对文件进行更改时,它们会被自动标记为“已修改”。然后,你可以使用命令“git add”将这些更改添加到暂存区。一旦你满意你的更改,你可以使用命令“git commit”将它们转换为提交。

然而,有时候你可能意识到你在提交之前需要进行一些修改。这时,你可以使用命令“git commit --amend”来修改最后一次提交。这将允许你添加或修改提交消息,并将修改后的更改合并到原始提交中,而不是创建一个新的提交。

但是,如果你想修改之前的提交,该怎么办呢?这时,你可以使用“git rebase -i”命令来合并、重新排序或删除提交。通过编辑交互式rebase界面中的提交顺序,你可以将临时提交与目标提交合并。

那么,有没有更简单的方式来处理这个问题呢?幸运的是,有一个称为Magit的Git客户端,可以使这个过程更加简单和直观。在Magit中,你可以使用“u”或“s”命令来将更改添加到暂存区,使用“c”命令提交更改,并使用“z”命令将更改存储为一个临时的“stash”。当你想要重新应用这些更改时,你可以使用“A”命令。

使用Magit进行这些操作非常直观和简单,而且可以通过按键来完成,而不是手动输入命令。这使得整个过程更加流畅和高效。

总之,将暂存区转换为提交并采取正确的工作流程对于有效地使用Git非常重要。通过了解Git的基本原理,并使用像Magit这样的工具,开发人员可以更轻松地管理和跟踪他们的代码更改,从而提高他们的开发效率。

0
0 Comments

Git: Stage into Commit,什么是正确的工作流程?

Git是一个非常流行的版本控制系统,用于跟踪和管理软件项目的代码变化。在使用Git时,将代码从暂存区(Stage)提交到本地仓库(Commit)是一个非常重要的步骤。然而,有时候我们可能会遇到一些问题,比如如何将不完整的工作保存下来,或者如何将多个相关的提交合并到一个干净的提交中。这就是出现这个问题的原因。

为了解决这个问题,可以使用以下工作流程:

1. 创建一个中间分支(比如task1)来记录一些中间提交。这样当我们慢慢地向暂存区添加一些内容时,可以将这些中间提交保存起来。

$ git branch task1 # 第一组要提交的内容

2. 使用交互式方式(interactive)来添加需要提交的内容。这样可以选择性地添加代码。

$ git add -i

3. 每当需要检查已添加的内容时,可以使用git stash --keep-index命令。

$ git stash --keep-index

4. 如果代码能够编译通过,就可以使用git commit提交当前工作。如果task1还没有完成,可以使用git stash pop命令恢复完整的工作树,然后重复上述步骤。

5. 一旦task1完成,可以使用git branch -D task1命令删除中间分支,并将所有工作合并到主分支(master)中。

$ git checkout master
$ git merge task1
$ git branch -D task1 # 不再需要中间分支

6. 如果想要保留一些task1的重要提交记录,可以在将master合并到task1之前,先将task1在master的基础上进行变基(rebase)。

7. 最后,如果工作区中仍然包含一些正在进行中的工作,可以为task2重复以上步骤。

通过使用中间分支、交互式添加、保存工作进度、合并提交等方法,可以帮助我们解决将代码从暂存区提交到本地仓库的问题,并提供了一个正确的工作流程。这样可以保持提交的干净和有序,更好地管理和追踪代码变化。

0