前言
- 免费、开源分布式版本控制系统
- 快速高效处理从小型到大型的各种项目
- 易于学习,占地面积小,性能极快
==优缺点:==
深究其分布式版本
其集中式版本控制工具有缺点也有优点,可看到项目中内容管理,管理员也可管理单一系统也比较容易缺点就是中央服务器的单点故障
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
- 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
- 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
==工作机制==
工作区:通过写好的代码,放在了磁盘区,不是特指编译器中的代码
临时存储:通过工作区git add
放到此处
本地库:通过临时存储的git commit
放到此处
远程库:通过本地库上传到远程库,代码托管中心是基于网络服务器的远程代码仓库
1. Git安装
具体如何安装可查看我这篇文章
Git的安装配置超详细版本(全)
2. Git常用命令
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m "日志信息" 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
下载他人的项目通过git clone 即可
有时候在github下的文件有点卡
需要进行端口配置(查看本机系统的配置)
之后window输入
set http_proxy=http://127.0.0.1:7890
set https_proxy=http://127.0.0.1:7890
如果是linux,set改成export
如果上传到自已的github上,直接跟着官网走就可
工作中常用的命令:
命令 | 参数 |
---|---|
git diff | 查看代码有无修改 |
git branch xx | 创建分支 |
git branch -d xx | 删除分支 |
git checkout xx | 切换分支 |
git stash | 放弃修改 |
git fetch | 远程创建了分支,本地要用这个才看得到有什么分支 |
2.1 设置用户签名
通过使用如上的命令
截图如下
签名的作用是区分不同操作者身份,以此确认本次提交是谁做的
==这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系==
2.2 初始化本地库
通过使用命令git init
初始化之后会生成一个隐藏文件
2.3 查看本地库状态
通过git status
首次查看与有文件提交时不一样的
首次查看
新增文件之后再次查看是不一样的状态
通过书写一个txt文件
此处的文件还是红色的
说明是还没提交到缓存区
如果提交到缓存区就会变成蓝色
2.4 添加缓存区
通过git add 文件名
具体命令大致如下
如果要删除文件,通过rm进行删除
但是删除的只是缓存区
通过ll还可查看到存在
而且通过查看其状态的时候git status
发现为红色
还需要将其添加为添加到缓存区中
2.5 提交本地库
通过git commit -m "日志信息" 文件名
通过其git status也可看出其不同
而且查看日志也可看出版本更新
最后的截图如下
2.6 修改文件
修改文件之后,再次查看其状态
会检测到其文件已经被修改
之后再将其上传到缓存中
2.7 历史版本
git reflog
查看版本信息git log
查看版本详细信息
2.7.1 版本穿梭
本身默认查看使用cat 的时候,是最新版本
如果要穿梭到之前的版本,则需要通过 git reset --hard 版本号
其日志的版本号,简易复杂版本的号字段有些不同
之后查看cat只是显示之前的版本
查看其之前的版本
Git 切换版本,底层其实是移动的 HEAD 指针
3. Git分支操作
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行
==优点==
- 同时并行推进多个功能开发,提高开发效率
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可
==分支常用命令==
命令名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
查看分支可以通过git branch -v
*表示当前的分支路径
创建分支git branch 分支名
切换分支git checkout 分支名
如果再同一个部位修改数据
使用git merge 分支名
新数据会直接进行覆盖旧数据
如果是不同部位进行修改,系统无法判断哪一个数据才是真的
必须人为进行修改数据
之后再提交到缓存区
再提交到本地库(本地库不能带文件名,不然有歧义识别不出来哪一个)
使用命令 git commit -m "merge ss"
(不用文件名)
==具体创建分支的原理是==
当前所在的分支,其实是由 HEAD 决定的。所以创建分支的本质就是多创建一个指针
4. GitHub 操作
- 创建远程仓库
- 输入仓库名
==远程仓库命令==
命令名称 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push 别名 分支 | 推送本地分支上的内容到远程仓库 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
起好别名之后
可以通过别名上传文件
==团队内合作==
可以通过github内中的设置有个manger access进行邀请账户
之后受邀人通过复制该链接进行同意即可
受邀人克隆clone代码之后编辑在上传可以实现更改代码的模型
==跨团队合作==
通过代码的fork变成自已的,之后修改之后通过pull request请求发送
如果成功就会变成是你修改的
==ssh免密登录==
在这个目录下
有ssh的公钥密钥文件
先删除该文件 rm -rvf .ssh
之后通过用户获取ssh的公钥密钥,在发送给其他人 ssh-keygen
这是协议
ssh-keygen -t rsa -C 用户
之后进入cd .ssh
内复制cat id_rsa.pub
该文件给其他人
其他人通过设置的
即可免密登录
5. IDEA 集成 Git
先设置一个忽视文件
与项目的实际功能无关,不参与服务器上部署运行
设置一个 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
在.gitconfig 文件中引用忽略配置文件
[user]
name = manong
email = yanjiuseng
[core]
excludesfile = C:/目录/git.ignore
==如何在idea中设置git的插件==
==创建一个本地库==
之后右键可以上传到缓存或者是本地库中
如果查看版本号可以通过idea左下角的log日志查看
点击 Version Control,然后点击 Log 查看版本
==创建切换分支==
选择 Git,在 Repository 里面,点击 Branches
或者idea右下角的git branch
切换分支可以通过点击idea右下角的git branch中的check out
==合并分支并且解决冲突==
合并分支 同理也是idea右下角的git branch中的merge into current