2012-07-17 66 views
3

我刚开始使用git作为我的论文,我的问题是对我来说适合的工作流程。 这里我的先决条件:服务器涉及的论文的合适Git工作流程

所使用的硬件:

  • 笔记本电脑在家里
  • 笔记本B时的我在图书馆我使用的上网本使用
  • 在大学
  • 私人文件空间
  • 台式电脑在我的大学的服务器上也运行git(预装大学,不错,是不是?)

直到我知道用LaTeX写出我的论文并用手在所有这些计算机之间进行复制之前我所做的一切。经常发生,我正在写某事。在一台机器上,但然后我有一天休息,我不知道我的最新版本在哪里。在这些情况下,我使用diff来进行比较,并找出哪个文档是最近的文档。

关于git的一点点阅读让我觉得它会帮助我很多。 我想到了这样的东西,像在服务器上有一个中央回购,并与所有计算机推/拉/从它。

我现在已经在服务器上创建了一个裸回购,并在每台计算机上创建了本地存储库(由git init)。

但我不确定这是否正确: 现在所有计算机都处于同步状态,因此所有本地回购站都包含相同的文件/版本。我已经被推到了裸露的回购协议从服务器上我的笔记本电脑A.

我试图从服务器回购拉我的台式电脑:

git pull origin master 

输出:

* branch   master  -> FETCH_HEAD 
Merge made by the 'recursive' strategy. 

创建如果我正确地理解了它,我的台式计算机上的一个分支。在开始使用台式机之前,我是否应该在此之后应用任何进一步的操作?

闯闯是:

git pull origin master:master 

输出:

! [rejected]  master  -> master (non-fast-forward) 

至于我在Git的书,是一个预期的行为,虽然我不能说为什么读它。这不会阻止每次我拉时创建一个新的分支吗?

无论如何,我现在阅读了很多帖子,这里是关于stackoverflow和官方git书的一些章节,但我必须说,我的脑袋有点嗡嗡。

我不知道我从这里开始的工作流程对于我想达到的目标是否正确。也许我不应该使用服务器的git,但克隆到文件空间? 有人能让我走上正轨吗?

非常感谢。

回答

2

在服务器上创建裸回购,而不是在每台计算机上运行git的init之后,你应该从裸回购克隆上服务器。例如,如果您使用的是ssh协议,你可以做所有其他计算机上的是这样的:

git clone ssh://[email protected]:/path/to/bare/repo.git 

将在您的起源远程自动设置为与裸回购服务器。然后,您可以让所有你希望你的本地计算机上的变化,这样的事情在当地提交更改:

git add . 
git commit -m 'Made some changes' 

然后你只需要做:

git pull 
当你想更新,并

git push 

当您想要将您本地提交的更改推送到服务器。

2

不,您不会在每台计算机上创建存储库。您可以在一台计算机上创建回购,推到中央回购处,然后从其他位置克隆。

最简单的办法:

Laptop A: leave alone 
Laptop B: change name of existing git repository to retain it as a backup. Then `git clone <url>` from central repo 
Desktop: same as laptop B 

一旦你确信你已经有了克隆的资源库和文件(S)是正确的,你可以删除原来的重命名版本库。

从此你的工作流程。只要移动到计算机:

git pull (to receive any changes you pushed while on a different computer. If it exits silently, there were no changes) 
work, work, work 
git add . 
git commit -m <comment> 
git push