学习git的笔记

视频教程链接【3小时带你搞定git-玩转GitHub】
教程发布时间大概是2020年

3小时带你搞定git-玩转GitHub

    • 1学习目标
    • 2版本控制
      • 2.1本地版本控制系统
      • 2.2集中化版本控制系统
      • 2.3分布式版本控制系统
    • 3 windows上安装Git
    • 4.理解Git文件的三种状态与工作模式
    • 5.创建版本库并提交文件
    • 6.时光穿梭机
      • 6.1修改文件与文件提交
        • 暂存区文件提交与撤销
      • 6.2版本回退
        • 6.2总结
      • 6.3文件删除
        • 第一种删除方法
        • 第二种删除操作
    • 7.远程仓库
      • 7.1克隆远程项目到本地
      • 7.2克隆远程项目到本地
    • 8.Git分支操作
      • 8.1本地分支创建,合并.重命名与删除
      • 8.2分支push与pull操作
        • 远程创建一个分支并拉取到本地
      • 8.3分支操作冲突出现于解决
        • 8.3.1.本地分支操作冲突
        • 8.3.2.多人协同操作冲突
    • 9.标签管理
    • 10idea下Git基本操作
      • 10.1环境集成配置
      • 10.2克隆项目
      • 10.3(重要)idea推送项目到远程仓库
      • 10.4(重要)idea下分支操作
        • 10.4.1本地新建分支
        • 10.4.2本地合并分支
        • 10.4.3将本地新建分支推送到远程仓库
        • 10.4.4把远程分支拉取到本地,并且在创建新分支
      • 10.5gitignore插件使用
      • 10.6idea冲突出现及解决办法
        • 10.6.1本地分支出现的冲突
        • 10.6.2(重要)多人协同操作出现的冲突

1学习目标

  • 版本控制概念&分类
  • git安装&常见命令使用
  • git工作流程&优点
  • 本地仓库&远程仓库(GitHub&gitee)
  • 主干分支开发&冲突解决
  • idea集成git基本操作
  • 忽略提交文件插件配置与使用

2版本控制

版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统,简单讲就是备份和记录

2.1本地版本控制系统

人们把项目拷贝到本地磁盘上进行备份,然后以命名方式来区分
学习git的笔记_第1张图片

优点 缺点
简单 备份较多或许就会混淆不同版本之间的区别
不同系统上的开发者无法协同工作

2.2集中化版本控制系统

有一个单一的集中管理的服务器,保存所有文件的修订版本,协同工作的人们都通过客户端连到这台服务器,读取最新的文件或者提交更新.
学习git的笔记_第2张图片

优点 缺点
支持协同开发 存在单点故障

2.3分布式版本控制系统

客户端不只是提取出最新版的文件快照,而是把最原始的代码仓库镜像懂啊本地.每一次提取操作,实际上都是一次对代码仓库的完整备份.
学习git的笔记_第3张图片

3 windows上安装Git

  1. 去官网下载git
  2. 一直点击下一步完成安装
  3. 右键鼠标,点击Git bash here,打开命令窗口

学习git的笔记_第4张图片

  1. 配置用户名与邮箱
git config --global user.name [username]
git config --global user.email [email]
git config --list //查看所有配置

–global参数表示你这台机器上所有的Git仓库都会使用这个配置.

4.理解Git文件的三种状态与工作模式

状态 描述
已提交(committed) 已提交表示数据已经安全保存在本地仓库中
已修改(modified) 已修改表示修改了文件,但还没保存到仓库中
已暂存(staged) 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中.

针对Git文件的三种状态,这里需要了解Git项目的是哪个工作区域:工作区,暂存区和Git仓库.

分类 描述
工作区 简单的理解为在电脑里能看到的目录,比如自己创建的本地项目目录
暂存区 Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git自动创建的第一个分支master,以及指向master的第一个指针叫HEAD.
Git仓库 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库.

基本上的Git工作流程描述如下:

  • 工作区中修改某些文件.
  • 对修改后的文件进行快照,然后添加到暂存区.
  • 提交更新,将保存在暂存区域的文件快照永久转储到Git仓库中.

