2012-02-11 70 views
14

我对git和版本控制一般都很陌生,并且对移动文件有疑问。我在GitHub上有一个主数据库,有6个源文件。Git将文件移动到文件夹中

我已经做了大量的项目工作,现在我的本地分支包含两个文件夹,其中的源代码包含在这些文件夹中。

用于像目录结构:

站长:

  • 文件1
  • 文件2
  • 文件3
  • 文件4
  • 文件5
  • 文件6

凡为我的本地分行现在看起来是这样的:

新建文件夹1:

  • 新文件1
  • 新文件2
  • 新文件3

新文件夹2:

  • 文件1
  • 文件2
  • 文件3
  • 文件4
  • 文件5
  • 文件6

如何移动我的局部结构的主分支,而不会失去我的在旧文件上提交历史记录?

回答

11

只要提交。 Git blame等通常会在自动检测移动方面做得相当不错。

7

git并没有实际跟踪文件的“移动”,它会根据类似内容的需求来推断它。所以,只需进行移动并根据需要添加/删除文件即可。 (如果您避免对内容进行更改并在一次提交中移动内容,您将使未来的工具更轻松。)

然后,要查看移动的日志记帐,请使用-M-C或它们的变体为git log。类似的标志适用于其他工具,您应该阅读帮助以了解他们所做的细节。

如果您在文件上使用git mv,它只是为您执行git rmgit add

+0

其他人解释它困难的MV所需要的。创建文件夹到mv第一个为了方便 – doozMen 2013-07-16 14:58:23

4

其他海报是正确的,但是如果你想确认git将看到这些作为移动(而不是删除/创建的组合),请运行git status。您应该看到:

# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# renamed: oldfile.txt -> newFolder/newfile.txt 
+8

如果git确实将移动视为delete/create的组合,那么该怎么做? – Gauthier 2013-08-27 10:01:37

+1

阶段从以前的文件夹中删除文件,然后阶段添加文件在新文件夹 - 最有可能git看到这是重命名。 – Serg 2016-09-21 16:00:27

0

在github上,如果你没有太多的文件移动,一个有趣的选择是编辑文件,并更改了它的名字:

folder_to_move_into/file_name 

当你提交,文件被移动到文件夹。如果文件夹不存在,它将被创建。

相关问题