Git学习笔记
文章目录
1. Git概述
Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。
1.1 版本控制
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制其实最重要的是可以记录文件修改的历史记录,从而让用户能够查看历史版本,方便版本切换。个人开发过渡到团队协作开发必须进行版本控制。
1.2 版本控制工具
-
集中式版本控制工具
集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕
机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
-
分布式版本控制工具
像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
1.服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
2.每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
1.3 Git工作机制
- 通过 add push 推送到远程库(代码托管中心)
- 通过add pull 拉取远程库代码到本地
1.4 Git和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
➢ 局域网
✓ GitLab
➢ 互联网
✓ GitHub(外网)
✓ Gitee 码云(国内网站)
2. Git常用命令
2.1设置用户签名
基本语法
git config --global user.name 用户名
git config --global user.email 邮箱
注意:
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码。这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。
2.2 初始化本地库
基本语法
git init
2.3 查看本地库状态
基本语法
git status
2.4 添加暂存区
基本语法
git add 文件名 //指定文件添加
git add . //全部添加
2.5 提交本地库
基本语法
git commit -m "日志信息" 文件名
2.6 历史版本
基本语法
1.查看历史版本
git reflog 查看版本信息
git log 查看版本详细信息
2.版本穿梭
git reset --hard 版本号
//Git 切换版本,底层其实是移动的 HEAD 指针
3. Git分支操作
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。同时并行推进多个功能开发,提高开发效率。各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
3.1 分支的操作
基本语法:
//查看分支
git branch -v
//创建分支
git branch 分支名
当前所在的分支,其实是由 HEAD指针决定的,所以创建分支的本质就是多创建一个指针。
//切换分支
git checkout 分支名
//合并分支
git merge 分支名
//产生冲突
冲突产生的表现:后面状态为 MERGING
冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。
解决冲突:
1)编辑有冲突的文件,删除特殊符号,决定要使用的内容
2)添加到暂存区
3)执行提交(注意:此时使用 git commit 命令时不能带文件名)
4. Git团队协作机制
4.1 团队内协作
4.2 跨团队协作
5. GitHub操作
5.1 创建远程仓库
5.2 远程仓库操作
基本语法:
//查看当前所有远程地址别名
git remote -v 查看当前所有远程地址别名
//给远程地址起别名
git remote add 别名 远程地址
//推送本地分支到远程仓库
git push 别名 分支
//克隆远程仓库到本地
git clone 远程地址
//拉取远程库内容
git pull 远程库地址别名 远程分支名
5.3 团队协作与跨团队协作
团队协作:
1.选择邀请合作者
2.填写想要合作的人
3.将邀请函发送给被邀请人
4.被邀请人接受邀请
跨团队协作:
1.将远程仓库的地址复制发给邀请跨团队协作的人
2.被邀请人打开地址,点击Fork 将项目叉到自己的本地仓库
3.被邀请人编辑叉取过来的文件,重新上传远程库
4.点击Pull请求并创建一个新的pull请求
5.邀请人检查代码并点击merge pull请求从而合并代码
6. IDEA集成Git
6.1 配置Git忽略文件
问题 **1:**为什么要忽略他们?
答:与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异。
问题 2:怎么忽略?
1)创建忽略规则文件 xxxx.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
# virtual machine crash logs, see
http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
2)在.gitconfig 文件中引用忽略配置文件(此文件在 Windows 的用户目录中)
[user]
name = Layne
email = Layne@atguigu.com
[core]
excludesfile = C:/Users/asus/git.ignore
注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”
6.2 定位Git程序
6.3 初始化本地库
6.4 添加到暂存区和本地库
- 右键点击项目选择 Git -> Add 将项目添加到暂存区。
- 右键点击项目选择 Git -> Commit 将项目添加到暂存区。
6.5 切换版本
- 在 IDEA 的左下角,点击 Version Control,然后点击 Log 查看版本
- 右键选择要切换的版本,然后在菜单里点击 Checkout Revision
6.6 创建分支
- 选择 Git,在 Repository 里面,点击 Branches 按钮
- 在弹出的 Git Branches 框里,点击 New Branch 按钮
- 填写分支名称
- IDEA 的右下角看到新分支名,说明分支创建成功,并且当前已经切换成新分支
6.7 切换分支
在 IDEA 窗口的右下角,切换分支
6.8 合并分支
在 IDEA 窗口的右下角,将XX分支合并到当前 master 分支。如果代码没有冲突,分支直接合并成功,分支合并成功以后,代码自动提交,无需手动提交本地库。
6.9 解决合并分支冲突
如果 master 分支和新分支都修改了代码,在合并分支的时候就会发生冲突。点击 Conflicts 框里的 Merge 按钮,进行手动合并代码,手动合并完代码以后,点击右下角的 Apply 按钮。代码冲突解决,自动提交本地库。
7. IDEA集成GitHub
7.1 设置账号
IDEA中设置中登录GitHub账号,账号密码无法登录,去GitHub设置token,使用token登录。
7.2 分享工程到GitHub
点击VCS下面的Share Project On GitHub。自动帮我们创建远程仓库,并添加、提交、推送。
7.3 push推送本地库到远程库
右键点击项目,可以将当前分支的内容 push 到 GitHub 的远程仓库中。
push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push 的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!
7.4 pull拉取远程库到本地库
右键点击项目,可以将远程仓库的内容 pull 到本地仓库。
pull 是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。
7.5 clone 克隆远程库到本地
创建项目时直接选择从版本控制中选择,然后为 clone 下来的项目创建一个工程。
8. IDEA集成Gitee
本质是一个中文版的GitHub,具体操作同GitHub