Git Push - 不工作

时间:2017-07-26 08:00:05

标签: git

我是git的新手,想要测试一下。我的网站主机允许通过SSH GIT,我找到了一些教程,但现在我被卡住了。对不起,如果我的问题听起来很愚蠢。

我做了什么:

  1. 通过SSH登录我的远程Webhost并初始化一个新的git项目:

    git init
    git add .
    git commit -m 'version 1.0.0'
    
  2. 这为我输出了很长的文件列表,这些文件已经更新。

    1. 我在本地计算机上克隆了存储库并创建了一个新文件“index2.php”

      git clone XXX.git
      cp index.php index2.php
      git add index2.php
      git commit -m "Index2.php added"
      
    2. 然后我尝试将新的“index2.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
      
    3. 似乎文件已被推送。但是当我在远程服务器上执行ls -l时,新文件“index2.php”不存在。为什么?我忘记了什么吗?

    4. 更新: 当我在远程服务器上执行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
      

      这是什么意思?

2 个答案:

答案 0 :(得分:0)

我假设您在远程服务器上执行git log时能够看到“index2.php added”提交。如果我错了,请纠正我。这些是你可以做的事情。

  1. 检查推送的实际git repo中是否存在index2.php。

  2. 在远程服务器上执行git pull以获取推送的所有最新提交。

  3. 修改1:

    这意味着遥控器上没有配置遥控器。您需要在远程服务器中执行git remote add origin XXX.git

    以下是发生的事情。

    您在远程服务器上初始化了一个空的git repo并添加了一个提交。但是你还没有将更改推送到git服务器。基本上你的远程服务器没有连接到任何git服务器。如果您观察到,在本地执行git log将不会显示您在远程服务器上执行的提交。

答案 1 :(得分:0)

Git通常在远程使用裸克隆。这就是GitHub / BitBucket和其他提供商的工作方式。因此,您需要在SSH服务器中创建一个裸存储库,以便能够在不需要任何进一步配置的情况下推送更改。要将现有存储库转换为裸存储库,请执行以下操作:

  1. SSH进入您的服务器。
  2. 在其他地方创建新目录(例如repos),cd in。
  3. 将服务器中的旧存储库克隆为克隆。

    git clone --bare old_location

  4. 使用新位置克隆到您的本地计算机,而不更改git设置。

  5. 您可以在一切正常后删除旧位置。