目录
1.git介绍
Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。
➢ 分布式版本控制工具
Git、Mercurial、Bazaar、Darcs……
像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次
对整个文件仓库的完整备份。
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
-
服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
-
每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
➢Git 和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
➢ 局域网 GitLab
➢ 互联网GitHub(外网)Gitee 码云(国内网站)
2.git的常用命令
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码。
※注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系
1.初始化本地仓库
git init //初始化本地仓库, 使用 ll -a 查看本地隐藏文件
2.查看本地仓库的状态
在linux里面的复制一行为 yy 粘贴为p
git status 查看本地仓库的状态
vim hello.txt 创建一个hello.txt的文本文件
cat hello.txt 查看文本文件中的内容
tail -n 1 hello.txt 查看文本文件的最后一行内容
3.添加至暂存区
git add hello.txt 添加至缓存区
git rm --cached hello.txt 删除缓存区的内容
4.提交到本地仓库
git commit -m "my first commit " hello.txt //将hello.txt提交到本地仓库,-m:本次提交的描述信息
git reflog 查看提交的日志
git log 查看完整的提交日志
5.修改代码
vim hello.txt //修改文本
git status //查看版本状态
git add hello.txt //添加至缓存区
git commit -m "second commit" hello.txt //提交
git reflog //查看提交日志
6.版本穿梭
git reset --hard //版本号 使用其他版本
3.分支
3.1 什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用).
3.2.分支的常用命令
1.切换分支
git branch hot-fix // 创建hot-fix分支
git branch -v //查看所有分支
git checkout hot-fix //切换至hot-fix分支
2.正常合并
git checkout master 切换至master分支
git merge hot-fix 合并hot-fix分支到master分支
3.冲突合并
冲突产生的原因:
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。
1)编辑有冲突的文件,删除特殊符号,决定要使用的内容
特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix
hello git! hello atguigu! 2222222222222
hello git! hello atguigu! 3333333333333
hello git! hello atguigu! master test
hello git! hello atguigu! hot-fix test
2)添加到暂存区
git add hello.txt
3)执行提交(注意:此时使用 git commit 命令时不能带文件名)
git commit -m "merge hot-fix"
--发现后面 MERGING 消失,变为正常
4.团队协作
1.团队内协作
2.跨团队协作
5.github
1.复制http链接
https://github.com/wuhuai666/gitDemo.git
2.取别名
git remote add git-Demo https://github.com/wuhuai666/gitDemo.git //取别名
git remote -v //查看所有别名
3.推送到远程库
git push git-Demo master // 将master分支的内容提交到远程仓库
4.接收远程库的更新
git pull git-Demo hot-fix //将远程库hot-fix分支的内容更新到本地库中
5.克隆远程仓库到本地
git remote git-Demo1 https://github.com/wuhuai666/gitDemo.git //取别名
git clone https://github.com/wuhuai666/gitDemo.git //克隆远程仓库到本地
步骤: 1.拉取远程代码到本地仓库------->2.初始化本地仓库--------------》3.取别名origin
6.IDEA集成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
注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”
3.注意
注意:push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push 的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!