流程图如下:
学习git的笔记_第5张图片
学习git的笔记_第6张图片

5.创建版本库并提交文件

版本库又名仓库,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。理解了Git文件状态与三种工作区域之后,通过一个例子来体验Git对于文件的基本操作。

编写一个文本文件并将文件提交到git仓库

  1. 初始化git本地仓库

通过执行git init命令在本地初始化一个本地仓库,执行该命令后会在本地初始化一个没有任何文件的空仓库。
学习git的笔记_第7张图片

  1. 新建文本文件git01.txt 并添加到暂存区

文本内容如下:
学习git的笔记_第8张图片
在.git同级目录下添加git01.txt文件后,使用git status查看工作目录与暂存区文件状态
学习git的笔记_第9张图片
使用git status命令能看懂啊那些修改被暂存到了,哪些没有,哪些文件没有被跟踪到.
可以看到git01.txt既没有被暂存也没有被跟踪,输出结果具体解释如下

$ git status
On branch master//显示在主分支上面
No commits yet//还没有提交
Untracked files://没有追踪到的文件
  (use "git add ..." to include in what will be committed)//追踪到该文件的方法
        git01.txt //没有追踪到是红色,追踪到是绿色
nothing added to commit but untracked files present (use "git add" to track)

可以看到git01.txt既没有被暂存也没有被跟踪

  1. 执行git add命令添加文件到暂存区

git add path通常是通过git add {path}的形式把 {path}添加到索引库中, {path}可以是文件也可以是目录.

学习git的笔记_第10张图片

$ git status
On branch master
No commits yet//未提交
Changes to be committed:
  (use "git rm --cached ..." to unstage)//移除暂存区里的某个文件
        new file:   git01.txt //追踪到是绿色

此时可以看到有一个git已tracked到新文件git01.txt,文件被成功存放到暂存区

  1. 执行git commit命令提交文件到本地版本库

文件被添加到暂存区后,执行git commit命令提交暂存区文件到本地版本库中
学习git的笔记_第11张图片

$ git commit -m "git版本初始化与文件提交"
[master (root-commit) 965e030] git版本初始化与文件提交
 1 file changed, 1 insertion(+)//一个文件被改变,一次插入
 create mode 100644 git01.txt
$ git status
On branch master
nothing to commit, working tree clean //暂存区没有文件了

git log命令用于显示提交日志信息.

git commit命令用于将更改记录(提交)到存储库.将索引的当前内容与描述更改的用户和日志消息一起存储在新的提交中.

$ git log
commit 965e030ebd47d8d37defd54adba05f25e4b235c4 (HEAD -> master)//唯一的标识
Author: yaoyaowu2333 <[email protected]>//提交人
Date:   Mon Sep 4 20:45:55 2023 +0800//日期
    git版本初始化与文件提交//日志

6.时光穿梭机

6.1修改文件与文件提交

修改后内容如下:
学习git的笔记_第12张图片
查看当前状态

$ git status
On branch master
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git restore ..." to discard changes in working directory)//取消这次改变
        modified:   git01.txt //modified 被修改
no changes added to commit (use "git add" and/or "git commit -a")

将文件提交到暂存区

$ git add . //点代表当前目录

在这里插入图片描述
将文件提交

git commit //会进入文本编辑模式
//点击i进入编辑模式,点击esc退出编辑模式,点击:wq保存退出

学习git的笔记_第13张图片
学习git的笔记_第14张图片

修改需要注意的问题

下面再次修改git01.txt然后执行提交操作
学习git的笔记_第15张图片
执行提交操作
学习git的笔记_第16张图片
虽然工作区的内容进行了修改,因为没有暂存,暂存区还是和之前一样,所以提交不成功
git本地库与工作区的区别的命令

$ git diff HEAD -- git01.txt
//差异比较说明
diff --git a/git01.txt b/git01.txt
index ad795e8..884dbab 100644
--- a/git01.txt //变动之前的文件
+++ b/git01.txt //变动之后的文件
@@ -1,2 +1,3 @@ //-代表变动之前的文件,1,2代表从一行开始连续两行,+代表变动之后的文件,1,3代表从第一行还是连续三行
 git 仓库初始化与文件添加基本操作
