【版本控制工具二】Git 和 Gitee 建立联系

文章目录

    • 前言
    • [一、Git 和 Gitee 建立联系](#一、Git 和 Gitee 建立联系)
      • [1.1 任意目录下,打开 git bash 命令行,输入以下命令生成公钥](#1.1 任意目录下,打开 git bash 命令行,输入以下命令生成公钥)
      • [1.2 配置SSH公钥](#1.2 配置SSH公钥)
      • [1.3 进行全局配置](#1.3 进行全局配置)
    • 二、其它相关Git指令
      • [2.1 常用指令](#2.1 常用指令)
      • [2.2 指令操作可能出现的问题](#2.2 指令操作可能出现的问题)
    • 三、补充
      • [3.1 **为什么要先commit,然后pull,然后再push,我pull了,岂不是把自己改的代码都给覆盖掉了嘛,因为远程没有我改的代码,我pull,岂不是覆盖了我本地的改动好的地方了?那我还怎么push?**](#3.1 为什么要先commit,然后pull,然后再push,我pull了,岂不是把自己改的代码都给覆盖掉了嘛,因为远程没有我改的代码,我pull,岂不是覆盖了我本地的改动好的地方了?那我还怎么push?)
      • [3.2 两个分支,A和B,A合并B和B合并A,有区别吗?](#3.2 两个分支,A和B,A合并B和B合并A,有区别吗?)

前言

上一篇文章讲了如何安装和使用git版本控制工具。

但说起版本控制,怎么少的了团队协作,如果下班啦不想带电脑晚上还想继续搞怎么办?

那就使用码云、github在线管理吧!

数字化管理平台
Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus
权限系统-商城
个人博客地址

一、Git 和 Gitee 建立联系

1.1 任意目录下,打开 git bash 命令行,输入以下命令生成公钥

复制代码
ssh-keygen -t rsa -C 邮箱

回车出现 (y/n), 输入 y , 连续点击回车,即可生成,效果如下:

1.2 配置SSH公钥

  1. 打开目录 C:\Users\Dell\.ssh 目录,找到 id_rsa.pub 文件,使用记事本打开

    注意:不同电脑,用户目录有所差异

  2. 返回到浏览器中找到刚刚云端仓库创建完成的 gitee 页面

    右上角找到个人信息点开,找到 "设置" 并打开
    3. 设置页面如下

  3. 找到左侧栏 "安全设置" 中的 "SSH公钥",点击后如下

生成公钥的官方指导步骤:https://gitee.com/help/articles/4191#article-header0

默认公钥数量为 0,在 "添加公钥" 栏目下,添加 "标题" 和 "公钥"

注:标题名字为自定义 公钥为刚刚用记事本打开的 "id_rsa.pub" 文件中的内容

粘贴完成后,点击确定。此时就会显示 " 您当前的SSH公钥数:1 "。

1.3 进行全局配置

输入以下指令

复制代码
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"

将纳入版本库的文件,提交到 gitee 远程仓库:

复制代码
git remote add origin 你的仓库地址
git push -u origin master

此时,提交完成,打开浏览器,输入你的仓库地址 ,如: https://gitee.com/magnumhou/test.git 即可看到上传文件:

二、其它相关Git指令

2.1 常用指令

  • 查看当前分支:git branch
  • 查看包含远程分支在内的所有分支:git branch -a
  • 创建分支:git branch
  • 切换分支:git checkout
  • 创建+切换分支:git checkout -b
  • 推送本地分支到远程分支 (远程和本地分支需同名):git push origin :
  • 如果本地分支未与远程分支建立关联,拉取远程代码需执行:git pull origin 也就是需标明拉去远程的具体分支名*
  • 合并某分支到当前分支:git merge
  • 删除本地分支:git branch -d
  • 删除远程分支:git push origin : 或 git push origin --delete
  • git clone 项目地址 下载或克隆别人的项目到本地
  • git status 查看被修改的文件
  • git diff 文件 查看指定文件修改的内容
  • git reset --hard HEAD^ 回退到上一个版本
  • git reset --hard HEAD^^ 回退到上上个版本
  • git reset --hard HEAD^...^ 回退到上N个版本,当然这是比较麻烦的,可以使用以下简化
  • git reset --hard HEAD~100 回退到上100个版本
  • git reset --hard HEAD commit id 通过指定id回到未来某个版本,可以通过 git log 查看提交历史

2.2 指令操作可能出现的问题

git pull 将远程主机的最新内容拉下来后直接合并 可能会出现冲突

复制代码
git pull origin master  // 拉取主分支最新代码,手动解决冲突

pwd 查看当前目录所在的系统文件路径

三、补充

3.1 为什么要先commit,然后pull,然后再push,我pull了,岂不是把自己改的代码都给覆盖掉了嘛,因为远程没有我改的代码,我pull,岂不是覆盖了我本地的改动好的地方了?那我还怎么push?

这个先 commit 再 pull 再 push 的情况就是为了应对多人合并开发的情况:

  1. commit 是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较;
  2. pull是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在 git add && git commit && git pull 这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉
  3. 出现代码覆盖或者丢失的情况:比如A B两人的代码pull 时候的版本都是1,A在本地提交了2,3并且推送到远程了,B 进行修改的时候没有commit 操作,他先自己写了东西,然后 git pull 这个时候 B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push 那么在远程版本中就是4,而且 A 的代码被覆盖了,所以说所有人都要先 commit 再 pull,不然真的会覆盖代码的

3.2 两个分支,A和B,A合并B和B合并A,有区别吗?

两个互相合并的唯一区别就是 A->B 的时候 B 分支上会产生一个 merge_commit 的信息,这个时候 B 是合并状态而 A 未合并状态,如果现在没有发生任何改动执行 B->A 就直接切换过去了,连 merge_commit 都不会生成了

相关推荐
IT~狂男27 分钟前
GIT 实战命令操作大全,代码变动,推动,修改备注,撤销(篇幅一)
git
前端拿破轮30 分钟前
从0到1搭一个monorepo项目(一)
前端·javascript·git
消失的旧时光-19432 小时前
git的 Rebase
git
风禾万里10 小时前
Git怎么管理软件版本(代码,模型,配置等)
git
默默coding的程序猿13 小时前
3.git的分支携带问题是什么?怎么解决?
java·git·python·svn·gitee·github·intellij-idea
天地人-神君16 小时前
将.idea取消git托管
java·git·intellij-idea
Zach_yuan20 小时前
版本控制器Git
linux·git
唐青枫1 天前
Git 提交时神秘的 create mode 100644 到底是什么?一文告诉你答案!
git
春生野草1 天前
Git-git stash与分支管理
git
ljh5746491191 天前
Git合并冲突解决方法
git