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


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

  2. 我想将此目录检入到git中。

  3. 我希望能够使用“ 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目录移动并使其正常工作吗?


5
也许我只是听不到,但不能只git init在本地目录中运行吗?
菲利普

您的意思是您在其他地方有一个存储库,并且想要将该其他目录(不是存储库)的所有内容添加到该存储库中吗?还是只是尝试在该目录中创建一个新的仓库?
卡斯卡贝尔

许多答案都提到了github,但问题本身是关于git的。github不是git,它也不是git宇宙的中心。
vfclists

Answers:


1055

假设您已经在git守护进程<url>和一个空存储库上设置了:

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

12
abyx的说明似乎起作用。我现在是否要运行: git config branch.master.remote origin并且git config branch.master.merge refs/heads/master 最终得到的结果将与克隆远程存储库完全相同?即git pullgit push工作吗?
HMW 2010年

34
这也对我有用。我必须首先AppName在GitHub中创建一个项目。我还不清楚究竟是什么<url>手段。因此,对于那些有相同问题的人,我们简单地使用GitHub.com,我们没有运行我们的存储库,然后<url>在第5行中使用就像这样:https://github.com/CompanyName/AppName
Bart

12
如果要设置不在GitHub上的存储库,请确保使用'git --bare init'来设置空的远程存储库,而不要像我一样使用'git init',否则推送将失败。
jdusbabek 2014年

3
只是想补充一下,直到我做了以下操作,我才能推送:git pull --rebase
Artemix 2014年

6
如果git由于remote包含一些细微更改(.README,.gitignore等)而拒绝,请尝试git pull origin master --allow-unrelated-histories进行合并。
karlisup

80

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

初始化本地存储库

  • 首先用初始化Git

    git初始化

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

    git添加

  • 创建带有您选择的消息的提交

    git commit -m'添加基础代码'

初始化远程存储库

  • 在GitHub上创建一个项目,然后复制项目的URL。如下所示:

    在此处输入图片说明

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

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

    git remote add origin https://github.com/hiteshsahu/Hassium-Word.git

同步化

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

    git pull origin master --allow-unrelated-histories

提交您的代码

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

    git push -u原始主机


1
我已经按照本文中的描述执行了“ git pull”,并获得了一个错误。我继续接受已接受的“ git push”,当我转到Bonobo Git Server时,现在可以看到更改。感谢您的帖子,其中包含有关GIT命令的清晰说明。
schlebe

这是什么意思:“然后复制项目的URL,然后复制项目的URL。”这是输入错误,还是您要谈论两个不同的URL,或者?
gwideman

那是一个排版错误,只需复制项目的url,如屏幕快照所示
Hitesh Sahu

2
这是正确的答案,应该被接受。接受的答案缺少您的“同步”步骤。
伊兰

28

这是我的解决方案:

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

当您使用.gitignore&设置远程README.dm
仓库

12

如果远程存储库不为空(如果在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

编辑1月30日:请查看下面的评论,确保您使用的是正确的回购!


上面的命令抹去了我所有的现有版本:(在执行上述步骤之前,请务必谨慎
Selenium Framework

7

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

1
我需要修改最后一个语句,使其更像git push -u origin master --force-with-lease
cfont

2

我发现有用的最简单的方法如下。

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

假设您XYZ的PC上有一个名为“ ” 的项目。现在,您想在github上对该项目进行git repo并使用其功能。

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

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

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

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

步骤5:删除克隆的仓库。

步骤6:添加,提交和推送项目的所有文件和文件夹。

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


0

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

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


0

这里是我的解决方案,如果你创建了一些默认的库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> 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.