本笔记根据该视频进行整理:尚硅谷Git入门到精通全套教程
Git
一、Git概述
Git是一个免费、开源的分布式版本控制系统。
二、Git工作机制
工作区: 电脑本地磁盘里存放的代码
暂存区: 临时存储,准备提交本地库
本地库: 一旦提交就会生成历史版本,无法删除
远程库(push) 提交到基于网络服务的远程代码仓库(远程库)
版本控制
用来记录文件内容变化,以便将来查阅特定版本修订情况
最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本
版本控制工具
集中式版本控制工具
集中式的版本控制系统,所有的版本库是放在中央服务器中的,也就是说我们每一次的修改上传都是保存在中央服务器中的。中央服务器就是个大仓库,大家把产品都堆里面,每一次需要改进和完善的时候,需要去仓库里面把文件给提出来,然后再操作。
这种版本管理模式,存在的问题是协同工作时可能造成的提交文件不完整,版本库损坏等问题,A提交,B也提交,C下载的时候可能得到的仅是A,B提交版本中的一部分。其次,集中式版本控制系统必须要联网才能工作,不论是局域网还是互联网,必须上网才能将本地版本推送至服务器进行保存。
分布式版本控制工具
分布式版本控制系统,重点在于分布。分布的含义不是说每台计算机上只留有版本库的一部分。恰恰相反,分布的含义是每台计算机上都还有一个完整的版本库。这个时候,你的修改仅仅需要提交给本地的版本库进行保存就可以了。那有人就问了,协同开发的话,这玩意儿怎么能协同呢。
不同于集中式版本控制系统的“中央服务器”,分布式版本控制系统可以通过推送版本库,实现不同的计算机之间的版本共享。什么意思呢?就是说对于同一个文件A,如果两个人同时对A文件进行了修改,最新的版本应该都保存在各自的计算机中,想要实现协同开发,只需要将各自的最新版本库推送给对方,就可以得到最新的版本库了。
三、Git安装
四、Git常用命令
1.设置用户签名
git config --global user.name 用户名
配置用户名
git config --global user.email
配置邮箱
git首次安装必须设置用户签名,否则无法提交代码
2.初始化本地库
git init
3.查看本地库状态
首次查看(工作区没有任何文件): git status
新增文件: vim hello.txt
再次查看: 如果有未添加缓存区的文件,则该文件名为红色
4.添加(删除)缓存区
添加至缓存区:git add 文件名
添加至缓存区后,文件名变为绿色:
从缓存区删除: git rm --cached 文件名
5.提交本地库
git commit -m “日志信息(备注)” 文件名
查看状态(没有文件需要提交)
- 查看日志:
git reflog
- 查看详细日志:
git log
HEAD和master:理解git中的head和master
6.修改文件
修改文件后需要重新:添加缓存区
7.历史版本
查看历史版本:
git reflog
查看版本信息git log
查看版本详情信息
版本穿梭: git reset --hard 版本号
五、Git分支操作
1.查看、创建、切换
查看: git branch -v
创建: git branch 分支名
切换分支: git checkout 分支名
2.合并分支(正常合并)
把该分支合并到当前分支:git merge 分支名
当前分支未修改才能正常合并
3.合并分支(冲突合并)
冲突的原因: 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改,Git无法替我们决定使用哪一个,必须人为决定新代码内容。
解决方法:
①打开该文件,修改
<<<<<< HEAD:当前分支
=====上为当前代码
>>>>>>上为要合并的代码
②添加暂存区:git add 文件名
③执行提交(此时git commit命令不能带文件名)
git commit -m "merge hot-fix"
master、hot-fix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的,所以创建分支的本质就是多创建一个指针。
- HEAD如果指向master,那么我们现在就在master分支上
- HEAD如果指向hot-fix,那么我们现在就在hot-fix分支上
所以切换分支的本质就是移动HEAD指针
六、Git团队协作机制
1.团队内协作
2.跨团队协作
GitHub
1.创建远程库&创建别名
创建远程库: 添加链接描述
创建别名(push和clone两个别名): git remote add 别名 链接
查看别名: git remote -v
2.代码推送push
语法: git push 别名 分支
执行后弹出:
登录认证后,git提示上传完成:
回到GitHub发现文件已提交:
3.代码拉取pull
拉取远程库到本地库:git pull 别名 分支名
4.代码克隆clone
git clone 链接
clone会做如下操作:1、拉取代码。2、初始化本地库。3、创建别名
会自动取别名为origin:
5.团队内协作
团队内需要把其他成员邀请进来,其他操作与之前一致。
6.跨团队协作
团队外协作需要把自己远程库的代码 Pull requests
到别人的远程库去
详细步骤
7.SSH免密登录
在电脑的
C:\Users\Administrator
目录下删除.ssh文件(没有就不用了)
右键点击 git bash here
输入ssh-keygen -t rsa -C 邮箱
后三次回车
进入.ssh目录:cd .ssh
(此时.ssh文件夹里有公钥私钥两个文件)
cat查看公钥:cat id_rsa.pub
把公钥复制到:GitHub右上角头像——>settings——>SSH and GPG keys里
IDEA集成Git
1.配置Git忽略文件
IDEA特定文件:
Git只需要pom文件,要忽略掉其他xml和iml文件(他们与项目的实际功能无关,不参与服务器上部署运行。忽略掉能够屏蔽IDE工具之间的差异)
如何忽略:
- 创建忽略规则文件
xxx.ignore(前缀名随便起,例如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
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
- 在.gitconfig中引用忽略配置文件
注意:这里要使用正斜线(/)。
2.定位Git程序
新建maven项目后,点击:file——>settings——>Version Control下的Git
选择Git安装目录下bin文件夹下的git.exe
点击右边Test,直到出现版本信息。
3.初始化Git
初始化:在顶部菜单栏选择:VCS——>Create Git Repository,点击OK。
此时可以看到pom文件变红,为未提交状态。
4.添加缓存区&提交本地库
添加缓存区:右键pom:Git——>Add 提交缓存区
提交本地库同样步骤……
5.切换版本
点击IDEA下面的Git
右键要切换的版本:checkout revision ‘版本号’
6.创建&切换分支
-
右键项目——>GIt——>repository——>Branchs——>New Branch
-
右下角 master——>New branch
切换分支直接点击该分支
7.合并分支(正常合并)
点击要合并分支,选择“Merge “该分支” into 主分支”
8.合并分支(冲突合并)
与正常合并步骤一致
冲突的代码手动选择
IDEA集成GitHub
1.设置GitHub账户
登录:
备用登录方式
2.分享项目到GitHub
3.push推送本地库到远程库
- 右键项目:Git——repository——push
- 顶部菜单Git——push
4.拉取远程库到本地
拉取: 顶部菜单Git——pull
5.克隆代码到本地
File ——> New ——> Projects from Version Control