2013-01-23 68 views
0

老实说,我的背景是SVN,git完全混淆了我,而git的文档对我没有任何意义,没有,零。git:从远程仓库获取所有文件

我从同事的一些通信中得知,远程存储库中还有其他目录和文件与他们正在处理的内容有关。我没有在当地看到他们。我希望我的本地工作空间能够反映所有这些变化。我不知道所有文件的名称 - 可能有数百个。

有点像克隆,但不抱怨本地副本存在。我已经尝试过各种命令,无论是“致命错误”还是“已经最新”。

到目前为止,我已经设法覆盖并丢失了一些现有的工作。不知道我是怎么做到的 - 我认为版本控制永远不应该永远(×254)让这种事情发生!

+0

在Git中,没有SVN中的经典“工作副本”。当您克隆Git存储库时,您将创建一个完整的副本,包括整个修订历史记录。我建议阅读一些关于该主题的教程 - 例如,[Git book](http://git-scm.com/book/de)非常出色;此外,还有一个很棒的[Github互动教程](http://try.github.com/levels/1/challenges/1)。 – helmbert

回答

2

使用git时,您始终拥有远程软件仓库的克隆。

svn update大致相当于为git fetch其获取所有新提交从远程仓库后面是git merge remote/master(或者你可以使用git pull命令,做这两个步骤)。在执行git mergegit pullgit fetch是安全的)之前,在本地执行所有更改通常是个好主意,因为它会尝试将更改与远程分支合并,并可能导致冲突。

svn commit的粗略等价物是git push,它会将您的更改发送到远程软件仓库,并将更新对那里分支头的引用。在进行推送之前,您应该始终进行合并,否则您可能会意外删除您的同事更改。尽管您的团队可能有另一个工作流程(将补丁发送给负责集成的单个人员)。

如果你来自svn,理解git最简单的方法就是认为你总是在一个分支上工作,并且与团队的其他成员共享是通过合并你的或者你的参考分支。

否则,我真的会推荐阅读Git book或至少Git SVN crash course

+1

会不同意。我正在比较我和同事之间的两个本地副本:他有我的东西丢失。关于这些命令,已经完成了:git fetch&git merge和git pull - “一切都是最新的。”但我知道这不是。我从远程存储库中缺少整个项目。 –

+0

你是否在正确的分支?你合并了正确的分支吗?你可以试试'git checkout -b $ {new-branch-name} remote/$ {远程分支名称}',看看你是否得到了所有的代码。 –

+0

谢谢你的帮助。我所做的是丢弃我的本地并克隆一个新的。它是完整的。不知何故,我必须不可逆转地搞砸我的本地。 –