我是git的新手,想要测试一下。我的网站主机允许通过SSH GIT,我找到了一些教程,但现在我被卡住了。对不起,如果我的问题听起来很愚蠢。
我做了什么:
通过SSH登录我的远程Webhost并初始化一个新的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"
然后我尝试将新的“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
似乎文件已被推送。但是当我在远程服务器上执行ls -l时,新文件“index2.php”不存在。为什么?我忘记了什么吗?
更新: 当我在远程服务器上执行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 :(得分:0)
我假设您在远程服务器上执行git log
时能够看到“index2.php added”提交。如果我错了,请纠正我。这些是你可以做的事情。
检查推送的实际git repo中是否存在index2.php。
在远程服务器上执行git pull
以获取推送的所有最新提交。
修改1:
这意味着遥控器上没有配置遥控器。您需要在远程服务器中执行git remote add origin XXX.git
以下是发生的事情。
您在远程服务器上初始化了一个空的git repo并添加了一个提交。但是你还没有将更改推送到git服务器。基本上你的远程服务器没有连接到任何git服务器。如果您观察到,在本地执行git log
将不会显示您在远程服务器上执行的提交。
答案 1 :(得分:0)
Git通常在远程使用裸克隆。这就是GitHub / BitBucket和其他提供商的工作方式。因此,您需要在SSH服务器中创建一个裸存储库,以便能够在不需要任何进一步配置的情况下推送更改。要将现有存储库转换为裸存储库,请执行以下操作:
repos
),cd
in。将服务器中的旧存储库克隆为裸克隆。
git clone --bare old_location
使用新位置克隆到您的本地计算机,而不更改git设置。
您可以在一切正常后删除旧位置。