Git 我想以一种方式推送我的所有文件,以便以后可以在存储库中打开它们
我不知道发生了什么,Git开始告诉我,我在当前存储库中添加了另一个Git存储库。我不记得做过,我整天都在写代码和配置文件 所以它给了我这个Git 我想以一种方式推送我的所有文件,以便以后可以在存储库中打开它们,git,Git,我不知道发生了什么,Git开始告诉我,我在当前存储库中添加了另一个Git存储库。我不记得做过,我整天都在写代码和配置文件 所以它给了我这个警告:添加嵌入式git存储库:client 我试着做了git-rm--cached-client-f,git不在乎,警告仍然存在 所以我做了一个git添加。 当我推送项目时,我无法打开client/文件夹作为Github存储库上的链接 我删除了Github存储库 我回到了未为提交而进行的更改:modified:client(已修改的内容,未跟踪的内容),它也不
警告:添加嵌入式git存储库:client
我试着做了git-rm--cached-client-f
,git不在乎,警告仍然存在
所以我做了一个git添加。
当我推送项目时,我无法打开client/
文件夹作为Github存储库上的链接
我删除了Github存储库
我回到了未为提交而进行的更改:modified:client(已修改的内容,未跟踪的内容)
,它也不允许我执行git签出--client/
我基本上是想确保当我为这个项目创建一个repo并推送所有这些文件夹时,我能够单击这些文件夹并查看其中的文件
这是我的Dockerfile.dev
在client/
中:
FROM node:alpine
WORKDIR '/app'
COPY ./package.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "start"]
FROM node:alpine
WORKDIR '/app'
COPY ./package.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx
EXPOSE 3000
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/build /usr/share/nginx/html
这是我的Dockerfile
,用于client/
内部的生产目的:
FROM node:alpine
WORKDIR '/app'
COPY ./package.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "start"]
FROM node:alpine
WORKDIR '/app'
COPY ./package.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx
EXPOSE 3000
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/build /usr/share/nginx/html
我不相信上面的任何配置都可以在客户机/
中创建.git
文件夹
我查看了我的命令行历史记录,没有看到我在client/
目录上运行了git init
在这一点上,我该如何清理git-rm——缓存的客户端
似乎不起作用,git-clean-f-d也不起作用
我回来了
changes not staged for commit:
modified: client (modified content, untracked content)
这表示您现有的Git存储库正在将路径名client
视为子模块。子模块只是对其他Git存储库的特定形式的引用
整个情况很快就会变得混乱,因为每个本地(例如,在笔记本电脑上)Git存储库通常都包含对另一个Git存储库的引用:位于托管提供商(如GitHub)上的一个。也就是说,如果我们画一个关系,我们会得到这样的结果:
+-----------------+ +-----------------+
| your Git repo | --origin-> | GitHub repo |
|=================| |=================|
| commits | | commits |
| (shared w/ | <=========> | |
| origin) | | |
|-----------------| | |
| branch names | (private) | |
|-----------------| |-----------------|
| remote-tracking | | branch names |
| names: origin/* | <------------- | |
+-----------------+ +-----------------+
其中,b789abc…
实际上是第三次回购中的提交。当然,第三次回购也可以有自己的来源
,这将是图片中的第四个存储库。第四个存储库也可能位于GitHub、Bitbucket、GitLab或其他任何地方
要正确使用子模块,您自己的存储库(Git调用超级项目的存储库)必须包含一个名为.gitmodules
的文件。这个文件列出了第四个Git存储库的URL,也就是我们没有在这里绘制的那个
在本例中,我们在您的存储库中显示了一个包含文件快照的提交,以及一个gitlink。该gitlink表示,对于名称客户机
,使用该存储库的任何人都应该克隆子模块存储库,并告知Git toGit checkout b789abc…
(通过其唯一的散列ID)
您要存储在.gitmodules
中的URL使克隆您的GitHub存储库的任何人都可以克隆第四个存储库。在这之后,他们的本地(笔记本电脑)克隆可以使用散列ID(在本例中为b789abc…
),该散列ID存储在您的笔记本电脑和GitHub超级项目存储库中共享的提交的gitlink条目中,以git checkout
在他们的本地git存储库中通过克隆第四个git存储库生成的正确散列ID
(您可能需要多次阅读本节。它很复杂!)
如果你不想要一个子模块呢?
如果您根本不想要子模块:
mv client /some/other/path
(或用于移动所有内容的任何内容,包括.git
文件夹).git
目录/文件夹.git
目录移出client/
子目录,或者将其完全删除。)
现在您有了以前使用过的普通文件,但您可以用普通方式添加普通文件,因为客户机/
文件夹中没有.git
文件夹。您的Git存储库不会试图通过所有这些子模块来控制其他Git存储库
不幸的是,您必须在除去已创建的任何子模块后执行此操作。这很痛苦。一定要这样做。如果现有提交将客户机
列为子模块,则无论何时使用这些现有提交,都必须非常小心,或者执行主要的历史记录重写操作,将所有这些提交替换为新的和改进的提交,而这些提交不将客户机
用作子模块
如果您没有提交任何引用此子模块的提交,并且没有.gitmodules
文件,请参阅下面的最后一节
如果您确实想要一个子模块,但只是想更新它呢?
这有点棘手,但其实没那么糟糕。记住:子模块是一个Git存储库。它应该在GitHub或其他任何子模块调用的origin
上有一个对应项。子模块本身几乎不知道或者根本不知道它存在于超级项目之下:它只是一个普通的老Git存储库。唯一特别的是超级项目倾向于将cd
放入子模块Git中,并告诉它Git checkout
一次按hash ID提交,将其置于分离头模式
因此:您自己输入子模块,并通过为当前提交创建一个新的分支名称,或签出一些现有的分支名称,使其脱离“分离头”模式。如果您有需要保存的更改,可以g
cd .. # or whatever to get to the superproject
git add client
git add client
git rm --cached client