如何将现有的非空目录转换为 Git 工作目录并将文件推送到远程存储库

Posted

技术标签:

【中文标题】如何将现有的非空目录转换为 Git 工作目录并将文件推送到远程存储库【英文标题】:How to convert existing non-empty directory into a Git working directory and push files to a remote repository 【发布时间】:2011-03-19 17:07:35 【问题描述】:

    我有一个非空目录(例如 /etc/something),其中包含无法重命名、移动或删除的文件。

    我想将这个目录签入到 git 中。

    我希望能够使用“git push”或类似的方式将此存储库的状态推送到远程存储库(在另一台机器上)。

使用 Subversion 很简单(目前我们使用 Subversion 来实现):

svn mkdir <url> -m <msg>
cd <localdir>
svn co <url> .
svn add <files etc>
svn commit -m <msg>

什么是 git 等价物?

我可以“git clone”到一个空目录中并简单地移动 .git 目录并让一切正常吗?

【问题讨论】:

也许我只是不明白,但你不能在本地目录中运行git init 吗? 你的意思是你在其他地方有一个 repo,并且你想将这个不是 repo 的其他目录的所有内容添加到那个 repo 中?或者你只是想在那个目录中创建一个新的仓库? 很多答案都提到了 github,但问题本身是关于 git 的。 github 不是 git,也不是 git 宇宙的中心。 【参考方案1】:

假设您已经在 &lt;url&gt; 上设置了一个 git 守护程序和一个空存储库:

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin master

【讨论】:

abyx's 的说明似乎有效。我现在是否运行:git config branch.master.remote origingit config branch.master.merge refs/heads/master,我最终得到的结果与我克隆远程存储库时完全一样吗?即git pullgit push正常工作 这对我也有用。我必须首先在 GitHub 中创建一个项目 AppName。我不清楚&lt;url&gt; 的确切含义。所以对于那些有同样问题的人,我们简单地使用 GitHub.com,我们没有运行我们的 repo,然后第 5 行中使用的 &lt;url&gt; 看起来像这样:https://github.com/CompanyName/AppName 如果您要设置的仓库不在 GitHub 上,请务必使用 'git --bare init' 来设置 empty remote 仓库,而不是 ' git init' (就像我做的那样),否则推送将失败。 只是想补充一点,直到我做了一个: git pull --rebase 如果 git 因为 remote 包含一些小的更改(.README、.gitignore 等)而拒绝,请尝试 git pull origin master --allow-unrelated-histories 进行合并。【参考方案2】:

我就是这样做的。我添加了一个解释以了解到底发生了什么。

初始化本地存储库

首先,用

初始化Git

git 初始化

添加所有文件以进行版本控制

git 添加。

使用您选择的消息创建提交

git commit -m 'AddingBaseCode'

初始化远程存储库

在 GitHub 上创建一个项目并复制项目的 URL。如下图:

将远程仓库与本地仓库链接

现在使用复制的 URL 将您的本地存储库与远程 GitHub 存储库链接。当您使用 git clone 克隆存储库时,它会自动创建一个名为 origin 的远程连接,指向克隆的存储库。远程命令用于管理一组跟踪的存储库。

git 远程添加源https://github.com/hiteshsahu/Hassium-Word.git

同步

现在我们需要将本地代码与远程代码合并。这一步很关键,否则我们将无法在 GitHub 上推送代码。 您必须在推送代码之前调用“git pull”。

git pull origin master --allow-unrelated-histories

提交您的代码

最后,将所有更改推送到 GitHub

git push -u 原点主控

注意:现在 Github 使用“main”作为默认分支。如果您的项目使用“main”而不是“master”,只需将上述命令中的“master”替换为“main”

【讨论】:

我已经按照这篇文章中的描述执行了“git pull”并得到了一个错误。我继续使用已被接受的“git push”,当我转到 Bonobo Git Server 时,我现在可以看到变化。感谢这篇文章对 GIT 命令有清晰的解释。 这是什么意思:" 并复制你的项目的 URL 和复制项目的 URL。" 这是一个打字错误,还是你试图谈论两个不同的 URL,或者?跨度> 这是一个排版错误,只需复制项目的url,如屏幕截图所示 这是正确答案,应该被接受。接受的答案缺少您的“同步”步骤。 我遇到了一个错误,因为 github 现在使用“main”作为默认分支而不是“master”来初始化新的 repos。【参考方案3】:

这是我的解决方案:

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

【讨论】:

使用.gitignoreREADME.dm 设置远程仓库时的好解决方案【参考方案4】:

如果远程存储库不为空(如果您在 hub.jazz.net 上使用 IBM DevOps 就是这种情况),那么您需要使用以下顺序:

cd <localDir>
git init
git add -A .
git pull <url> master
git commit -m "message"
git remote add origin <url>
git push

17 年 1 月 30 日编辑: 请参阅下面的 cmets,确保您在正确的 repo 上!

【讨论】:

以上命令清除了我所有现有的构建 :( 在执行上述步骤之前请谨慎行事【参考方案5】:

什么时候 github 仓库不为空,比如 .gitignore 和 license

使用 pull --allow-unrelated-historiespush --force-with-lease

使用命令

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/...
git pull origin master --allow-unrelated-histories
git push --force-with-lease

【讨论】:

我需要修改最后一条语句,使其更像git push -u origin master --force-with-lease【参考方案6】:

下面是我认为有用的最简单的方法。

这可能不是官方的方式,但效果很好。

假设您的 PC 上有一个名为“XYZ”的项目。 现在你想在 github 上创建这个项目的 git repo 并使用它的功能。

第 1 步:转到“www.github.com

第 2 步:使用“README.md”文件创建存储库(随意命名)

第 3 步:将存储库克隆到您的 PC。

第 4 步:在克隆的文件夹中,您将获得两个内容:“.git”文件夹和“README.md”文件。将这两个复制到您的项目文件夹“XYZ”中。

第 5 步:删除克隆的 repo。

第 6 步:添加、提交和推送您项目的所有文件和文件夹。

现在,您可以将您的项目“XYZ”用作 git 存储库。

【讨论】:

【参考方案7】:

2021 年的新官方方式。导航到包含文件的目录。这假定存储库中已经没有文件。

git init
git add .
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.gi
git branch -M main    # New
git push -u origin main # New

有时我必须使用此命令设置上游。

git branch --set-upstream-to=origin/main main

然后用这个命令强制推送。

git push -u origin main --force

【讨论】:

【参考方案8】:

我遇到了类似的问题。我创建了一个新的存储库,不在我想要创建存储库的目录中。然后我将创建的文件复制到我想要创建存储库的目录中。然后使用我刚刚将文件复制到的目录打开现有存储库。

注意:我确实使用 github 桌面来制作和打开现有存储库。

【讨论】:

【参考方案9】:

如果您使用一些默认的 readme filelicense 创建存储库,这是我的解决方案

git init
git add -A
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.git //Add your username so it will avoid asking username each time before you push your code
git fetch
git pull https://github.com/xyz.git <branch>
git push origin <branch> 

【讨论】:

以上是关于如何将现有的非空目录转换为 Git 工作目录并将文件推送到远程存储库的主要内容,如果未能解决你的问题,请参考以下文章

如何将现有的 Git 存储库导入另一个?

sh 将非空目录转换为远程Git工作目录

如何将现有的 AngularJS 2 Web 应用程序转换为 Cordova 应用程序?

如何将现有的 eclipse GWT 项目转换为动态 Web 项目?

如何将现有的 Angular 2 Web 应用程序转换为原生脚本应用程序

Jira:将现有的 git 分支分配给问题