从文件的先前版本转移零件?

时间:2018-07-03 07:21:30

标签: git edit development-environment

我经常编写文件的草稿版本,提交,然后使用我所学的知识重新开始。我经常剪切并粘贴草稿中的好部分。

问题是,如果我checkout(文件)的草稿,它将覆盖(文件)的新版本,因为它们具有相同的名称... [这都只是一个文件]

理想情况下,请在vim中编辑草稿版本(旧版本)和刷新版本(新版本),就像这样的语法:

vi HEAD^^/Myfile Myfile

如何在文件的两个版本之间传输信息?

  • stash当前版本,checkout较旧版本,将其从git存储库中复制 ,然后重新应用存储。现在我可以访问两个版本,但不是很像git!

  • 使用其他名称签出,然后将其保留在目录中(例如myfile_draft.ext)。我可以同时使用这两个版本,但容易被误判。

  • 交互式补丁。一种笨拙且不自然的文件编辑方式!

是否有一种自然的git-like方法?

或者,我对草案的使用是否有问题,并且有一种更好的,更像git的方式来从初始版本进行构建?

1 个答案:

答案 0 :(得分:1)

一个可能的选择

初始状态:

A - B - C - D (HEAD, draft-version)

创建一个新分支并将其重置为新的“起点”:

git checkout -b new-version
git reset A

中间状态:

A (HEAD, new-version) - B - C - D (draft-version)

BCD所做的更改将作为未提交的更改显示在“新版本”分支上。现在,您可以编辑文件,保留您喜欢的文件,删除不想要的文件然后再次提交。

git commit

最终结果:

A - B - C - D (draft-version)
 \
  E (HEAD, new-version)