Git

141 阅读8分钟

Git

一、什么是git

git是一款分布式版本控制工具

1.通俗来讲就是我们下载好git后,需要配置自己的个人信息
(因为一个项目要多人开发,个人信息就是验证是谁写的代码,方便后面项目出现问题追责用的。)
2.我们写代码,直接从一个叫做远程仓库的地方通过git命令,将代码拉取到本地,然后进行开发
3.开发完成后再上传到远程仓库,这个远程仓库就是最后整合代码的地方)
4.从远程拉取仓库的时候,是相当于将远程仓库的代码整个复制到本地,这样每个人的电脑都是一个完成的版本库。

Git优点:
1.适合分布式开发
2.速度快,灵活
3.两个人出现了代码冲突,很容易快速解决
4.离线工作(因为每个人拉取代码后,自身相当于版本库,远程仓库宕机不影响本地开发)
5.保护数据

二、git能干什么

简单来说,git可以实现代码管理,版本控制以及协同开发。

三、通过命令行使用git

1.下载git

Git下载链接:git-scm.com/download 下载后安装,桌面右击桌面,即可看到Git Bash。

2.配置个人信息

git config --global user.name “姓名”
git config --global user.email “邮箱地址”

查看配置信息
git config --global user.name
git config --global user.email

3.为常用指令配置别名

有的git命令比较长,我们可以给这些长的命令起别名,就不需要输入那么复杂了

步骤:
1. 打开用户目录,创建 .bashrc 文件(用户目录就是在 C盘\用户\用户所在文件夹\)
2. 在 .bashrc 文件中输入如下内容:

     #用于输出git提交日志
     alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
     #用于输出当前目录所有文件及基本信息
     alias ll='ls -al'
     
(这样以后查看目录,直接输入ll,查看日志直接输入git-log即可)
3.打开gitBash,执行 source ~/.bashrc

4.解决乱码问题:

1. 打开GitBash执行下面命令
git config --global core.quotepath false\
2. ${git_home}/etc/bash.bashrc 文件最后加入下面两行
export LANG="zh_CN.UTF-8"\
export LC_ALL="zh_CN.UTF-8"\

5.git流程图

image.png 图解如下:

1.工作区(就是你本地文件夹工作的地方)
2.暂存区(位于.git目录下,用来记录工作区代码更新状态,将代码提交到本地仓库前要先将代码提交到这里)
3.本地仓库(记录本地代码的状态,位于.git目录下)
4.远程仓库(存放本地开发代码的地方)

如何理解工作区和本地仓库的区别:
    工作区的代码是不能被git管理的,
    本地仓库的代码是可以被git进行管理的,
    工作区如变成本地仓库,被git管理?
    (需要在想变成本地仓库的文件夹下,打开git Bush,通过 git init 命令 进行初始化操作。)

将代码提交到远程仓库的流程:
        add         commit          push
工作区 -----> 暂存区 -----> 本地仓库-----> 远程仓库

git命令如下:

1. clone(克隆): 从远程仓库中克隆代码到本地仓库
2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
3. add(添加): 在提交前先将代码提交到暂存区
4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
6. pull (拉取): 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge
7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

image.png 图解:

新建文件后,是未跟踪的状态,
新建文件后,通过 git add添加到了暂存区,然后又修改了,并没有再次添加到暂存区,就是未暂存的状态。
通过git add添加到暂存区后,然后通过git commit 添加到本地仓库,进而可以将代码提交到远程仓库。

6.git基础命令

1.查看代码修改的状态 (工作区,暂存区的状态)
git status

2.添加工作区到暂存区
git add
例子 : git add . (将本地所有文件提交到暂存区)

3.提交暂存区到本地仓库
git commit -m "提交代码的描述信息"

4.查看提交日志
git log

命令形式:git log [option]
options
    --all 显示所有分支
    --pretty=oneline 将提交信息显示为一行
    --abbrev-commit 使得输出的commitId更简短
    --graph 以图的形式显示

