我刚刚创建了一个新的存储库并添加了一个遥控器:
git init
git remote add foo something
现在我想让git参与foo/master
的最新提交。通常,那只是:
git checkout master
Git很聪明,现在可以使用foo/master
。
挑战在于我的工作副本中已有文件,我不希望它们发生变化。我希望git diff
向我展示更改,我想提交本地状态并将其推送到foo。
背景:本地状态是一个生成的网站,即将被推送到Github Pages。
答案 0 :(得分:1)
如果您刚刚在新存储库中完成git init
(而不是重新init
- 现有存储库),并且还没有运行git commit
,那么您目前正在使用未出生的分支(通常为master
- 未出生的分支)。这意味着HEAD
包含名称 master
,而名为master
的分支实际上并不存在。
如果您还没有运行任何git add
命令,那么您的索引当前为空。
您喜欢所具有的状态是将名称master
指向与foo/master
相同的提交,而不更改工作树的内容。但首先,您需要从远程foo
获取所有提交:
$ git fetch foo
现在您可以创建分支本身:
$ git branch master foo/master
由于您已经在master
- 它只是"未出生的" - 您现在仍然在master
并且master
指向同一次提交为foo/master
。
您的索引仍为空,因此git status
将显示已删除HEAD
提交中的每个文件,工作树中的每个文件都是未跟踪文件。如果您想从当前提交填充索引,现在可以执行以下操作:
$ git read-tree HEAD
然后git reset
各种文件来恢复它们。如果不是 - 如果您只想使用工作树 - 您只需git add .
(尽管您可能想先设置.gitignore
)。