2017-05-31 133 views
0

我曾在SO和其他地方看到过,建议不要在Google云端硬盘上使用Git回购。但是,我可以将Git仓库(托管在GitHub或Bitbucket上)克隆到Google Drive,还是会有同样的问题?将git回购克隆到Google Drive

我的场景与使用多台计算机有关。假设我已经在工作中检查了计算机1的回购并开始使用功能A,但是在完成功能A之前,我需要离开工作。现在,我不想将更改推送到远程回购,因为它尚未完成,但我想在计算机2(在家中)上处理它。如果该克隆位于Google云端硬盘中,那么我可以选择离开的地方,并在功能A完成时进行推送。

或者Google云端硬盘上的克隆与Google云端硬盘上的回购存在相同的问题?

编辑:我应该说,我喜欢在Google Drive中拥有克隆的另一件事是我只有一个工作克隆,所以在切换计算机时不必担心推拉。

+0

[版本控制系统](https://en.wikipedia.org/wiki/Version_control)是在40多年前发明的,用于解决您今天遇到的问题,在多台计算机上工作(由不同的人或同一个人,它并不重要)。您现在要问的是,如果最好忽略VCS提供的所有功能并手动处理所有功能(如在VCS之前)。一个分支就是你需要的,Git擅长处理它们。阅读[Git分支](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell)。 – axiac

+0

它会有相同的问题。 **不要**混合文件/文件夹同步机制和DVCS存储库。 –

+0

您的问题的解决方案只是使用分支机构。为你推动的工作创建一个分支,这不需要完成,不需要构建,甚至不需要完整的代码。如果您希望在回家后最后一次提交时“继续”,只需执行'git commit --amend'。由于这是* your *分支,因此如果您使用其他计算机的更新提交替换提交,则没有人应该关心。 –

回答

2

你说:

现在,我不想我的变化推送到远程的回购,因为它没有完成,但我想在计算机2上它的工作(在家里)。

这个问题有很多解决方案,并没有像使用Google Drive作为Git仓库那样充满异国情调。

一种选择是简单地提交并将未完成的工作推送到常规的Git存储库(例如GitHub,Bitbucket)。然后,拉那支在家里,完成特征,并修改HEAD承诺:

git commit ---amend 'finished the feature at home' 
git push --force origin yourBranch 

注意力推是必要的,因为我们已经重写了该分支的历史。

但是,如果有问题的分支被公开共享,这个选项可能就不那么好了。在那种情况下,你的临时提交可能被其他人的工作所掩埋。解决方法是只创建一个包含未完成工作的第二个分支。然后,在家中拉第二个分支,完成工作,并通过合并或重新绑定将其带入主分支。

Git的一个优点是其在分布式环境中的良好功能。你应该试着看看Git已经可以为你做什么。