将现有的源代码文件夹添加到本地Git仓库中

5
假设我有两个现有的文件夹,我想将它们放到Git源代码控制下。一个名为CurrentProduction,另一个名为CurrentDevelopment。以下步骤正确吗?
  1. 创建名为MyProject的新文件夹
  2. git init
  3. 将CurrentProduction内容移动到MyProject
  4. git add .
  5. git commit -m 'initial master commit'
  6. git checkout -b develop
  7. 删除MyProject中所有文件(当然除了.git文件夹)
  8. 将CurrentDevelopment内容移动到MyProject
  9. git add -A
  10. git commit -m 'initial develop commit'
还是有"不同"的方法吗?

听起来没问题。确保这些目录中没有垃圾。话虽如此,为什么不试试呢?:) - Michael Krelin - hacker
2个回答

1
  • 按照您描述的方式操作不会造成任何损害。

  • 您可以将 .git 目录移动到要提交的树中,而不是将树移动到存储库中。

  • 您可以使用 --work-tree 选项或 GIT_WORK_TREE 环境变量来模拟这样做:

    git add --work-tree=CurrentProduction -A; git commit ...
    

    请注意,在 add 命令之后的命令中不需要指定它,因为 add 将内容复制到索引中,commit 使用索引,而索引位于 .git 中。

作为一个独立的问题,请注意您的过程将使develop的初始提交成为master的子提交。对于这种情况,这可能是正确的事情;我只是想确保您知道它不是对称的。

我尝试使用 git add --work-tree 但它不起作用。 我找不到关于 --work-tree 选项的任何信息(特别是针对 git add 的信息)。 我正在使用 git 版本1.7.3。 - Paul Pladijs

0

这是一个好方法。

唯一可能的问题是,如果您查看使用git log的develop分支的历史记录,则最后提交(具有“初始主提交”的提交)将具有当前生产项目状态。从语义上讲,这并不完全正确。

如果这让您感到困扰,可以首先进行初始空提交,该提交用作两个分支的公共基础:

git init .
git commit --allow-empty -m "initial commit"
# add CurrentProduction content
git add .
git commit -m "initial master commit"

# checkout at the empty commit
git checkout -b develop HEAD^

# no need to delete any files!
# working tree is empty
# add CurrentDevelopment  content
git add .
git commit -m "initial develop commit"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接