文章目录
一.push到码云
1.创建远程仓库
登录码云后,建立一个仓库,只填写仓库名就ok,然后直接创建
2.创建本地库(如果没有)
若本地没有仓库,需要先创建.先设置用户名邮箱(随意名随意邮箱都可以),创建项目并初始化后,随便建立一个文件如README.md,随便写点内容,提交到本地库
git config --global user.name 花落知多少
git config --global user.email 梦醒何处@163.com
mkdir gitrepo-test
cd gitrepo-test/
git init
vim README.md
git add README.md
git commit -m "first commit" README.md
3.关联远程仓库地址
https://gitee.com/用户名/仓库名,注意按实际添加
git remote add origin https://gitee.com/HeartFYang/testdemo.git
git remote -v
4.push到远程库
需要输入用户名和密码
git push origin master
没问题如下:
当然如果想修改,则本地修改后提交到版本库,再push就好.
5.无法push的问题
如果push时,出现如下提示:hint: Updates were rejected because the remote contains work that you do
To https://gitee.com/HeartFYang/HelloGitee
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://gitee.com/HeartFYang/HelloGitee'
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.
是远程库已经有工作的代码,不允许直接覆盖.比如,你创建仓库的时候勾选了使用模板redme.md来初始化,如下图,可以看到,创建仓库的时候会生成中文和英文两个readme文件,所以无法更新.解决办法有两种
1.强推覆盖
此时可以强推(新项目推荐,可以覆盖掉):执行 git push -f https://gitee.com/HeartFYang/HelloGitee master
-f参数:force.后面跟远程仓库地址(相当于get remote add origin xxxxx)再选择master分支
git push -f https://gitee.com/HeartFYang/HelloGitee master
2.先拉后推(推荐)
注意到hint: (e.g., ‘git pull …’) before pushing again.这个提示,我们不妨push之前先pull,
执行pull,却报了一个致命错误fatal: refusing to merge unrelated histories,拒绝合并不相关的记录
git pull https://gitee.com/HeartFYang/HelloGitee
执行git pull --help
在Options related to merging选项下找到如下参数.可以看到,默认情况下,git merge命令拒绝合并没有共享共同祖先的历史记录。当合并两个独立项目的历史记录时,可以使用此选项来覆盖此安全性。
--allow-unrelated-histories
By default, git merge command refuses to merge histories that do not share a common ancestor. This option can be used to override this safety when merging histories of two
projects that started their lives independently. As that is a very rare occasion, no configuration variable to enable this by default exists and will not be added.
加上该参数后,再执行
git pull https://gitee.com/HeartFYang/HelloGitee --allow-unrelated-histories
可以看到,拉取成功了,但README.md有冲突,因为我们本地库也有一个README.md,且里面也有内容,因此冲突了.这个很容易解决.
修改该README.md,去掉冲突特殊符号.提交后再push.
README.md //去掉冲突符号,修改满意为止
git add README.md
git commit -m "解决拉取合并冲突后的提交"
git push https://gitee.com/HeartFYang/HelloGitee master
此时可以看到,push成功了.
查看码云对应的仓库,也没问题,另外可以看到我们修改后的readme.md的内容
二.ssh免密登录
https每次push需要输入用户名密码挺麻烦的,我们可以使用ssh免密推送
1.客户端生成秘钥
rm -rf /root/.ssh/
ssh-keygen -t rsa -C "你的email地址"
一路enter默认如下,进入当前系统根目录的.ssh目录下,
2.将id_rsa.pub 的秘钥复制到自己的码云的ssh秘钥里
cat ./id_rsa.pub
标题随意,将秘钥粘进去,确定验证.
3.关联远程仓库的ssh地址
进入到要push的仓库,点击克隆/下载
,选择ssh,复制地址(git@gitee.com:HeartFYang/HelloGitee.git),注意此时push应该push 到这个ss地址.
方便起见还是给这个ssh地址起个别名.进入本地库,执行如下命令:
git remote add ssh_gitee git@gitee.com:HeartFYang/HelloGitee.git
git remote -v
现在,我们直接push
git push ssh_gitee master
因为版本没有变化,所以没push,我们稍微修改一下READNE.md.提交后再push
vim README.md
git add README.md
git commit -m "ssh免密登录测试" README.md
git push ssh_gitee master
查看仓库,push successfully
三.push到github
和码云一样,登录建立仓库
按照提示直接操作
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/HeartSole/HelloDemo.git
git push -u origin master
四.实现码云和github同时push
这个很简单,只要同时关联了码云仓库的地址和github仓库的地址就OK,我们可以分别为他们的https和ssh地址起个别名.分别执行push就ok.