假设下面的远程存储库有一个工作目录,因此它也有一个当前分支。
是否正确?
git push
可以推送到远程存储库中的当前分支,并且git push
不会更新远程存储库的工作目录? 我从Git获得版本控制的想法,由Loeliger,2ed, 特别是粗体文字:
回想一下, git push命令不会检出接收存储库中的文件。它只是从源传输对象 存储库到接收存储库,然后更新 接收端的相应引用。
在裸存储库中,这种行为是可以预期的,因为没有可以更新的工作目录 签出文件。非常好。但是,在一个发展中 作为推送操作的接收者的存储库,稍后可以 对使用开发存储库的任何人造成混淆。
推送操作可以更新存储库状态,包括HEAD 提交。即使远程端的开发人员已经完成了 什么都没有,分支引用和HEAD可能会改变,变得不同步 带有签出的文件和索引。
正积极在存储库中工作的开发人员 异步推送发生不会看到推动。但后续 该开发人员的提交将发生在意外的HEAD上,创建一个 奇怪的历史。强制推送将失去对方的推送提交 开发商。该存储库中的开发人员也可能找到自己 无法将她的历史记录与上游存储库或 下游克隆因为它们不再像前面那样简单快速 他们应该是。她不会知道原因:存储库已经默默无闻 从她的下面变了出来。猫和狗将一起生活。 这会很糟糕。
git push
是唯一的git命令
在更改工作目录时不会更新工作目录
同一个存储库的当前分支?什么是其他类似的git命令? (对我来说,其他命令
更改当前分支将更新工作
同一存储库的目录。)答案 0 :(得分:5)
git push可以推送到远程存储库中的当前分支,并且
当发生这种情况时,git push不会更新远程存储库的工作目录吗?
通常在git服务器上有bare repository
。裸露意味着您没有git文件系统,而是文件夹包含.git
文件夹的内容。
回想一下,git push命令不会检出接收存储库中的文件。它只是将对象从源存储库传输到接收存储库,然后更新接收端的相应引用。
这是正确的,因为你没有工作文件夹,你没有任何文件,所以在推送过程中没有内容结账。
正如@VonC先前的问题已经回答过你:
从Git 2.3+开始,您可以配置 接收端到"有一个工作目录,并在接收存储库中检出分支。&#34 ;
...对我来说,更改当前分支的所有其他命令都将更新同一存储库的工作目录。
同样,通常在远程服务器上,存储库是一个裸存储库,因此没有文件签出到工作目录。
由于git是一个分布式版本控制系统,没有人会直接编辑共享集中式存储库中的文件。相反,开发人员将克隆共享裸仓库,在其仓库的工作副本中进行本地更改,然后回退到共享裸仓库,以便将其更改提供给其他用户。