-git 开启时光穿梭机的故事
\ No newline at end of file
+git 开启时光穿梭机的故事//将不一样的结果罗列出来
+git 第三次修改
\ No newline at end of file

可以看出:文中第三行内容并没有提交到版本库中,原因在于修改后的git01.txt并没有添加到暂存区,所以执行提交操作并不会发生改变.

暂存区文件提交与撤销

暂存区文件提交与撤销
当发现因失误将文件添加到暂存区时,git支持文件的撤销操作,执行命令如下

git reset HEAD 文件  //取消上一次的操作,上一次的操作可以是git add也可以是git commit

执行git add .后查看版本库状态并执行撤销操作
再次查看版本库状态, 成为未追踪文件
学习git的笔记_第17张图片

6.2版本回退

当文件修改后被提交的次数很多时,对于版本库中存放的文件就会出现不同的版本,在多人开发的项目环境中,通常会对不同版本文件进行查看甚至回退的情况
对于上面操作的git01.txt文件已有几个版本,对于历史版本的查看使用git log命令
学习git的笔记_第18张图片
列表显示的结果按提交时间倒序排列.其中第一条中HEAD->master代表当前指针指向Git版本库中master主干分支,每次提交Git内部均会生成一个唯一的SHA算法构建的字符串来唯一标识当前版本

保存并提交命令:git commit -am "日志"
学习git的笔记_第19张图片
如果提交历史记录较多,可以加入数字控制显示的版本记录数,并且使用命令查看简略版log:git log --pretty=oneline
学习git的笔记_第20张图片
版本回退到上一个版本,使用命令git reset --hard HEAD^
在这里插入图片描述
git01.txt内容
学习git的笔记_第21张图片
往回退多个版本,例如回退两个版本,命令:git reset --hard HEAD~2
在这里插入图片描述
git01.txt内容
学习git的笔记_第22张图片
通过标识来跳转到想要的版本,命令:git reset --hard 标识
在这里插入图片描述
git01.txt内容
学习git的笔记_第23张图片
回退版本后执行git log命令只会从最初版本显示到当前版本.如果想要前进到更新的版本需要查看所有的日志,运行命令:git reflog可查看所有版本的标识
学习git的笔记_第24张图片

6.2总结
git log --pretty=oneline//版本信息一行展示
git reset --hard HEAD^//回退一个版本
git reset --hard HEAD~2//往回退两个版本
git reset --hard 标识//通过标识回退到指定版本
git reflog//查看完整的日志信息

6.3文件删除

删除文件同样是一个修改操作
查看git文件本地仓库里面的文件,命令:git ls-files
在这里插入图片描述
可以看到只有git01.txt,git02.txt没有被添加进去
学习git的笔记_第25张图片
提交后发现有了两个文件

删除git02后,还可以从git上拉取下来,命令:git checkout git02.txt
学习git的笔记_第26张图片
在这里插入图片描述
学习git的笔记_第27张图片
可以看到git02又被拉取下来了

第一种删除方法

git仓库删除文件有两种办法,第一种在工作区删除后
学习git的笔记_第28张图片
git给的提示有通过add更新,或通过restore撤销这次操作.
下面展示通过add更新
学习git的笔记_第29张图片
发现git02已经处于被删除状态,执行提交操作后可以发现git02文件已经被成功删除
学习git的笔记_第30张图片
回退到git02提交版本
首先要查看所有日志,获取到版本标识,然后通过reset命令跳转到指定版本
学习git的笔记_第31张图片

第二种删除操作

学习git的笔记_第32张图片
可以发现已经被删除了
学习git的笔记_第33张图片

7.远程仓库

Git是一个分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。截止目前,并没有看到分布式的环境,因为以上的操作都在本地发生.对于Git,除了前面提到的本地版本库外,Git支持远程仓库的托管服务,即使用者可以将本地版本库中的文件托管到远程服务器进行存储,这样就极大的方便开发,无论你走到哪,只要你的机器能够联网,就可以通过远程的仓库地址得到一份相同的项目库文件,并且下载到本地的文件版本记录与远程文件版本保持一致,并且可以很方便的实现多人协同开发操作。

