欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

记录--git命令行上传项目到github仓库

程序员文章站 2022-05-03 22:32:02
由于公司一直使用的是的SVN,基本上都是内网,原来的git命令都快忘记了,当然也是自己太懒,平时都是直接拖到github上。今天打开idea后突然看到了原来自己写好的一个项目,就想将它上传到github上,也顺便再复习一下git命令,没想到也是遇到了很多坑,也是参考了几个大神的博客才解决,因此想记录 ......

    由于公司一直使用的是的svn,基本上都是内网,原来的git命令都快忘记了,当然也是自己太懒,平时都是直接拖到github上。今天打开idea后突然看到了原来自己写好的一个项目,就想将它上传到github上,也顺便再复习一下git命令,没想到也是遇到了很多坑,也是参考了几个大神的博客才解决,因此想记录一下。

    因为项目是之前写好的,一直放在idea的工作空间里,git是之前已经下好的,包括github上仓库已经建好,万事俱

1.首先是打命令行窗口 ,cd到项目的目录中

yht:~ yht$ cd /users/ae/ideaprojects/clouddisk 
yht:clouddisk yht$ ls
help.md        mvnw.cmd    src
mvnw        pom.xml        target

2.然后在初始化仓库

yht:clouddisk yht$ git init
initialized empty git repository in /users/ae/ideaprojects/clouddisk/.git/

3.设置用户名和邮箱

忘记了是否设置过,可以用命令查看一下,如果设置过了会显示出来。

yht:.ssh yht$ git config --global --list
user.email=你的邮箱
user.name=你的名字
#没有的话设置一下
yht:.ssh yht$ git config --global user.email "你的邮箱"
yht:.ssh yht$ git config --global user.name "你的名字"

刚开始时就直接add然后commit -m,就会提示让你先输入邮箱和用户名。 下面都有提示该怎么敲命令,还是非常友好的,有时候命令敲错了,漏掉一两个单词也会给出提示。

yht:clouddisk yht$ git commit -m "project first commit"

*** please tell me who you are.

run

  git config --global user.email "you@example.com"
  git config --global user.name "your name"

to set your account's default identity.
omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'yht@yht.(none)')

 

 4.测试ssh连接

记得原来生成过一次秘钥,但是上github上的setting中的ssh keys看了一下,发现只有一个ssh key,好像绑定的是另一个电脑,因此就重新生成一个吧。

cd /users/ae/.ssh
yht:.ssh yht$ ssh-keygen -t rsa -c "你的邮箱" #回车 #回车 #回车 your identification has been saved in /users/ae/.ssh/id_rsa. your public key has been saved in /users/ae/.ssh/id_rsa.pub.

 

输完命令回车就行 会在.ssh文件下生成一个 id_rsa 和一个 id_rsa.pub文件

通过cat id_rsa.pub或vi id_rsa.pub 查看该文件,然后复制到 github中的setting-->ssh and gpg keys-->new ssh key,取个你喜欢的名字然后将秘钥复制到里面。

然后测试ssh连接

yht:.ssh yht$ ssh -t git@github.com 
hi aoteman! you've successfully authenticated, but github does not provide shell access.

 

当时也是没有生成ssh keys直接commit  然后就一直报错

git@github.com: permission denied (publickey).

 

5.提交代码到远程仓库

先设置一下远程仓库的地址,因为我们使用的是ssh连接,在github中点开仓库,然后clone or download,右上角选择ssh连接,复制一下远程仓库地址。

#设置远程仓库地址
yht:clouddisk $yht git remote add origin "你的远程仓库地址" #查看远程仓库地址 yht:clouddisk yht$ git remote -v origin git@github.com:aoteman/clouddisk.git (fetch) origin git@github.com:aoteman/clouddisk.git (push)
...
yht:clouddisk yht$ git push -u origin master

 

到此本以为大功告成了,只剩下add、commit、push即可,然而再push的时候再次出现问题。。。

hint: updates were rejected because the remote contains work that you do
hint: not have locally. this is usually caused by another repository pushing
hint: to the same ref. you may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: see the 'note about fast-forwards' in 'git push --help' for details.

 

翻译过来的意思大概就是远程仓库包含你还没有的文件,你可以在push之前先pull一下,想了一下确实远程仓库中初始化的有readme.md文件,不是一个空的仓库,因此使用git pull先拉取到本地。

拉取完成后总可以提交了吧,然而还是报错

fatal: refusing to merge unrelated histories 
(拒绝合并不相关的历史)

百度了一下说是因为本地仓库并不是从远程仓库中git clone下来的,实质上是两个独立的仓库,确实是这样,我是先在github上创建了一个仓库,又在本地的项目中去git init了,然后找到了一条命令:

git pull origin master --allow-unrelated-histories(该选项可以合并两个独立启动仓库的历史)

最后 将本地仓库中的文件推送到远程仓库即可。

git push -u origin master

 

6.总结:知识学过了如果不经常使用总是容易忘,平时的工作学习都是阶段性的,很容易忽略一些学过的重要的知识,因此平时要多总结,养成一个好习惯,加油!