2017-07-26 202 views
0

我對git相對陌生,想要測試它。我的webhosting允許通過SSH的GIT,我發現一些教程,但現在我卡住了。對不起,如果我的問題聽起來很愚蠢。Git Push - 不工作

我所做的:

  1. 登錄到我通過SSH遠程主機商和初始化一個新的Git項目:

    git init 
    git add . 
    git commit -m 'version 1.0.0' 
    

這輸出了我一個很長的文件列表,即已更新。

  • 我克隆我的本地計算機上的存儲庫,並創建新文件「index2.php」

    git clone XXX.git 
    cp index.php index2.php 
    git add index2.php 
    git commit -m "Index2.php added" 
    
  • 然後我試圖推新「索引2。 PHP「文件到我的服務器上。得到一個錯誤,所以我不得不到遠程服務器git config receive.denyCurrentBranch ignore

    git push origin master 
    Counting objects: 2, done. 
    Delta compression using up to 4 threads. 
    Compressing objects: 100% (2/2), done. 
    Writing objects: 100% (2/2), 231 bytes | 0 bytes/s, done. 
    Total 2 (delta 1), reused 0 (delta 0) 
    To ssh://XXX.git 
    1b79ddf..1cfe422 master -> master 
    
  • 上設置好像文件已被按下。但是當我在遠程服務器上執行ls -l時,新文件「index2.php」不存在。爲什麼?我忘了什麼嗎?

  • UPDATE: 當我做我的遠程服務器上的git的狀態,我得到如下:

    git status 
        On branch master 
        Changes not staged for commit: 
        (use "git add/rm <file>..." to update what will be committed) 
        (use "git checkout -- <file>..." to discard changes in working directory) 
        deleted: index2.php 
    

    這是什麼意思?

    +0

    git log命令在遠程服務器上顯示的是什麼?它顯示提交「Index2.php添加」? – yaswanth

    +0

    這是日誌的輸出:提交1b79ddf432ea910056c5b4be7e8a637dd4ef1124 著者:丹尼爾Barenkamp <[email protected]> 日期:星期三07月26 9時42分53秒2017 0200 索引2加入 –

    +0

    _「得到了一個錯誤,從而我不得不在遠程服務器上設置git config receive.denyCurrentBranch忽略「_ - 你應該停在那裏,因爲你正在做一些你不應該做的事情。你應該在服務器上創建一個裸存儲庫,並且只能在那裏推送。 – 1615903

    回答

    0

    我假設你能夠在遠程服務器上執行git log時看到「index2.php added」提交。糾正我,如果我錯了。這些是你可以做的事情。

    1. 檢查index2.php是否存在於推送的實際git倉庫中。

    2. 在遠程服務器上執行git pull以獲取推送的所有最新提交。

    編輯1:

    這意味着沒有遙控器上的遠程配置。您需要在您的遠程服務器中執行git remote add origin XXX.git

    以下是發生了什麼情況。

    您在遠程服務器上初始化一個空的git倉庫並添加了一個提交。但是你沒有將更改推送到git服務器。本質上你的遠程服務器沒有連接到任何git服務器。如果您注意到,在本地執行git log將不會顯示您在遠程服務器上執行的提交。

    +0

    Git日誌說已添加index2。它也存在於我的本地存儲庫中。 Git Pull給了我下面的錯誤'致命的:沒有指定遠程存儲庫。請指定一個URL或一個 遠程名稱,從中應該提取新的修訂版.' –

    +0

    但是遠程服務器是我的「git服務器」(安裝了git)。我沒有任何其他的git服務器。或者我可能誤解了一些東西? –

    +0

    所以幫助我理解一些東西。 git將在兩個地方。一個在本地,另一個在託管git的服務器上。 git服務器可以是流行的供應商,如github,bitbucket,gitlab等。我假設你的遠程和本地是兩個系統,試圖從實際的git服務器拉和推。糾正我,如果我錯了。 – yaswanth

    0

    Git通常與遠程的裸露克隆一起使用。這就是GitHub/BitBucket和其他提供者的工作方式。因此,您需要在SSH服務器中創建一個裸存儲庫,以便無需進一步配置即可推送更改。要將現有的存儲庫轉換爲裸機,請執行以下操作:

    1. SSH到您的服務器。
    2. 在服務器內,克隆創建一個新的目錄地方(repos爲例如),cd
    3. 克隆舊的存儲庫。

      混帳克隆使用新的位置,而不改變混帳設置--bare OLD_LOCATION

    4. 克隆到本地計算機。

    您可以在一切正常後刪除舊的位置。

    +0

    沒有,但現在我有一個文件夾「xxx-2」只有一個目錄在其中「xxx.git」... –

    +0

    這可能是過度的,也許重命名'xxx-2'像''回購''有一個整體位置更好?這將是克隆到本地計算機時的新途徑。在答案中增加了對第2步的建議。 – hurturk