对于Git远程仓库,GitHub( https://github.com/ )是比较知名的一个,目前已被微软收购,而国内比较知名的当属码云( https:/gitee.com/ )了,当然除了这些远程仓库外,在公司,有的公司出于安全考虑,可能会自己搭建一套Git服务区来自Git的远程仓库,对于内部仓库会有专门人员来进行维护操作。这里以当下比较流行的GitHub仓库来介绍Git远程仓库基本操作与使用。

7.1克隆远程项目到本地

下载插件octotree,可以看GitHub项目的层级目录
学习git的笔记_第34张图片
下载项目方式1:download zip
下载项目方式2:复制https链接,打开git终端,输入命令:git clone https://github.com/xxx/xxx.git
下载项目方式3:使用ssh方式下载,该方式下载效率高,而且更加安全.

  1. 首先要生成一个SSH keys.在本地Git客户端生成SSH公钥与私钥,执行命令ssh-keygen -t rsa -C "GitHub账号邮箱",一直点回车

学习git的笔记_第35张图片
看到公钥已经生成,存储在’/c/Users/13286/.ssh/id_rsa.pub.’

  1. 打开文件id_rsa.pub,复制公钥
    学习git的笔记_第36张图片

  2. 在GitHub添加公钥
    点击右上角的头像,点击settings,点击SSH and GPG keys,点击右上角new SSH key,输入title和key(要删除莫文明的空格)
    学习git的笔记_第37张图片

  3. 检查测试链接,执行命令ssh -T [email protected]
    学习git的笔记_第38张图片
    输入yes后可以成功连接.如果自己的github有多个ssh公钥,可能会报错,我去找如何管理多个ssh key的方法,最后没有找到可用的办法.

  4. 输入命令git clone [email protected]:xxx/xxx.git克隆项目
    学习git的笔记_第39张图片
    学习git的笔记_第40张图片

7.2克隆远程项目到本地

在远程创建一个仓库,把自己的项目放到远程的仓库
查看当前本地仓库状态
学习git的笔记_第41张图片

  1. 新建仓库

点击右上角的加号
学习git的笔记_第42张图片
刚新建好的远程仓库的样子
学习git的笔记_第43张图片

  1. 绑定远程仓库并推送

绑定远程仓库命令:git remote add origin [email protected]:xxx/xxx.git
推到远程主干:git push -u origin master
学习git的笔记_第44张图片
绑定后成功推送成功.在推送过程中因为写错分支名称(把master写成了main),所以失败,改正后就可以成功推送了.结果如下
学习git的笔记_第45张图片
之所以存在git02.txt应该是因为输入git rm git02.txt命令后没有提交.

  1. 修改后进行推送

学习git的笔记_第46张图片
修改内容如上,然后将修改后的文件保存在暂存区,提交到本地仓库,最后上传到远程仓库
学习git的笔记_第47张图片
绑定只需要一次,之后直接输入命令git push推送就可以了,可以看的修改后的内容成功提交到远程仓库
学习git的笔记_第48张图片

8.Git分支操作

开发企业项目中在使用Git或者其他类似版本控制软件对项目版本进行管理时,多人合作的项目在开发时通常不会直接在主干master上进行操作,而是重新开辟新的分支,在新的分支上进行开发调试等操作,当项目调试通过时才会将分支项目的代码合并到主干中,这是在实战中比较好的一种策略,特别是多人协同开发一个项目的情况下尤其明显。Git对于分支操作提供了一下基本命令:

命令 描述
git checkout branch 切换到指定分支
git checkout -b new_branch 新建分支并切换到新建分支
git branch -d branch 删除指定分支(用完后删除)
git branch 查看所有分支,并且*号标记当前所在分支
git merge branch 合并分支(切到master分支合并)
git branch -m oldbranch newbranch 重命名分支
git branch -m | -M oldbranch newbranch 重命名分支,如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名。

8.1本地分支创建,合并.重命名与删除

查看当前分支,创建新分支,并切换到新分支
学习git的笔记_第49张图片
可以看到已经切换到新分支,新分支的内容与主干相同
学习git的笔记_第50张图片
切回主分支
学习git的笔记_第51张图片
重命名分支名,并切到dev分支
学习git的笔记_第52张图片
在dev分支上提交新版本,之后切到master分支
学习git的笔记_第53张图片
合并分支,注意:合并分支要切到主干,合并后删除子分支dev
学习git的笔记_第54张图片

8.2分支push与pull操作

相关命令操作

命令 描述
git branch -a 查看本地与远程分支
git push origin branch_name 推送本地分支到远程
git push origin :remote_branch 删除远程分支(本地分支还在保留)
git checkout -b local_branch origin/remote_branch 拉取远程指定分支并在本地创建分支
  1. 查看远程仓库,新建分支并切换到该分支
    学习git的笔记_第55张图片
  2. 修改文件,想dev分支提交新版本,推送给远程仓库
    学习git的笔记_第56张图片
    可以看到新分支dev已经推送到远程仓库
    学习git的笔记_第57张图片
  3. 删除远程分支,注意删除命令与推送命令只差一个冒号
    学习git的笔记_第58张图片
    可以看到远程仓库已删除dev分支
    学习git的笔记_第59张图片
远程创建一个分支并拉取到本地
  1. 在github新建一个分支,输入分支名,点击create branch:dev即可创建新的分支
    学习git的笔记_第60张图片
    因为本地有dev分支,所以要先删除本地dev分支

  2. 先切换到主分支,然后执行删除命令
    学习git的笔记_第61张图片
    报错是因为分支没有合并,如果要删除没有合并的分支,需要用命令git branch -D 分支名强制删除

  3. 拉取远程分支
    学习git的笔记_第62张图片
    无法拉取远程分支dev,原因是没有获取远程仓库最新的状态

  4. 需要先获取远程仓库最新的状态,获取最新状态的命令为git fetch
    学习git的笔记_第63张图片

  5. 拉取成功,并在本地创建dev分支
    学习git的笔记_第64张图片

8.3分支操作冲突出现于解决

开发中对不同分支下同一文件进行修改后执行合并时就会出现文件修改冲突情况,这里说明一种比较常见的冲突问题以master和leaf01两个分支进行演示说明。

8.3.1.本地分支操作冲突

修改master与dev分支前git01.txt文件内容状态
在dev分支修改内容如下:
学习git的笔记_第65张图片
在master分支修改内容如下:
学习git的笔记_第66张图片
将dev分支合并入master分支的结果如图所示
学习git的笔记_第67张图片

$ git merge dev
Auto-merging git01.txt
CONFLICT (content): Merge conflict in git01.txt//合并过程中git01.txt文件发生冲突
Automatic merge failed; fix conflicts and then commit the result.//自动合并四百,修复冲突后再提交结果

冲突结果展示
学习git的笔记_第68张图片
解决冲突的办法,以其中一个为准,这里里master为准
修改文件后提交到本地仓库
学习git的笔记_第69张图片
可以看到本地仓库从合并状态变为普通状态
学习git的笔记_第70张图片
以图的形式看日志,可以看到分支冲突解决的过程
学习git的笔记_第71张图片

8.3.2.多人协同操作冲突

拉取远程库dev并在本地创建dev开发库,执行命令git checkout -b dev origin/dev这里以同台机器不同窗口来模拟两个用户操作同一分支同一文件(实际开发时多人操作统一文件冲突情况比较常见)
这里两个客户端以c1与c2来描述
c1客户端本地修改dev分支git01.txt文件并在本地执行提交操作效果如下
c1操作
c1用户修改git01文件
学习git的笔记_第72张图片
c1用户添加到暂存区,提交,push到远程仓库
学习git的笔记_第73张图片
c2操作
c2用户修改git01.txt
学习git的笔记_第74张图片
c2用户添加到暂存区,提交,push到远程仓库
学习git的笔记_第75张图片
可以看到push失败,因为c1先提交,c2需要先拉取最新的版本.
学习git的笔记_第76张图片
拉取成功,但合并的过程中发生冲突,冲突结果入下图所示
学习git的笔记_第77张图片
解决冲突
学习git的笔记_第78张图片
再次合并,将解决冲突的版本推送到远程仓库
学习git的笔记_第79张图片
成功推送
学习git的笔记_第80张图片

9.标签管理

标签操作基本命令git tag

命令 描述
git tag tag_name 新建标签,默认为HEAD
git tag -a tag_name -m ‘xxx’ 添加标签并指定标签描述信息
git tag 查看所有标签
git tag -d tag_name 删除一个本地标签
git push origin tag_name 推送本地标签到远程
git push origin --tags 推送全部未推送过的本地标签到远程
git push origin :refs/tags/tag_name 删除—个远程标签

同大多数VCS一样,Git也可以对某一时间点上的版本打上标签。开发中在发布某个软件版本(比如v1.0等等)的时候,通常使用版本库软件命令来对某一版本打上一个标签,以方便标识。
为当前版本添加本地标签
在这里插入图片描述

为某一个版本添加标签
在这里插入图片描述
为某个版本添加标签并指定标签描述信息
在这里插入图片描述
-a 选项表示创建一个附注标签,附注标签是一种特殊的标签,它会在仓库中创建一个带注释的标签对象,包含标签创建者信息、日期以及可选的GPS信息和标签说明,功能更加丰富。

通过日志查看版本信息
学习git的笔记_第81张图片
推送本地标签到远程
学习git的笔记_第82张图片
从远程仓库看到push成功
学习git的笔记_第83张图片学习git的笔记_第84张图片
推送所有没被推送过的标签
学习git的笔记_第85张图片
成功推送到远程仓库
在这里插入图片描述
删除指定的远程仓库中的标签v1.0
在这里插入图片描述
成功删除远程仓库中的标签v1.0
学习git的笔记_第86张图片
删除本地标签
学习git的笔记_第87张图片

10idea下Git基本操作

10.1环境集成配置

全局setting下git环境指定
学习git的笔记_第88张图片
填写本地git.exe地址
学习git的笔记_第89张图片
添加自己的github账号和密码
学习git的笔记_第90张图片
至此,已成功集成git

10.2克隆项目

学习git的笔记_第91张图片
成功克隆
学习git的笔记_第92张图片
打开右下角的git,可以看log
学习git的笔记_第93张图片
点击版本,可以看的到有哪些修改,右键文件,点击show diff可以查看不同.
学习git的笔记_第94张图片
在项目右键,点击git,可以看到很多命令可以实现多种操作
学习git的笔记_第95张图片
在terminal可以敲命令
学习git的笔记_第96张图片

10.3(重要)idea推送项目到远程仓库

  1. 先创建Git仓库
    学习git的笔记_第97张图片
  2. 选择项目所在的文件夹
    学习git的笔记_第98张图片
    可以看到Git仓库创建成功,但文件没有被存入暂存区,所以是红色,
  3. 可以右键项目,然后点击Git,点击add,将文件加入暂存区.
    学习git的笔记_第99张图片
  4. 选择要提交的文件,输入备注信息,点击commit
    学习git的笔记_第100张图片
  5. 从log中能够看到提交信息
    学习git的笔记_第101张图片
    推送到远程仓库
  6. 添加远程url
    学习git的笔记_第102张图片
  7. 添加URL
    学习git的笔记_第103张图片
  8. push
    学习git的笔记_第104张图片
    默认是master.看到成功推送到远程仓库
    学习git的笔记_第105张图片

10.4(重要)idea下分支操作

10.4.1本地新建分支

本地新建分支,并切换到新建分支
学习git的笔记_第106张图片
idea不需要专门提交到暂存区,idea会自动进行add,点击commit即可提交
学习git的笔记_第107张图片
提交新版本
学习git的笔记_第108张图片

10.4.2本地合并分支
  1. 切换到master分支,点击右下角的分支,点击master,点击checkout
    学习git的笔记_第109张图片
  2. 合并分支,点击右下角的分支,点击要合并的分支,点击merge left01 into master
    学习git的笔记_第110张图片
10.4.3将本地新建分支推送到远程仓库
  1. 切到left01分支,点击右上角的钩
    学习git的笔记_第111张图片
  2. 点击右上角的钩后,会自动选择上传到远程仓库的left01分支,如果该分支不存在,远程仓库会自动创建新分支
    学习git的笔记_第112张图片
    可以看到已经远程仓库存在left01分支了
    学习git的笔记_第113张图片
10.4.4把远程分支拉取到本地,并且在创建新分支
  1. 先在远程仓库创建分支dev,并修改main文件的内容
    学习git的笔记_第114张图片
  2. 本地仓库执行fetch命令,从远程仓库获取最新的状态
    学习git的笔记_第115张图片
  3. 将远程分支切换到origin/dev
    学习git的笔记_第116张图片
    切换后远程分支拉取到本地,并且本地创建该分支
    学习git的笔记_第117张图片

10.5gitignore插件使用

前面讲到dev分支拉取与文件修改推送操作,遇到一个小的问题.
在修改完git01.txt.文件后添加文件到暂存区后会将idea本地环境相关配置文件一并提交,而这些文件没有必要提交如果提交对于另外一方更新到本地后反而会影响项目运行.前面解决的方式是借助命令方式将暂存区文件转移到工作区来解决。
命令方式虽然能够解决,但操作麻烦,每次提交不可避免会遇到同样问题,这里介绍一个插件-gitignore,使用gitignore 插件可以在执行文件添加前将没有必要提交的文件让git给自动忽略掉这样开发中就只需要关注修改的文件即可,想想是不是很美!

  1. 安装igonre插件
    学习git的笔记_第118张图片
  2. 创建.gitignore文件
    goland没看到生成.gitignore文件的选项
  3. 添加.gitignore文件进入暂存区
  4. 添加忽略文件

10.6idea冲突出现及解决办法

10.6.1本地分支出现的冲突
  1. 在dev分支修改
    学习git的笔记_第119张图片

  2. 在master分支修改
    学习git的笔记_第120张图片

  3. 合并dev分支

学习git的笔记_第121张图片
出现冲突,左边的是master内容,右边是dev内容,中间的是最终结果
学习git的笔记_第122张图片

  1. 点击左边》,添加该行,点击右边的x,不要右边的那一行
    学习git的笔记_第123张图片
    这就是中间的一个最终的结果
    学习git的笔记_第124张图片
    合并之后提醒要不要把分支删掉
    学习git的笔记_第125张图片
  2. 点击push,提交到远程仓库
    学习git的笔记_第126张图片
10.6.2(重要)多人协同操作出现的冲突
  1. c1用户修改
    学习git的笔记_第127张图片

  2. c2用户修改
    学习git的笔记_第128张图片

  3. 后一个用户c2推送的时候报错,点击合并merge
    学习git的笔记_第129张图片
    点击合并会自动获取最新状态

  4. 会出现和本地冲突一样的页面,选择修改的最终结果.
    学习git的笔记_第130张图片
    推送被拒绝了
    学习git的笔记_第131张图片

  5. 重新推送,推送成功
    学习git的笔记_第132张图片
    学习git的笔记_第133张图片
    总结:推送之前必须先拉取.

常用git语句
1进入到某项目中
cd e:
cd 文件夹
2将项目提交到git
git init
git add .
git commit -m “分支名”

https://blog.csdn.net/qq_36079972/article/details/100279562
3建立新分支
git branch newbranch
5. 检查分支是否创建成功
git branch
6. 切换到你的新分支
git checkout newbranch
6将你的改动提交到新分支上
git add .
git commit -m “newbranch”
7切换到主分支
git checkout master
8将新分支提交的改动合并到主分支上
git merge newbranch

https://blog.csdn.net/u014712086/article/details/107005216/
9fatal: remote origin already exists.解决方法
git remote rm origin
10将项目上传到云端
git remote add origin 网址
git push -u origin master

你可能感兴趣的:(学习,git,笔记)