1、git概念、原理理解
1.1、版本控制分类
1.2、Git定义
Git是一个分布式版本控制器,所有版本信息仓库都会被同步到每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。
1.3、Git配置文件
1、Git\etc\gitconfig :Git 安装目录下的 gitconfig --system 系统级(默认配置)
2、C:\Users\Administrator\ .gitconfig 只适用于当前登录用户的配置 --global 全局(手动配置)
查看配置命令:git config -l
#查看系统configgit config --system --list
#查看当前用户(global)配置git config --global --list
1.4、设置用户名和邮箱
每次git提交都会使用到该消息。
git config --global user.name zdh2018 #账号
git config -global user.email dhzhang2020@163.com # 邮箱
如果你希望在一个特定的项目中使用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要–global选项。总之–global为全局配置,不加为某个项目的特定配置。
1.5、Git中区域的划分
Directory是Git中一个仓库,也即一个项目。分为:
- workspace(工作空间):进行版本控制存储的目录文件
- git:存放git管理信息
- Index、Stage:暂存区,在提交到Repo之前会把更新放在暂存区(待提交更新区),一个文件,包含了即将提交的更改信息。
- Local Repo,存放本地版本库,包含提交的所有版本的数据
git管理文件三种状态:
- 已修改(对workspace操作还没放到Stage区域)
- 已暂存(staged)
- 已提交(committed)
1.6、Git忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
- 忽略文件中的空行或以井号(#)开始的行将会被忽略。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的文件,不包括/temp/ted
build/ #忽略目录下build子目录
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
1.7、什么是origin、master、dev
一个代码库(repository)对应着一个项目,我们可以将项目托管到Gitee服务器,默认情况下,origin会指向本地代码库托管在Gitee上的版本
这里的url就是origin指向的远程托管仓库代码库。
这里的url可以通过指令git remote add origin git@github.com:imki911/myProject.git 修改。
clone的是哪个代码库,origin默认就会指向哪个代码库。
查看代码库具体分支信息:git remote -v
master是主分支,一般用于最终版本的合并提交
dev一般是工作空间
2、基于Gitee的Git操作
2.1、本地公钥&私钥
在git bash中运行指令:ssh-keygen -t rsa ,表明采用RSA加密协议。生成的一对公钥和私钥放在用户/.ssh目录下。
然后我们将公钥复制到Gitee
==添加完公钥之后可以实现Git无需登录直接提交。==否则,每次提交到远程仓库都需要重新输入账号密码。
2.2、在IDEA中集成Git
第一步:新建Git仓库:
第二步:将Git仓库clone到本地:
第三步:创建IDEA的Java项目,然后将git-learning克隆到本地的库ctrl+c全部复制到IDEA创建的Java目录下。
第四步:在IDEA中打开Java项目,可以git add ., git commit -m “”, git push -u origin master了。
2.3、如何删除Gitee仓库
3、进阶操作
3.1、Git分支
每个分支代表一个单独的开发流程,类似于平行世界。
#列出所有远程分支
git branch -r
#合并指定分支到当前分支
git merge [branch]
假设管理员在操作master分支,要将dev分支上的修改拼接到master分支上,这就要用到merge。
- 如果master和dev上都对同一个文件修改了怎么办?这时把master的修改部分merge pull到dev上,然后git status查看冲突部分,手动删除冲突部分。
#合并指定分支到当前分支 git merge [branch]
假设管理员在操作master分支,要将dev分支上的修改拼接到master分支上,这就要用到merge。
* 如果master和dev上都对同一个文件修改了怎么办?==这时把master的修改部分merge pull到dev上,然后git status查看冲突部分,手动删除冲突部分==。
|