Git: 将现有的本地存储库连接到现有的远程存储库
Git: Connect existing local repository to existing remote repository
这可能是非常基础的,但我还没弄明白:
我在两台服务器上有一个 PHP 项目 运行,我们将它们称为 Live
和 Staging
两台服务器 运行 显然是同一个项目,但有一些变化。
该项目到达我手中时不在 Github 上,所以这就是我现在首先要做的事情。
我设法在 Github 上创建了一个新的远程存储库并将 Live
系统连接到它。
(通过将 Github 存储库添加为 'origin' 在 Live
)
git remote add origin https://github.com/path-to-repo/repo.git
所以 Live 系统目前在 master
分支上并且是最新的 origin/master
它有 4 次提交的历史记录。
现在我也在尝试连接 Staging
上的 Github 存储库
所以我做了一个
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 状态时,我看到存储库仍处于初始提交状态,所有文件和文件夹都列为未跟踪:
root@staging-host:/var/www/html# git status
On branch master
Initial commit
Untracked files: (use "git add <file>..." to include in what will be
committed)
.htaccess
README.md
_index.html
api/
app/
composer.json
global/
index.php
package-lock.json
package.json
phpinfo.php
system/
vendor/
view/
与 origin/master
中的最后一次提交相比,我如何检查本地更改
我不想丢失任何本地更改,但也不想提交或推送任何内容
在逐个文件决定提交什么和重置什么之前,我需要先检查差异
可能有更好的方法,但这应该可行。
git add .
git commit -m 'tmp'
git diff HEAD origin/master
git reset --soft HEAD~1
您可以重置为检查差异所做的提交
您的方法几乎是正确的。看看你的命令:
git remote add origin https://github.com/path-to-repo/repo.git
这会尝试添加一个远程仓库作为来源但失败了,因为它已经存在。
运行
git remote -v
您会看到这是您的实时回购。以不同的方式命名,例如
git remote add staging https://github.com/path-to-repo/repo.git
然后它应该可以工作了。如果origin是live,staging是staging,那么pull, pushing to staging是这样的:
git pull staging <branch>
和
git push staging <branch>
分别。如果我是你,我更喜欢 origin 指向 staging,另一个叫 live 的 remote 会指向 live,因为你会更频繁地使用 staging。
编辑
显然我误解了这个问题。基本上有一个由 GitHub 托管的存储库,您也想将其用于暂存。您不需要 运行
git init
在这种情况下也不会添加遥控器。你只需要克隆 repo,比如
git clone https://github.com/path-to-repo/repo.git
这可能是非常基础的,但我还没弄明白:
我在两台服务器上有一个 PHP 项目 运行,我们将它们称为 Live
和 Staging
两台服务器 运行 显然是同一个项目,但有一些变化。
该项目到达我手中时不在 Github 上,所以这就是我现在首先要做的事情。
我设法在 Github 上创建了一个新的远程存储库并将 Live
系统连接到它。
(通过将 Github 存储库添加为 'origin' 在 Live
)
git remote add origin https://github.com/path-to-repo/repo.git
所以 Live 系统目前在 master
分支上并且是最新的 origin/master
它有 4 次提交的历史记录。
现在我也在尝试连接 Staging
上的 Github 存储库
所以我做了一个
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 状态时,我看到存储库仍处于初始提交状态,所有文件和文件夹都列为未跟踪:
root@staging-host:/var/www/html# git status On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) .htaccess README.md _index.html api/ app/ composer.json global/ index.php package-lock.json package.json phpinfo.php system/ vendor/ view/
与 origin/master
中的最后一次提交相比,我如何检查本地更改
我不想丢失任何本地更改,但也不想提交或推送任何内容
在逐个文件决定提交什么和重置什么之前,我需要先检查差异
可能有更好的方法,但这应该可行。
git add .
git commit -m 'tmp'
git diff HEAD origin/master
git reset --soft HEAD~1
您可以重置为检查差异所做的提交
您的方法几乎是正确的。看看你的命令:
git remote add origin https://github.com/path-to-repo/repo.git
这会尝试添加一个远程仓库作为来源但失败了,因为它已经存在。
运行
git remote -v
您会看到这是您的实时回购。以不同的方式命名,例如
git remote add staging https://github.com/path-to-repo/repo.git
然后它应该可以工作了。如果origin是live,staging是staging,那么pull, pushing to staging是这样的:
git pull staging <branch>
和
git push staging <branch>
分别。如果我是你,我更喜欢 origin 指向 staging,另一个叫 live 的 remote 会指向 live,因为你会更频繁地使用 staging。
编辑
显然我误解了这个问题。基本上有一个由 GitHub 托管的存储库,您也想将其用于暂存。您不需要 运行
git init
在这种情况下也不会添加遥控器。你只需要克隆 repo,比如
git clone https://github.com/path-to-repo/repo.git