将现有的源代码导入GitHub

626

我该如何将我的电脑上的源代码导入到GitHub账户中?


4
我发现使用GitHub图形界面最容易,然后将配置指向你的工作区根目录,点击“在你的硬盘驱动器上查找仓库”按钮,它会识别出工作区中所有的Git本地仓库,并允许逐个导入。很简单。 - djangofan
1
@djangofan 你指的是哪个 Github GUI?你有这个 GUI 的链接吗? - Anderson Green
3
http://windows.github.com/ - djangofan
Pete的答案在OS X上运行得非常好 - 不需要使用GUI。 - funroll
14个回答

985

如果你有本地源代码想要添加到一个新的远程git存储库而不需要先“克隆”远程库,请按以下步骤操作(我经常这样做 - 你在bitbucket/github中创建你的远程空存储库,然后将你的源代码推送上去)

  1. 创建远程存储库,并获取URL,例如 git@github.com:/youruser/somename.git 或者 https://github.com/youruser/somename.git

    如果你的本地GIT存储库已经设置好,请跳过第2和第3步。


  2. 在源代码的根目录下进行本地初始化:git init

    2a. 如果你使用了 .gitignore 和 README.md 来初始化仓库,你应该执行 git pull {来自第1步的url} 来确保你不会提交那些你想要忽略的文件 :)

  3. 本地添加并提交你想要放入初始仓库的内容(对于所有文件,执行 git add . 然后 git commit -m 'initial commit comment'


  4. 为了关联你的远程仓库并给它起一个名字叫作'origin'(就像克隆操作一样)
    git remote add origin [来自第1步的URL]

  5. 执行 git pull origin master 来拉取远程分支使它们保持同步。
  6. 为了推送你的主分支(如果要使用其他分支,则将master替换为相应的分支名称):
    git push origin master

92
对我有用。我发现在进行git push之前需要运行git pull origin master。如果没有这样做,尝试推送时会出现“因为当前分支的顶端落后”的错误提示。也许是因为我创建带有起始Readme.md的远程仓库所致。 - yuvilio
5
获取仓库SSH协议的URL,以便使用SSH私钥进行提交,而无需输入密码。 - Snicolas
5
@yuvilio,这正是为什么。如果您通过readme.md创建了自己的Github存储库,实际上您现在落后于您试图创建的源。 - user559633
7
正如 @Snicolas 所言,如果您使用 SSH,请使用 git@github.com:youruser/somename.git 而不是 git://github.com/youruser/somename.git。 - tsusanka
5
在创建新的代码库后,GitHub会立即解释相同的步骤。正如@yuvilio所说,你不应该使用README来初始化你的代码库。相反,可以在现有的本地代码库上使用“touch README.md”命令。 - Simone
显示剩余11条评论

42

这在 优秀的免费电子书ProGit 中有详细说明。它假设你已经有了本地Git仓库和一个远程仓库。要将它们连接起来,请使用:

$ git remote
origin
$ git remote add pb git://github.com/paulboone/ticgit.git
$ git remote -v
origin    git://github.com/schacon/ticgit.git
pb    git://github.com/paulboone/ticgit.git

要将本地代码库中的数据推送到GitHub,请使用以下命令:

$ git push pb master

如果您尚未设置本地和/或远程存储库,请查看GitHub上的帮助以及书中的前几章内容


21

有一条评论提到使用GitHub图形用户界面(GUI),但没有给出具体的使用帮助,并且注意到大多数(如果不是全部)答案只能在命令提示符下使用。

如果您想使用GitHub GUI,可以按照以下步骤操作:

  1. 点击“+”按钮,选择“添加本地存储库” 在此输入图像描述
  2. 导航到具有现有代码的目录,然后单击“添加”按钮。
  3. 现在应提示您“在此处创建新的本地Git存储库”,请单击“是”按钮。 在此输入图像描述
  4. 根据需要添加“提交摘要”和“扩展说明”。默认情况下,所有文件应该已经被选中并打了勾。单击“提交&同步”按钮。 在此输入图像描述
  5. 现在,您将被要求添加项目的名称和描述,以及要推送到哪个帐户(如果您有多个帐户)。单击“推送存储库”按钮 在此输入图像描述

在GitHub图标旋转片刻后,你的源代码将属于本地存储库并与你的GitHub账户上的远程存储库推送/同步。所有这些都是在您之前设置了GitHub GUI、GitHub账户和SSH密钥的情况下进行的。


@cfont 这会保留我本地仓库中已经存在的长历史记录,还是只会创建一个巨大的提交,导致我失去了所有历史记录? - john_science
1
@theJollySin,抱歉我需要解决我的stackoverflow通知问题。这应该会保留您现有的本地存储库历史记录。说实话,当时我没有测试过,但我想不出为什么它会压缩您的本地历史记录。事实上,整个目的应该是保留它,除非您确实想压缩提交。 - cfont

12

正如JB所指出的那样,在GitHub上只需按照说明操作即可轻松完成。

以下是在GitHub上设置一个新存储库(使用http://github.com/new)并登录后显示的说明示例。

Global setup:

 Set up Git:
  git config --global user.name "Name"
  git config --global user.email email@gmail.com


Next steps:

  mkdir audioscripts
  cd audioscripts
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:ktec/audioscripts.git
  git push -u origin master


Existing Git repository?

  cd existing_git_repo
  git remote add origin git@github.com:ktec/audioscripts.git
  git push -u origin master


Importing a Subversion repository?

  Check out the guide for step-by-step instructions.

再简单不过了!


10

8

在尝试Pete的步骤时,我在合并方面遇到了一些麻烦。以下是我最终得出的步骤。

  1. 使用操作系统删除要提交的项目文件夹内的.git文件夹。这将为您提供一个干净的工作区。现在也是在项目文件夹内创建一个.gitignore文件的好时机。可以将其复制为在github.com上创建存储库时创建的.gitignore。这样做可以避免在更新github.com存储库时删除它。

  2. 打开Git Bash并导航到刚刚从中删除.git文件夹的文件夹。

  3. 运行git init。这将在您所在的文件夹中设置一个本地存储库。

  4. 运行git remote add [alias] https://github.com/[gitUserName]/[RepoName].git。[alias]可以是任何你想要的东西。[alias]意味着与本地存储库相关联,因此机器名称很适合用作[alias]。URL可以在github.com上找到,在顶部确保单击HTTP | SSH | Git只读之外的HTTP按钮。 git:// URL对我不起作用。

  5. 运行git pull [alias] master。这将更新您的本地存储库并避免一些合并冲突。

  6. 运行git add .

  7. 运行git commit -m 'first code commit'

  8. 运行git push [alias] master


1
-1 这比仅仅“将现有代码导入到GitHub”多做了一点点事情。它会删除整个存储库的历史记录! - Michael Durrant

6
  1. 打开你的GitHub仪表板(如果你已经登录,它在https://github.com/
  2. 点击新建存储库
  3. 填写空白处; 点击创建存储库
  4. 按页面上的说明操作即可

6

来自Bitbucket:

推送现有的代码库。您的电脑上已经存在一个Git代码库。让我们将其推送到Bitbucket上:

cd /path/to/my/repo
git remote add origin ssh://git@bitbucket.org/javacat/geo.git
git push -u origin --all   # To push up the repo for the first time

1
FYI,-u与--set-upstream是相同的。 - AnneTheAgile

4

实际上,如果你选择在GitHub上创建一个空的repo,它会给你提供准确的指令,你几乎可以将其复制并粘贴到终端中,这些指令是(此时此刻):

…or create a new repository on the command line

echo "# ..." >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:<user>/<repo>.git
git push -u origin master

4
将一个GitHub仓库添加为远程origin(将[]替换为您的URL): ```git git remote add origin [URL] ```
git remote add origin [git@github.com:...]

切换到主分支并将其复制到开发分支:

git checkout master
git checkout -b develop

将您的开发分支推送到GitHub的开发分支(-f表示强制):
git push -f origin develop:develop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接