如何将现有的非空目录转换为 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】:
假设您已经在 <url>
上设置了一个 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 origin
和 git config branch.master.merge refs/heads/master
,我最终得到的结果与我克隆远程存储库时完全一样吗?即git pull
和git push
将正常工作?
这对我也有用。我必须首先在 GitHub 中创建一个项目 AppName
。我不清楚<url>
的确切含义。所以对于那些有同样问题的人,我们简单地使用 GitHub.com,我们没有运行我们的 repo,然后第 5 行中使用的 <url>
看起来像这样: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】:
我就是这样做的。我添加了一个解释以了解到底发生了什么。
初始化本地存储库
首先,用
初始化Gitgit 初始化
添加所有文件以进行版本控制
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
【讨论】:
使用.gitignore
和README.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-histories 和 push --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 file
或 license
创建存储库,这是我的解决方案
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 工作目录并将文件推送到远程存储库的主要内容,如果未能解决你的问题,请参考以下文章
如何将现有的 AngularJS 2 Web 应用程序转换为 Cordova 应用程序?
如何将现有的 eclipse GWT 项目转换为动态 Web 项目?