5.版本回退(将提交到本地仓库的代码回退到暂存区)
git reset --hard commitID (commitID可以通过 git log 或者 git-log 查看)
如何查看已经删除的记录?(可以查看删除记录的commitID)
git reflog

6.查看本地分支
git branch

7.创建本地分支(创建的分支是基于当前分支创建的,所以创建的分支里的代码和当前代码一致)
git branch 分支名

8.切换分支
git checkout 分支名
切换到一个不存在的分支(创建并切换)
git checkout -b 分支名

9.合并分支
git merge 分支名
举例:在master分支上创建了新的分支,切换到新的分支后,修改了代码,
然后切换回master分支,使用git merge 分支名命令 将其他分支的代码提交合并到当前分支上来。

10.删除分支(不能删除当前分支,只能删除其他分支)
git branch -d branch1 删除分支时,需要检查
git branch -D branch2 强制删除分支,不做任何检查

11.解决冲突
当两个分支上对同一个文件的同一个代码位置进行了修改,合并分支的时候,就会造成冲突。

如何解决冲突?步骤如下:
1.处理文件冲突的地方
2.将冲突代码改成我们最终想要的代码,将解决完冲突的文件添加到暂存区(add3.提交到仓库(commit4.然后在提交到远程仓库(push)

四、通过IDEA使用git

1.在Idea中配置Git

点击Test按钮,出现成功提示,代表配置完成。

image.png

2.在Idea中操作Git

场景:本地已经有一个项目,但是并不是git项目,
我们需要将这个放到码云的仓库里,和其他开发人员继续一起协作开发。

1. 创建项目远程仓库

在Gitee或者github中创建远程仓库

2. 初始化本地仓库

初始化本地仓库的过程,就是选择哪个项目被git管理。

image.png

3. 设置远程仓库(未来将要把代码提交到哪个gitee或者github的仓库中)

image.png

4. 提交到本地仓库

image.png

5. 推送到远程仓库

image.png

6. 克隆远程仓库到本地

image.png

7. 创建分支

image.png

image.png

8. 切换分支及其他分支相关操作

image.png

9. 解决冲突

1. 执行merge或pull操作时,可能发生冲突(冲突的代码文件会爆红)在爆红的代码文件中,对冲突的代码部分进行修改
2. 冲突解决后加入暂存区
3. 提交到本地仓库
4. 推送到远程仓库

3.IDEA常用GIT操作入口

image.png

4. 场景分析

1.当前的开发环境如下,我们每个人都对这个项目已经开发一段时间,接下来我们要切换成团队开发模式。
  
2.也就是我们由一个团队来完成这个项目实战的内容。团队有组长和若干组员组成(组长就是开发中的项目经理)。
  
3.所有操作都在idea中完成。

流程:

1.组长,基于本项目创建本地仓库;创建远程仓库,推送项目到远程仓库
 (组长创建基本的项目,通过git add ,git commit ,git push 将项目推到远程仓库)

2.每一位组员从远程仓库克隆项目到idea中,这样每位同学在自己电脑上就有了一个工作副本,可以正式的开始开发了。
 (git clone git远程仓库地址)

3.组员A修改工作区,提交到本地仓库,再推送到远程仓库。组员B可以直接从远程仓库获取最新的代码
  (组员A,git push  组员B,git pull)
  
4.组员A和组员B修改了同一个文件的同一行,提交到本地没有问题,但是推送到远程仓库时,后一个推送操作就会失败

解决方法:需要先获取远程仓库的代码到本地仓库,编辑冲突,提交并推送代码。

解决方法图示:

image.png

五、Git操作注意事项

  1. 切换分支前先提交本地的修改

  2. 代码及时提交,提交过了就不会丢

  3. 不要随意删除文件目录

  4. windows下无法创建.ignore|.bashrc文件

    在git目录下打开gitbash 执行指令 touch .gitignore

  5. IDEA集成GitBash作为Terminal

    image.png