当前位置:   article > 正文

【Git】07 本地仓库同步到GitHub或Gitee_git本地代码怎么和远程仓库同步

git本地代码怎么和远程仓库同步


一、远端仓库配置

1.1 配置密钥认证

1)ssh-keygen
本地端命令行上执行ssh-keygen命令,
得到生成的密钥(公钥):cat ~/.ssh/id_rsa.pub
打开GitHub或Gitee,在头像展开设置中找到SSH公钥,新建SSH,随便取名,并将上面id_rsa.pub内容复制粘贴到公钥文本框中,到此密钥便配置完成。

通过命令查看本地与远端Gitee是否连接成功:

ssh -T git@gitee.com
Hi asdfv1929(@asdfv1929)! You've successfully authenticated, but GITEE.COM does not provide shell access.
  • 1
  • 2

1.2 新建仓库

在Gitee上新建仓库test
在这里插入图片描述

创建完成后,页面会跳转到如下内容,显示常用的Git命令操作:
在这里插入图片描述

二、本地配置

2.1 添加远程库

通过git remote add name url在本地仓库端添加远程仓库的路径:

git remote add gitee https://gitee.com/asdfv1929/test.git
  • 1

git remote -v 查看本地的远程仓库:

git remote
gitee

git remote -v    # -v 表示显示详细内容
gitee   https://gitee.com/asdfv1929/test.git (fetch)
gitee   https://gitee.com/asdfv1929/test.git (push)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

三、push推送

先看一下本地有哪些分支,之后便将本地仓库中的所有分支都推送到远端仓库上。

git branch -av
* master cb27ad9 add file2 second edit
  temp   1395813 add readme

git push gitee --all          # 所有分支都推送到指定名称的远端上,,或者是指定分支名
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 6 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 561 bytes | 561.00 KiB/s, done.
Total 7 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/asdfv1929/test.git
 * [new branch]      master -> master
 * [new branch]      temp -> temp
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

推送成功后,远程仓库中刷新下页面就能看到已包含相关内容:
在这里插入图片描述

四、拉取合并与推送

在推送过程中也可能会遇到这样的问题:

git push gitee master    # 将本地仓库的master分支推送到远端
To https://gitee.com/asdfv1929/test.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://gitee.com/asdfv1929/test.git'
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.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

上述过程中,其他分支推送正常,但master分支报错:! [rejected] master -> master (fetch first)
这是因为远端仓库中也有个master分支(两边分支内容不一致),此时需要先将远端master拉取到本地,进行合并后,再去push到远端。

4.1 拉取fetch

拉取指定远程端的特定分支master到本地:

git fetch gitee master     # 拉取指定远程端的特定分支,会形成单独的一棵树
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 956 bytes | 43.00 KiB/s, done.
From https://gitee.com/asdfv1929/test
 * branch            master     -> FETCH_HEAD
   0c04709..7610824  master     -> gitee/master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.2 合并merge

在本地端将远端的master分支合并到本地端master分支上:

git checkout master       # 先切换到本地master分支

git branch -av            # 查看所有分支
* master               5343aab second edit
  temp                 1395813 add readme
  remotes/gitee/master 7610824 update readme.
  remotes/gitee/temp   1395813 add readme

# 合并
git merge --allow-unrelated-histories gitee/master
Auto-merging readme
CONFLICT (content): Merge conflict in readme
Automatic merge failed; fix conflicts and then commit the result.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

但此时遇到报错,Git提示在readme文件中发生冲突。
那么在本地就去看下readme文件的内容,可以发现有如下一些东西:

cat readme
this is a test of push
<<<<<<< HEAD


second edit
=======
hahhahahahaha
hahahahahah
>>>>>>> gitee/master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

<<<<<<< HEAD和 “======” 之间的内容是当前分支之前的修改,
“======” 和>>>>>>> gitee/master 之间内容是远端master分支上的修改。
因此,Git在这边报冲突,其实就是它无法判断哪些需要保留哪些需要删除,此时就需要人为去干预,去保留或是删除文件中冲突的部分
这边选择都保留下来:

cat readme
this is a test of push

second edit
hahhahahahaha
hahahahahah
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.3 推送push

保留或删除的人为干预操作做完之后,就可以再次进行添加、提交与最后的推送到远端库上。

git add .

git status
On branch master
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:
        modified:   readme

git commit -m "merge readme"
[master 73c6ad9] merge readme

git push gitee master
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 6 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (6/6), 548 bytes | 548.00 KiB/s, done.
Total 6 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/asdfv1929/test.git
   7610824..73c6ad9  master -> master
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

远端仓库上的内容已发生更新:
在这里插入图片描述

pull = fetch + merge

五、总结

本文主要讲得是将本地端代码同步到远程仓库中,这个远程仓库可以是互联网上的Gitee或GitHub公共库,也可以是公司或部门内部的私有代码库。对于这同步过程中的操作,得牢记于心。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/1009730
推荐阅读
相关标签
  

闽ICP备14008679号