关于在centos(或者ubuntu)上使用git上传项目到github的步骤和需要注意的问题。

平台:centos6.5 

git版本:git version 2.14.1

工具:xshell

第一步:在任意一个目录下创建一个文件夹:(比如说创建haha) 只要这个目录里面要有你要上传到github的文件

第二步:将项目目录中的文件全都拷贝到haha这个目录里面。

报错:出现

cp: omitting directory `chatSystem/client/'
cp: omitting directory `chatSystem/comm/'
cp: omitting directory `chatSystem/lib/'
cp: omitting directory `chatSystem/window/'
cp: omitting directory `chatSystem/window/'
这个是说明目录下面还有目录,所以需要递归拷贝,即加入-r选项

另外,在如果需要将一个目录下所有的文件拷贝过去,可以用*来代替所有的文件,

如上面的cp -r chatSystem/client/ chatSystem/comm/ chatSystem/lib/ chatSystem/window/ chatSystem/window/ chatSystem/Makefile haha/

就可以写为cp -r chatSystem/* haha,意思就是将chatsystem下的所有文件都拷贝到haha。

 第三步:进入这个文件夹,通过命令git init把这个文件夹变成Git可管理的仓库

通过ls -a命令可以看到当面文件夹下多出一个.git文件。

第四步:输入git add .     

这个是将项目上所有的文件添加到仓库中的意思,如果想添加某个特定的文件,只需把.换成这个特定的文件名即可。

第五步:输入git commit -m "first commit",双引号里面的内容随便写。

 

第六步:打开github,点击右上角的加号,选择其中的New repository(新的仓库,读音是[rɪˈpɒzɪt(ə)ri]),之后在出现的Repository name一栏填写任意的库名。接着点击最下面的create repository,之后在出现的页面将SSH后的链接复制。

第七步:查看虚拟机上有没有相应的SSH密钥。

可以看到里面有相应的密钥(这里的id_rsa我自己觉得是用RSA加密算法生成的密钥,id_rsa_pub是用RSA算法生成的公钥,pub是public的意思)。这里不再赘述密钥的生成过程,如果没有密钥,可以参考这篇文章:《Permission denied(publickey). fatal: Could not read from remote repository.》

如果有密钥。我们需要将公钥部分也就是id_rsa.pub里面的内容拿出来,可以输入cat id_rsa.pub,也可以输入vi  id_rsa.pub.。我这里只输入cat id_rsa.pub。

将得到的以ssh-rsa开头的一大段字符串复制。

打开github,选择右上方自己的图标,注意不是点击加号,选择里面的Settings,接着在出现的页面点击最左边的SSH and GPG keys一栏

                                                                                                            

点击 New  SSH key

Title随便写,将刚才得到的id_rsa.pub里面的以ssh-rsa开头的一大段字符串复制到下图中的Key中

第八步:github上的repository(git库)与虚拟机上的本地库关联

$ git remote add origin 自己远程仓库(即github上的)的url地址。这个origin是远程库在本地的别名,可以随便起名比如git remote add pb  +url 

比如上面的我的url仓库地址是git@github.com:lixuhao/wdqw.git。则输入git remote add origin git@github.com:lixuhao/wdqw.git

如果出现提示信息:fatal: remote origin already exists.(远程地址已经存在)

解决方法:输入git remote rm origin(删除掉以前的地址),rm是删除的意思。

之后重新输入git remote add origin git@github.com:lixuhao/wdqw.git

如果创建项目时没有下面这个:

可以在生成的项目里找到Clone or download,然后点击,如下图:

这样就有项目的链接了(看见上面有这个Use HTTPS了吗,点击这个可以将url换成https开头的)。

关于使用git remote add 远程库的本地库名+ 远程库的url,即创建远程库的本地别名出现的问题:如下

usage: git remote add [<options>] <name> <url>

     -f, --fetch fetch the remote branches

    --tags import all tags and associated objects when fetching or do not fetch any tag at all (--no-tags)

     -t, --track <branch> branch(es) to track

    -m, --master <branch> master branch

    --mirror[=<push|fetch>] set up remote as a mirror to push to or fetch from

总是一直出现这个usage,我的解决方法是换为root,然后改了origin为pb这个名称,然后竟然好了。本目录下生成了pb库。

这一步完了可以使用git remote查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字.在克隆完某个项目后,至少可以看到一个名为 origin 的远程库。

git remote -v | --verbose 列出详细信息(|是或者的意思,只需要执行git remote -v或者git remote --verbose),在每一个名字后面列出其远程url。如:

$ git remote -v

origin git://github.com/schacon/ticgit.git

 

第九步:git push -u origin master (在执行这一步的时候,会有提示让你输入github的用户名和密码,)

由于新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后,下次再从本地库上传内容的时候只需输入git push origin master

最后就会出现100%done ,Branch master set up to track remote branch master from oragin等字样,表示成功。

关于中间可能会出现问题:

  1. 运行git push时出错,提示Permission denied (publickey),这个可以参考《Permission denied(publickey). fatal: Could not read from remote repository.》这篇文章虽然是针对unbuntu的,但是对于centos同样适用。
  2. 在git push的时候出现:Updates were rejected because the tip of your current branch is behind,如下我们很明显的看到有这个hint: 'git pull ...') before pushing again.,即说push之前应该pull,git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。
    $ git pull <远程主机名> <远程分支名>:<本地分支名>
    

    比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。

    $ git pull origin next:master
    

    如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

    $ git pull origin next                                                                                                                                                                当然,若不想merge远程和本地修改,可以先创建新的分支:

    git branch [name]

    然后push

    git push -u origin [name]

  3.  在git pull的时候   提示fatal: refusing to merge unrelated histories ,这个只要在后面加上 --allow-unrelated-histories。如git pull origin master --allow-unrelated-histories 
  4. 出现Please enter a commit message to explain why this merge is necessary,...",这个就是一个vi界面,直接在末行模式下输入:wq。按enter键。但是我遇到的不是vi界面,是一个可编辑的类似于vi界面,下面是一些选项,比如^X ,^G等等,而我们不管他,直接看哪个表示退出,比如^X表示退出,则ctrl+X,然后问你保存吗,也不管,不保存都行,然后出去了,接着使用git push -u pb master. 会让你输入github的用户名和密码。如下:

       注意,我在这让又遇到一个问题就是我不知道啥时候改成root权限,然后出现 fatal:unable to auto-detect email address (got 'root@ubuntu.(none)')错误,然后我退出了root变成用户名。再执行 git push -u pb master就没这个问题了。如下图:

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值