我读过关于git及其行为的文章,并尝试了一个关于乌龟git的小实验。现在我不确定是否真正理解git的基本知识,特别是关于workspace/index/localRepo/remoteRepo的"位置"。。。
我的理解是,最佳实践是将工作区与localRepository
分离。
因此,使用trutoiseGit,我创建了一个空的repo"localRepo.git
"。我还创建了分开的"workspace
"one_answers"workspace2
"目录。在每一个中,我都克隆了repo。
在这一点上,我认为在"workspace
"和commit
中创建一个新文件应该会使其出现在"localRepo.git
"的"Repo浏览器"上,不幸的是,事实并非如此。。。
事实上,我必须做一个push
,才能在repo浏览器中看到它,并在"workspace2
"中获得它,例如
所以我的问题是,我认为push
操作的目的是将我的修改放在远程存储库中,但我认为"localRepo.git
"是我的本地存储库。。。。
Basicaly,我想我不明白本地存储库和远程存储库之间是否有区别。
据我所知,最佳实践是将工作区与localRepository分离。
你是从哪里得到这个想法的?Eclipse的Egit鼓励这样做,但我很少在其他地方看到这样做。
使用trutoiseGit,我创建了一个裸回购"
localRepo.git
"。我还创建了分开的"workspace
"one_answers"workspace2
"目录。在每一个中,我都克隆了repo。
克隆存储库将创建一个新的存储库。在这一点上,您有三个本地存储库:一个裸存储库localRepo.git
,以及workspace
和workspace2
中的两个非裸存储库。
由于您从localRepo.git
克隆了workspace
和workspace2
存储库,因此默认行为是将localRepo.git
设置为其他两个存储库中的远程(origin
)。您可以使用查看配置的遥控器
git remote -v
这比大多数情况下需要的要复杂得多。通常,一个本地存储库就足够了。
在这一点上,我认为在"
workspace
"和commit
中创建一个新文件应该会使其出现在"localRepo.git
"的"Repo浏览器"上,不幸的是,并不是这样
在workspace
中提交文件会将其提交到该存储库。
所以我的问题是,我认为
push
操作的目的是将我的修改放在远程存储库中,但这里我认为"localRepo.git
"是我的本地存储库
git push
将提交复制到另一个存储库(通常是远程存储库)。正如我们在上面看到的,localRepo.git
被配置为其他两个存储库的名为origin
的远程,因此push
ing默认将提交发送到那里。