Git初学者问题:
我有一个小的私人webproject,使用msysgit在本地进行版本控制.没有外部存储库,因为它只适用于我,所以我可以基本上做任何我想做的事情.
我已经在项目目录中设置了这个,即在"webroot"中.
现在必须创建第二个目录,与webroot平行放置.我们称之为资产.
所以结构现在如下:
\ project directory
----\webroot
----\assets
Run Code Online (Sandbox Code Playgroud)
我想在git存储库中包含这个新目录,这样我也会对存储在那里的文件进行版本更改,但当然我不能使用"git add ../assets".我也不倾向于在project_directory中创建一个新的git项目,因为这会松开我以前的所有提交.
那么如何将存储库从"webroot"移动到"project_directory",同时保留我的提交然后能够包含"资产"?
我有一个git存储库,其结构如下所示:
+--repo.git
|
+----+bootstrap.py
+----+buildout.cfg
+----+.gitignore
+----+webapp
|
+---------+manage.py
+---------+modules
+---------+templates
+---------+static
+---------+...
+---------+...
Run Code Online (Sandbox Code Playgroud)
我想将webapp文件夹的内容向上移动一级.我的结果回购应该是这样的:
+--repo.git
|
+----+bootstrap.py
+----+buildout.cfg
+----+.gitignore
+----+manage.py
+----+modules
+----+templates
+----+static
+----+...
+----+...
Run Code Online (Sandbox Code Playgroud)
我可以通过简单地将webapp目录的所有文件移动一级,删除空webapp目录然后提交更改来完成此操作吗?这会保留webapp目录下文件的提交历史吗?
虽然对很多人来说这是一个非常简单的问题,但我想确定一下.我想要的最后一件事就是喝汤.
我尝试移动文件,但我丢失了提交历史记录,因为git没有真正处理移动或重命名.我知道即使它在日志中显示为新文件,仍然可以使用一些选项查看文件的提交历史记录git log.
根据我的阅读,实现这一目标的最佳方法是使用git-filter.我对shell或git不是很好,所以有人可以告诉我我需要执行上述操作.
你能提供一个(全部或最常见的)操作或命令列表,这些操作或命令会危害git中的历史记录吗?
什么应该绝对避免?
git commit/ git push/ git commit --amend)我希望这个问题(如果它还没有在其他地方之前提出过)成为关于git上常见的可避免操作的某种参考.
此外,我使用git reset了很多,但我还没有完全意识到我可以对存储库(或其他贡献者副本)造成的损害.可能git reset有危险吗?