2012-07-17 80 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