我已经使用 tortoise SVN 几年了,但现在开始使用 Git。有人能解释一下在 Git 中执行以下操作的过程吗:
获取最新信息,签到
我已成功克隆存储库、进行更改、提交并推送更改。Git 说一切正常,但我无法在远程服务器上看到更改。
我的设置是:
带有 Git repo 的远程服务器和连接到 Git 的开发机器以获取解决方案的本地副本来进行工作。
此外,当我在本地机器上查看历史记录时,一切都很好!它显示了所有历史记录,当我转到服务器时,更改没有显示出来!
如果我做得不正确,请告诉我!
答案1
回答你的问题... Git 中确实没有“签入签出”流程。这些参考资料适用于集中式 VCS,而不是分布式。
使用集中式 VCS 时,有一个绝对的代码库...源代码。使用分布式 VCS 时,情况并非如此...
Git 有一个称为索引的抽象层,它将工作目录代码与存储库分开。在这方面,您必须将更改添加到索引,然后将其提交到存储库。但是,该提交并不反映对工作目录的直接更新。
为了让您在提交后在远程端物理上“看到更改”...您需要一个钩子来广播到远程工作目录以从更新的 repo 中提取...
这里的假设...但我假设您想做一些类似于网站管理工作流程的事情。使用 Git 管理网站
Git 是一种极其强大和稳健的 DVCS...但是,您需要充分了解它的工作原理才能有效地使用它。恕我直言,我建议您完整阅读文档。但是,这是一个非常值得信赖的起点 :-)Git 魔法
答案2
我将显示使用 github 作为我的存储库服务器的工作流程:
If I've not nothing on my machine:
$ git clone [email protected]:<username>/<repository-name>.git
现在您有了本地副本。如果您已经有副本,则无需再次克隆。只需拉取:
$ git pull origin master
此命令将所有更新从服务器下载到您的机器。
现在您可以工作了。提交。当您准备好时。您可以使用以下命令将代码推送到服务器:
$ git add .
$ git commit -m 'some stuffs'
$ git add .
$ git commit -m 'some others stuff'
...
$ git add .
$ git commit -m 'some others stuff'
$ git push origin master
命令“git push origin master”将您的代码推送到服务器上。如果其他用户已经推送了一些提交!?!?!好吧:在推送代码之前,您需要运行“pull”。这是我喜欢的顺序:
1:
$ git pull origin master // now I can start to work
2:
$ git add .
$ git commit -m 'some stuffs'
$ git add .
$ git commit -m 'some others stuff'
...
$ git add .
$ git commit -m 'some others stuff'
3:
$ git pull origin master
$ git push origin master
如果拉取之后出现冲突,只需修复它们,添加,提交,最后推送。
答案3
@Funky,
由于您可以在本地查看历史记录,因此我假设您能够将更改正确提交到 git repo 的本地副本。不清楚您在远程(“服务器”)上做什么:“...当我转到服务器时,更改没有显示!”。根据“服务器”(远程)的配置方式,您可能无法像在开发机器上一样看到内容。
如果您确定您的更改确实不存在于远程(“服务器”)上,那么您可能只是错过了这个(在您的本地开发机器上):
git push origin master
git status
上述命令的前后将为您提供有关本地和远程副本之间任何差异的有用信息。
要仔细检查,请转到另一台机器(或同一台开发机器上的另一个文件夹)并执行以下操作:
git clone <git-url-of-your-server>
。并验证您的更改是否存在。