3

我刚开始在我的论文中使用 git,我的问题是什么是适合我的工作流程。这是我的先决条件:

使用的硬件:

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

在知道之前我所做的就是用 LaTeX 写我的论文并在所有这些计算机之间手动复制它。我经常写某事。在一台机器上,但后来我放了一天假,我不知道我的最新版本在哪里。在这些情况下,我使用 diff 来比较并找出最新的文档。

一点点阅读关于 git 的内容告诉我,它对我有很大帮助。我想到了一些事情,比如在服务器上有一个中央仓库,并用所有的计算机推/拉它。

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

但我不确定这是否正确:现在所有计算机都处于同步状态,因此所有本地存储库都包含相同的文件/版本。我已经从我的笔记本电脑 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 而只是克隆到文件空间?有人能让我走上正轨吗?

非常感谢。

4

2 回答 2

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

一旦你确信你已经克隆了存储库并且文件是正确的,你可以删除重命名的原始存储库。

从那时起,无论何时移动到计算机,您的工作流程:

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
于 2012-07-17T14:26:32.157 回答
2

在服务器上创建裸仓库后,您应该从服务器上的裸仓库克隆,而不是在每台计算机上运行 git init。例如,如果您使用 ssh 协议,您可以在其他每台计算机上执行以下操作:

git clone ssh://username@servername:/path/to/bare/repo.git

这将自动将您的源远程设置为带有裸仓库的服务器。然后,您可以在本地计算机上进行所有您想要的更改,在本地提交您的更改,如下所示:

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

然后,您只需执行以下操作:

git pull

当您想要更新时,并且:

git push

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

于 2012-07-17T14:26:58.570 回答