2013-12-18 34 views
0

在工作中發生了幾次大規模故障後,我決定在工作時應該進行某種版本控制。我選了git。Git推送在知識庫中不可見

  • 安裝的混帳
  • 創建了管理員帳戶的存儲庫
    • cd /path/to/hd/
    • cd mkdir test.git
    • cd test.git,以確保它不是一個純倉庫
    • git init
    • touch README.txt創建一個文本文件
  • 克隆的資源庫git clone /Volumes/Data/git/test/
  • 創建一個分支git checkout -b mybranch
  • 所做的修改自述文件
  • 推分支git push origin mybranch
  • 搬回掌握git checkout master
  • 刪除分支git branch -d mybranch

到目前爲止,一切似乎都奏效。所以我查找服務器上的文件,但它們保持不變。當我打開test.gitGitX,提交存在。變化在那裏。但實際的文件並沒有改變。

我在做什麼錯?

PS。我遵循本指南:http://rogerdudler.github.io/git-guide/

+0

我假設你創建'test.git'作爲裸回購? (即你做了'git init --bare')如果是這樣,它沒有工作目錄,所以你不會在那裏看到提交的文件。 –

+0

您是否更新上游服務器上的工作副本?聽起來不像。起源git只是一個正常的git回購,與您的克隆沒有任何區別,任何簽出的文件都不會在沒有merge/pull/rebase的情況下奇蹟般地獲得更改。 – hyde

回答

1

您看到的是將工作副本推送到存儲庫的結果。當您使用工作副本推入回購時,有兩種可能的結果。

  • 如果當前檢出的分支是您嘗試更新的分支,則推送將失敗。
  • 否則,您推送到的分支將被更新,但工作副本不會更改,因爲不同的分支已更新。

你現在在服務器上有什麼大概是這樣的:

A <- master 
| 
B <- mybranch 

當主被檢查出來,因爲你還沒有改變主沒事的時候你推到服務器出了問題。

因爲這個原因,當你創建一個你將要用作遠程的倉庫時,你幾乎不希望它有一個工作副本(即實際檢出的文件)。你想創建一個純倉庫,也可能希望它被共享,就像這樣:

git init --bare --shared=true 

shared選項也可以是一些其他的設置,請參閱git help init的選項。

我認爲你正在尋找的工作流程是沿

  • 線的東西在服務器
    • git init --bare --shared=true
  • 在你的機器
    • git clone /path/to/remote
    • git checkout -t -b mybranch
    • [做的工作,提交於mybranch]
    • 要麼
    • git checkout master && git merge mybranch && git push origin master更新主遙控器上的
    • git push origin mybranch而不更新主創建遙控器上的分支mybranch
0

我不知道,但是把之前也許git commit會有幫助嗎?