Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git:将现有本地存储库连接到现有远程存储库_Git_Github_Git Remote_Git Fetch - Fatal编程技术网

Git:将现有本地存储库连接到现有远程存储库

Git:将现有本地存储库连接到现有远程存储库,git,github,git-remote,git-fetch,Git,Github,Git Remote,Git Fetch,这可能是非常基本的,但我还没有弄明白: 我有一个PHP项目在两台服务器上运行,让我们把它们称为Live和Staging 显然,两台服务器运行的是同一个项目,但有一些变化。 当项目进入我手中时,它不在Github上,所以这就是我现在首先要做的。 我设法在Github上创建了一个新的远程存储库,并将Live系统连接到它。(通过在Live上添加Github repo作为“源站”) git远程添加源https://github.com/path-to-repo/repo.git 因此,实时系统当前位于m

这可能是非常基本的,但我还没有弄明白:

我有一个PHP项目在两台服务器上运行,让我们把它们称为
Live
Staging

显然,两台服务器运行的是同一个项目,但有一些变化。
当项目进入我手中时,它不在Github上,所以这就是我现在首先要做的。

我设法在Github上创建了一个新的远程存储库,并将
Live
系统连接到它。
(通过在
Live
上添加Github repo作为“源站”)
git远程添加源https://github.com/path-to-repo/repo.git

因此,实时系统当前位于
master
分支上,并且是最新的
origin/master
,其历史记录为4次提交

现在,我也在尝试连接
Staging
上的Github Repo

所以我做了一个

git init
git remote add origin https://github.com/path-to-repo/repo.git
git remote -v

origin  https://github.com/path-to-repo/repo.git (fetch)
origin  https://github.com/path-to-repo/repo.git (push)

git fetch
现在,当我执行git状态时,我看到repo仍处于初始提交状态,所有文件和文件夹都列为未跟踪:

root@staging-主机:/var/www/html#git状态
论分行行长
初始提交
未跟踪文件:(使用“git add…”包含在将要添加的内容中
(承诺的)
.htaccess
自述文件
_index.html
原料药/
应用程序/
composer.json
全球的/
index.php
package-lock.json
package.json
phpinfo.php
系统/
卖主/
看法/
如何检查本地更改与
origin/master

我不想丢失任何本地更改,但也不想提交或推动任何更改

我需要先检查差异,然后再逐个文件决定提交什么和重置什么

可能有更好的方法,但这应该可以工作

  • git添加。
  • git提交-m'tmp'
  • git差异磁头原点/主磁头
  • git重置——软头~1

  • 您只需重置为检查差异而执行的提交即可

    可能有更好的方法,但这应该会起作用

  • git添加。
  • git提交-m'tmp'
  • git差异磁头原点/主磁头
  • git重置——软头~1

  • 您只需重置为检查差异而执行的提交即可

    您的方法几乎是正确的。请查看您的命令:

    git remote add origin https://github.com/path-to-repo/repo.git
    
    这尝试将远程回购添加为源,但失败,因为它已经存在

    你会看到这是你的实时回购。换个名字,比如

    git remote add staging https://github.com/path-to-repo/repo.git
    
    然后它就会起作用。如果原点处于活动状态,而暂存处于暂存状态,则拉动、推动到暂存的操作如下:

    git pull staging <branch>
    
    在这种情况下,也不需要添加遥控器。你只需要复制回购协议,就像

    git clone https://github.com/path-to-repo/repo.git
    

    你的方法几乎是正确的。请查看您的命令:

    git remote add origin https://github.com/path-to-repo/repo.git
    
    这尝试将远程回购添加为源,但失败,因为它已经存在

    你会看到这是你的实时回购。换个名字,比如

    git remote add staging https://github.com/path-to-repo/repo.git
    
    然后它就会起作用。如果原点处于活动状态,而暂存处于暂存状态,则拉动、推动到暂存的操作如下:

    git pull staging <branch>
    
    在这种情况下,也不需要添加遥控器。你只需要复制回购协议,就像

    git clone https://github.com/path-to-repo/repo.git
    

    也许我现在没有正确地理解这一点,或者这只是一种错误的方式,但我目前尝试的是将实时和临时推拉到Github上的远程存储库,而不是彼此。当我运行一个
    git remote-v
    时,我得到了这个输出:origin(fetch)origin(push),我还将它添加到了我的原始帖子中。我基本上在实时系统和登台系统中都添加了远程回购作为原点。这在live上不是问题,因为当时origin是空的,我可以直接提交。@Chaz live和staging是两个独立的远程设备。您可以通过名称来识别远程设备。您想将live和staging都标识为源代码,但源代码不再标识它们。如果两者都是源代码,则不能通过git push origin master仅推送到其中一个。您需要通过不同的名称来识别它们。如果您想同时向/从两个应用程序中推/拉,那么可以为此编写一个shell脚本。但是一个遥控器应该是一个遥控器。我在那里设置这个遥控器的方式不是在某个地方作为遥控器添加live和staging。Staging和live是运行项目的服务器,github repo作为远程(origin)添加在这两个服务器上,因此它们可以向github推送/拉送,而不是从github推送/拉送other@Chaz我意识到我最初误解了你的处境。现在我想我明白你的问题了。相应地编辑了我的答案。当我要克隆到的文件夹中已有文件时,此操作是否有效?因为不幸的是,这就是这里的重点。我一直以为不是。但我还没试过,不幸的是现在不能试。但我稍后会检查。感谢可能我现在没有正确地理解这一点,或者这只是一种错误的方式,但我目前尝试的是将实时和临时推拉到Github上的远程存储库,而不是彼此。当我运行一个
    git remote-v
    时,我得到了这个输出:origin(fetch)origin(push),我还将它添加到了我的原始帖子中。我基本上在实时系统和登台系统中都添加了远程回购作为原点。这在live上不是问题,因为当时origin是空的,我可以直接提交。@Chaz live和staging是两个独立的远程设备。您可以通过名称来识别远程设备。您想将live和staging都标识为源代码,但源代码不再标识它们。如果两者都是源代码,则不能通过git push origin master仅推送到其中一个。您需要通过不同的名称来识别它们。如果您想同时向/从两个应用程序中推/拉,那么可以为此编写一个shell脚本。但是一个遥控器应该是一个遥控器。我在那里设置这个遥控器的方式是不一样的