1.Git概述
什么是版本控制?
版本控制工具
集中式版本控制
- 简单来说就是每次修改都直接去修改服务器(只有一台服务器)的代码
- 问题就是容易单点故障
分布式
- 每个电脑都可以从远程库克隆代码,并且在本地来进行修改处理,然后推送
- 能够在离线状态进行修改。
- 就算远程库坏了,也能够自己在本地处理代码
2.Git的工作原理
- 工作区:就是电脑存放代码的地方
- 暂存区:让git知道有这个代码,而且能被删除
- 本地库:那么就会存入一个历史版本代码而且不能够被删除
- 代码托管中心:其实就是远程库
3.Git常用命令
一定要先设置签名也就是下面这两个,不然无法提交库,可以在用户的.gitconfig下面去查看是否设置成功
- git config --global user.name 设置用户名
- git config --global user.eamail设置邮箱
常用命令
- git init 初始化库,能够建立一个.git文件
- git status查看本地库的一个提交状况
$ git status
On branch master//当前分支
No commits yet//没有提交到暂存区
Untracked files://有一个没有被追踪的文件
(use "git add <file>..." to include in what will be committed)
hello.txt
nothing added to commit but untracked files present (use "git add" to track)
添加文件到暂存区和移除文件出暂存区
- git add 文件名:添加文件到暂存区
- git rm --cache 文件名:从暂存区移除文件
添加之后查询版本
修改版本信息
4.git分支操作
1.什么是分支
- 给用户使用的是master
- 但是程序员开发一个功能可以通过克隆一份副本来单独开发一个功能,那么这种就是分支
- 分支能够让功能开发独立于整个程序
- 如果分支导致项目出现问题,可以通过hot-fix来修复恢复到之前的版本
2.分支操作
- git branch -v:分支版本查询
- git branch hot-fix:创建一个当前的mater的分支,相当于就是创建修复副本,然后通过切换到hot-fix进行测试
- git checkout hot-fix:切换到hot-fix进行修改代码,也就是修改Head的指向。
- git merge hot-fix:master和hot-fix进行合并。或者说当前分支和其它分支进行合并
3.git冲突
- 其实就是两个分支同时修改之后要合并到一个分支上面,那么这个时候他们修改了同一个文件,但是最后合并的时候不知道使用谁的,它会把分支的修改的内容合到一起,然后通过自己手动修改,然后提交
- 本质就是head的指针指向来决定现在到底使用哪个版本,现在很明显就是mater指向一个新的版本,hot-fix也是指向一个新的版本,问题是head应该指向谁?合并的时候可以通过两个文件合并成一个版本,给head进行指向
5.git团队协作
- push推送到远程服务器
- clone克隆项目到本地库
- pull把代码拉取过来更新自己的本地库
分布式
- 两个远程库之间,其中一个fork代码给另一个库
- 然后另一个远程库clone修改之后交给其他库来pull拉取审核和合并
6.github操作
创建远程库
- git remote -v :查看远程库的别名
- git remote add 别名 远程库的https或者是ssh:创建可以连接的远程库的别名
- 注意这里如果使用gitee需要直接创建一个空的,千万不要加上任何模板会本地库和远程库的冲突问题
远程库和本地库的同步问题
- 如果远程库发生修改,那么就要通过命令git pull (远程库地址) (本地分支) 来拉取到本地分支,本地库和远程库实现一个同步
- git pull origin master:拉origin的代码到本地库master分支同步
clone
- git clone origin :克隆项目到本地库
- 它做了几件事
- 拉取代码
- 初始化本地库
- 创建别名(git remote -v来测试一下)
授予权限
团队内合作
- 去到管理员这个地方,找到对方的邮箱然后添加之后把邀请函发送给他
- 他只要接收那么就能够同步远程库
多个团队合作
- 可以先把库fork过来
- 修改之后发送pull request,如果通过那么就能够被合并。
ssh免密登录
- 需要进入到c盘用户的.ssh文件找公钥,如果没有就生成
- ssh-keygen -t rsa -c 邮箱:生成ssh公钥和私钥
- 然后进入到设置ssh的位置加上公钥那么就可以通过ssh链接来进行pull和push了
7.忽略文件
- 需要在c盘用户这里创建一个git.ignore文件,按照下面的模板
- 忽略掉idea的iml,.idea等文件,防止个性差异导致程序无法运行
模板
# 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
8.idea整合git
- 首先创建项目,设置setting->version control->git->调整要使用git.exe的位置
- 接着就是上面边栏的VCS(版本控制系统)->import into version control->create git respo就是把当前项目让git监测到,也可以说交给git管理
- 如果修改文件是蓝色或者是创建文件是红色,右键->git->add添加到暂存区,然后再commit添加到本地库
版本切换
- 提交代码之后,左下角有个version control的log就是用来对commit的代码进行记录的
- 右键其中一个的checkout就能够切换成功,实际上就是head在改变
分支切换
- 右下角这个git:master,点击之后可以创建分支或者是切换分支
合并分支
- 还是右下角的git:master,点击hot-fix的merge into current
分支冲突
- 如果修改hot-fix同时修改master分支,那么就会出现分叉现象。这种分叉就是代码冲突
- 如果出现分叉那么就需要自己来手动把代码进行合并。
- 还是操作右下角的合并操作
idea登录gitee
- 安装插件,setting->version control->gitee->添加账户(邮箱和密码)
- 然后通过VCS->import into version control->share gitee把当前项目推送到远程库中
推送项目
- commit之后,可以通过vcs->git->push或者是右键项目->git->push
拉项目
- 还是跟上面的操作一样,如果发现本地库和远程库不同那么就git->pull拉取项目
clone项目
- 通过这样的方式来创建项目,然后把url填入就可以了
总结一下idea的git使用
- 版本控制左下角
- 分支控制右下角
- add和commit右键git或者vcs->git
- 最后就是pull和push的应用。
- 在提交到远程服务器的时候一定要确定自己的本地库是最新的,那么可以使用pull拉一下库
- 整个过程(多人协作)
- clone项目
- 常规开发
- 提交前先pull最新项目
- push项目过去
分支的原理
- 分支先更新了一步,但是master还在后面,但是可以通过merge把master同步过来。
参考学习原文链接:https://www.cnblogs.com/onelikeone/p/6857910.html
it或者vcs->git
- 最后就是pull和push的应用。
- 在提交到远程服务器的时候一定要确定自己的本地库是最新的,那么可以使用pull拉一下库
- 整个过程(多人协作)
- clone项目
- 常规开发
- 提交前先pull最新项目
- push项目过去
分支的原理
- 分支先更新了一步,但是master还在后面,但是可以通过merge把master同步过来。
参考学习原文链接:https://www.cnblogs.com/onelikeone/p/6857910.html
[外链图片转存中…(img-7Hm6Q5qg-1635417435219)]
[外链图片转存中…(img-n5jqjy7c-1635417435220)]
|