知识回顾
工作区、暂存区、版本库
为了更好的学习Git,我们需要了解Git相关的一些概念,这些概念在后面的学习中会经常提到。
版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作区:==包含.git文件夹的目录==就是工作区,也称为工作目录,主要用于存放开发的代码
暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方
简化解释:工作区:hellogit那个目录,git add命令—放到暂存区(在.git目录的index下面),git commit提交到版本库相当于这个文件由git管理起来了。版本库就隐藏的.git文件夹
4.4 Git工作区中文件的状态
Git工作区中的文件存在两种状态:
-
untracked 未跟踪(未被纳入版本控制——未被git管理)==》==git add前==
-
tracked 已跟踪(被纳入版本控制——被git管理) ==》==git add 后--已暂存(staged)==
1)Unmodified 未修改状态
2)Modified 已修改状态
3)Staged 已暂存状态
注意:文件的状态会随着我们执行Git的命令发生变化
git项目连接多个仓库
比如我同时连接的是gitee和gitgub,coding,下面用两个仓库开始展示:
第一种方法
==初始化本地仓库,两个仓库都从远程pull拉取==
1.右键打开git
2.初始化本地仓库
git init
3.连接远程仓库,分别为仓库起别名
我们先来复习下连接远程仓库命令的含义:
git remote 查看远程仓库
git remote -v 查看远程仓库具体信息
git remote add [仓库别名] 远程仓库地址
git clone 远程仓库克隆地址 从远程仓库拉取
git pull 远程仓库拉取合并
git push 推送到远程仓库
- 连接gitee仓库,起别名“gitee”
git remote add gitee git@gitee.com:huizai-175/testmall.git
- 连接github仓库,起别名“github”
git remote add github git@github.com:1314huihui/testmall.git
- 查看远程仓库连接情况
git remote
git remote -v
查看连接的仓库
查看连接的仓库具体信息
至此,连接两个仓库前期准备工作完成
4.操作远程仓库
4.1 前期知识准备
我们来测试测试操作远程仓库的几个命令,首先我们来说下git操作原理。
git init创建初始化本地仓库,还有以下命令都是对本地仓库的操作,例如
- 将文件加入暂存区,本质就是执行 git add 命令
- 将暂存区的文件提交到版本库,本质就是执行 git commit 命令
- 分支操作
git branch 查看分支
git branch [name] 创建分支
git checkout [name] 切换分支
git push [shortName] [name] 推送至远程仓库分支 shortName远程仓库的别名,name分支的名称
git merge [name] 合并分支
==对远程仓库的操作是在本地操作 成功加入版本库之后的==
//拉取合并代码
git pull [仓库名] [分支名]
//推送代码
git push [仓库名] [分支名]
4.2准备两个仓库,我在这里的是gitee仓库和github仓库
gitee默认分支名为master
,github 我设置的默认分支名也为master
仓库内容如下:
- gitee 默认分支master
-
github 默认分支master
4.3拉取合并仓库内容
- 拉取合并gitee里的文件(注意拉取命令中的gitee是我们连接时起的别名)
git pull gitee master
-
拉取合并github里的文件(注意拉取命令中的github是我们连接时起的别名)
注意拉取的时候可能会出现这个问题
连接超时原因可能:1.你的网络状态不好; 2.github连接时有时候会被墙
不能读取远程仓库可能原因:
1.密钥过期,或内容改变,从新配置密钥;
2.删除远程仓库,从新连接
git remote rm [仓库别名]
git remote add [仓库别名] [仓库地址]
还有可能会出现代码内容冲突问题,解决代码冲突问题猿猿在另一篇gitee基础博客中提供了三种方法git系统学习总结
4.4推送本地仓库到远程仓库
推送本质都一样,下面一一演示一遍
-
推送本地仓库至gitee仓库
1.先操作本地仓库====>分别执行下列命令
git init . //将所有文件加入缓存区 git commit -m "msg" //提交本地改变到版本库
2.推送至远程仓库——gitee仓库
git push gitee master
查看gitee仓库的变化
-
推送本地仓库至github仓库
1.为了看的清楚内容改变,我们在本地进行一些变化,创建一个
github.txt
文件
2.看下我们github文件
3.推送代码到github仓库。与==1.推送本地仓库至gitee仓库==操作相同,这里就不解释了
git init .
git commit -m "github仓库代码上传——github.txt"
git push github master
4.刷新检查github远程仓库
第二种方法
需求:
- 关联两个仓库,从一个仓库中拉取代码,但是上传时不仅需要上传到拉取代码的仓库,也需要在另一个仓库备份一份
- 比如我们开发时使用的时coding开发,而我们想要把自己做过的项目和git提交记录都在自己gitee上展示一遍,作为我们工作经验的证明
- 提前准备好gitee仓库,仓库名和coding里的名字相同
- 这里我们用github模拟coding代码拉取,仓库名都是testmall
步骤
1.克隆远程仓库代码
创建个存放代码的空文件夹,右键打开git
git clone [仓库地址]
此时,整个目录被全部拉取到了本地
2.关闭此git窗口,进入拉取成功的根文件目录
注意,此目录下有个.git
文件,所以我们就不用==git init==初始化我们的本地仓库了。
3.在这里面从新右键打开Git
3.查看当前仓库详细信息
命令意思前面有介绍
git remote -v
5.连接第二个仓库
或者第三个第四个,操作步骤在第一种方法中有介绍
这里我连接的是gitee仓库
git remote add gitee git@gitee.com:huizai-175/testmall.git
注意:操作完成什么也不显示代表成功
6.查看当前连接的所有仓库
git remote
7.测试将clone下来的代码上传至gitee中
- 新建本次仓库自己的分支(注意:新建的自己的分支是默认继承主分支内容的)
- 切换本次仓库自己的分支
- 推送本地仓库自己的分支到远程仓库
还是一如既往的两步操作
- 上传至本地版本库
- push 推送至远程仓库
git add .
git commit -m "把从github中clone的代码分支提交到gieee中"
git push gitee develop
8.对比推送前后的gitee仓库
查看master分支和develop内容
分支操作也是在本地仓库下操作的,操作完推送此分支到远程仓库就欧克啦
提示信息
- 本地没有任何改动
-
由于我们现在代码是从github直接clone下来的,我们并没有对新关联的gitee仓库进行pull操作,提示先pull在push
可能会出现这种情况,意思是让你对本次操作说明一下。
我们可以不做任何操作,按下面两个步骤退出此编辑器 键盘先按:
在按 wq
在按回车
解释下.git
文件
人家已经很详细了,自己就不耗时写了 链接
.git文件夹详解_mayfla的博客-CSDN博客_.git
骚操作
标注:以下为猿猿各种收集到的,可能有抄袭嫌疑,如有请联系猿猿删除
==适合对git理解不够深入的小伙伴,强制解决问题==
git使用方法
参考链接 GitHub详细教程
1.git的下载链接
Git2.6.2的网址:https://git-scm.com/downloads
2.git在目录文件夹中打开
3.执行代码
一、输入在当前项目的目录中生成本地的git管理(会发现在当前目录下多了一个.git文件夹)
git init
二、输入git add .(注意有个点)
这个是将项目上所有的文件添加到仓库中的意思,如果想添加某个特定的文件,只需把 . 换成这个特定的文件名即可
git add .
三、输入git commit -m "first commit",表示你对这次提交的注释,双引号里面的内容可以根据个人的需要改。
git commit -m "first commit"
四、输入git remote add origin https://自己的仓库url地址(上面有说到) 将本地的仓库关联到github上,
如我的是git remote add origin https://1314huihui.github.io/supermall/
https://gitee.com/huizai-175/spring-boot
git remote add origin https://自己的仓库url地址
与本地建立关联
git pull origin master --allow-unrelated-histories //--allow-unrelated-histories 解决冲突的方法方案之一
五、输入git push -u origin master,这是把代码上传到github仓库的意思
git push -u origin master //-u 表示设置此次提交的仓库未默认仓库,下次直接`git push` 会体提交到默认仓库
这里就上传成功了!
(1条消息) git stash 和 git add 的区别及使用技巧_凯扣叮~的博客-CSDN博客_git stash
(2条消息) git如何将一个分支上的代码提交到另一个分支_Doris@的博客-CSDN博客_git将一个分支的部分代码迁移到另一个分支
冲突解决
git status 有红色的文件
git add .
git diff
git status 文件全变绿了
git commit -m ""
git status 解决!没有文件了
git push
代码从一个分支上传另一个分支
//A分支提交到B分支
git add .
git commit -m "msg"
git log //记住这个id
git checkout B
git pull
git cherry-pick id
git push origin B
或
git push origin A:B
本博文结束,耗时一天的,给猿猿留下个点赞收藏在走呗
评论区