Git从入门到精通

907 阅读8分钟

什么是git?

Git 是一个免费的、开源的分布式版本控制系统。
为什么我们需要版本控制呢?从最初的个人开发过渡到团队合作!

一.Git的工作机制

image.png
工作区: 我们代码所在地方的文件夹。
暂存区:就是一个缓存的地方,不能长久存在,可以删除版本的记录。
本地库:该版本已经持久化,提交到本地库中的代码版本记录会永久存在。

二.Git常用命令

git config --global user.name 用户名 设置用户签名
git config --global user.email 邮箱 设置用户签名
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m "日志信息" 文件名 提交到本地库
git remote add origin 远程库地址   //将本地库与远程库相关联
git push 远程库地址 推送到的分支名称  //将本地库的内容推送到远程仓库之中
git reflog 查看历史记录
git reset --hard 版本号 版本穿梭

2.1 设置用户签名、查看用户签名

git config --global user.name 用户名  
git config --global user.email 邮箱

git config --global --list  //查看用户签名

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。 Git 首次安装必须设置一下用户签名,否则无法提交代码。
※注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任 何关系。

2.2 初始化本地仓库

说明:我们需要进入一个文件夹,或者创建一个新文件夹并进入!执行以下命令

git init

如果出现.git的隐藏文件,说明初始化成功!

2.3 查看本地库状态

git status

两种情况:

  • 工作区没有任何文件:

image.png

  • 工作区存在还没有提交到暂存区的文件

image.png

2.4 添加暂存区

将工作区的文件添加到暂存区中

git add 文件名   //添加具体工作区中的文件到暂存区中
git add .    //添加所有工作区新的文件到暂存区中

2.5 提交本地库

将暂存区中的文件提交到本地库

git commit -m "日志信息" 文件名

注意:每次新修改了一个文件以后都需要执行从工作区==>暂存区==>本地库的流程才能保存

2.6 将本地库和远程库进行绑定

git remote add origin 你的远程库地址

2.7 获取远程库和本地库的同步

git pull --rebase origin master

2.8 查看版本信息

提交到了本地库的每一次信息都存在版本记录!我们可以通过查看这些记录,并且回退到对应版本!

git reflog   // 查看所有的版本记录【简单显示情况】
git log   //查看所有版本记录的详细信息

2.9 版本穿梭

每个版本都有一个版本号,我们通过版本号就可以随便进入到任何一个版本状态

git reset --hard 版本号

git切换版本,底层原理其实就是移动HEAD指针。

三.Git分支操作

什么是分支?

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独 分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时 候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是 一个单独的副本。(分支底层其实也是指针的引用)

image.png 分支的好处?

同时并行推进多个功能开发,提高开发效率。 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败 的分支删除重新开始即可。

3.1 分支常用命令

git branch 分支名                     //创建新分支 
git branch -v                        //查看当前所在分支 
git checkout 分支名                  //切换到指定分支 
git merge 分支名                     //把指定的分支合并到当前分支上

四. 版本冲突问题解决

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替 我们决定使用哪一个。必须人为决定新代码内容。

1. 找到冲突的文件

2. 自己决定保留哪一个部分,删除到冲突部分的代码。

3. 重新将修改后的文件添加提交到工作区中。

五.团队协作机制

5.1 团队内部协作

image.png 大家都处于一个开发团队中,共同拥有对代码pull和push的权利。

5.2 跨团队协作

团队外的人对这个团队项目进行修改完善。

1. fork到自己的代码仓库

image.png

5.2.2 在自己仓库中进行修改

5.2.3 修改完成后发起请求

image.png 这样,项目的原本发起者就可以选择是否合并你的代码到其中了!

六.GitHub操作

远程仓库常用命令

git remote -v                          //查看当前所有远程地址别名
git remote add 别名 远程地址            //给远程地址起别名
git push 别名 分支                     //推送本地分支上的内容到远程仓库,分支是最小单位!一定要加上 
git clone 远程地址                     //将远程仓库的内容克隆到本地,十分常用!
git pull 远程库地址别名 远程分支名      //将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并

git clone命令会做如下操作: 1、拉取代码。2、初始化本地仓库。

6.1 进入GitHub仓库,创建账号

github.com/

6.2 创建一个仓库

image.png

image.png

6.3 ssh免密登录

我们可以看到远程仓库中还有一个 SSH 的地址,因此我们也可以使用 SSH 进行访问。

6.3.1 进入到本地计算机C盘的用户主目录

image.png

6.3.2 在当前目录右键,进入git bash界面

输入命令

ssh-keygen -t rsa -C yuri2559@qq.com    //最后是一个邮箱,设置为自己的邮箱
// rsa 是一个著名的非对称算法,表示根据你的邮箱名字生成一个唯一的秘钥和公钥。

6.3.3 出现一个.ssh目录

image.png 我们打开公钥这个文件,复制其中的内容。

6.3.4 在GitHub中添加公钥

image.png

七. IDEA集成Git

7.1 配置Git忽略文件

为什么要忽略?

这些文件与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之 间的差异。

7.1.1 创建一个git.ignore文件

这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用户主目录下 git.ignore 文件模版内容如下

# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see
http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml

7.1.2 在.gitconfig 文件中引用忽略配置文件(此文件在用户主目录中)

[user]
	name = jianyou
	email = yuri2559@qq.com
[core]
excludesfile = C:/Users/Administrator/git.ignore

位置如下

image.png

7.2 配置git程序安装目录

image.png

这样就继承成功了,我们可以对Idea中的项目进行相关的操作。

7.3 Idea查看项目历史版本

image.png 我们选中对应的版本,右键,可以选择回退到之前的版本中。

7.3 Idea切换分支

image.png

image.png 这样,我们就可以切换到不同的分支中去了!

7.4 Idea 合并分支

在7.3的基础上,我们选中一个想要合并的分支,右键, 即会出现merge分支的命令,如果代码没有冲突的话,我们就可以合并成功了!

八.IDEA集成GitHub

8.1 配置GitHub账号

image.png

8.2 分享本地项目到GitHub

  1. 先随便创建一个本地项目

image.png 我们直接点击分享,就可以将项目直接分享到GitHub中去了,并且Idea会自动为我们在GitHub中创建项目仓库。

推荐视频学习:www.bilibili.com/video/BV1vy…

九. 将本地项目与远程仓库关联的两种方式

9.1 clone

将远程仓库下载到本地(核心就是下载.git文件),然后将我们的代码复制过去。这样就可以直接进行提交了

9.2 使用命令

在创建新仓库成功以后,直接对本地的项目使用命令进行绑定,在仓库创建成功以后会有该命令的提示!

十.可能遇见的问题

push失败

fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin master

这个意思是说你的本地分支没有和远程分支相关联,因此导致提交失败。解决方法有两种。 解法一: 指定要上传到的分支

git push origin dev         确保本地有相同的分支,远程没有这个分支没关系,会在远程自动创建一个分支。

解法二: 关联远程分支

git push --set-upstream origin dev    进行关联后就不用每次都进行方法一啦!