一、Git
1. Git概述
- 分布式版本控制系统
- 记录修改历史记录,团队协作中的版本控制工具:
- 集中式版本控制工具(SVN、CVS等),单一集中管理服务器,客户端连接服务器,取出最新文件或更新;存在不利于每个客户端的管理管控,服务器单点故障等问题;
- 分布式版本控制工具(Git、Mercurial、Bazaar、Darcs等),本地多版本,推送到远程库,写代码前连接远程库克隆新版本,再基于自己本地库做版本控制,再推送到远程库;优点:断网也可以开发,每个客户端都是完整项目(包含历史记录),更安全;
2. 工作机制:
- 工作区:代码存放的磁盘目录位置;
- 暂存区:工作区的代码git add到暂存区,临时存储;
- 本地库:暂存区代码git commit提交到本地库,有历史版本;(慎重提交)
- 远程库:基于网络的Git远程代码仓库,从本地库push推送到远程库;
- 局域网远程库:GitLab(公司代码不开源时,自己搭建GitLab服务器作为公司专用代码托管中心);
- 互联网远程库:GitHub(外网),Gitee码云(国内网站);
3. Git安装
4. Git常用命令
git config --global user.name <用户名> 设置用户名 git config --global user.email <邮箱> 设置用户邮箱
git config --list或git config -l 查看已经配置的信息
git init 初始化本地库
git status 查看本地库状态
git add <文件> 工作区内容添加到暂存区
git rm --cached <文件> 取消暂存,删除暂存区文件
git commit -m “日志信息” <文件> 提交到本地库
修改文件 —> add到暂存区 —> commit到本地库 注:git对于已存在行修改的操作是删除行再增加行;
- git reflog 查看引用日志信息(版本号前七位)
- git log 查看详细日志,含完整版本号和各版本提交信息(提交者、邮箱)
- git log --pretty=oneline 以更直观的形式进行打印
- git reset --hard <版本号> 版本穿梭
- git reset --hard HEAD^ 回退到当前版本的上一个版本
- git reset --hard HEAD~n 回退n个版本
5. Git分支操作
6. Git团队协作
-
团队内协作 -
跨团队协作
二、GitHub
GitHub官网:https://github.com
1. 创建远程库
GitHub官网登陆状态下点击 new repository 注:一般远程库和本地库起同样的名字
2. 远程库操作
-
创建远程库别名
git remote -v 查看本地当前所有远程库地址别名
git remote add <别名> <远程地址> 注:一般别名和库名保持一致,减少歧义 执行后创建了fetch和push两个别名
-
推送Push本地分支到远程库
git push -u <别名/链接> <分支名> 注:Push的最小单位是分支,所以必须指定分支名
- 如果使用的remote是远程库的Https链接,需要输入用户名和密码
新版本不能使用账号-密码,只能使用账户-Token方式 Token申请:头像 ?? Settings ?? Developer Setttings ?? Personal access tokens ?? Generate new Token ?? 输入名字、选择权限、生成 ?? 记录Token(只显示一次,切记本地备份) - 输入GitHub账号
- 输入Token
-
拉取Pull远程库内容
git pull <别名/链接> <分支名>将指定远程仓库的指定分支更新同步到本地当前所在分支 注:比如你在仓库中新建了一个分支,就需要先pull到本地
-
克隆clone远程库到本地
git clone <别名/链接> 将指定远程库项目克隆一份(含所有信息)到自己当前本地库中
-
pull和clone区别:
- git clone是在本地没有版本库时,将远程库整个下载到本地,子操作为:拉取代码、初始化本地库(clone过来的文件含有.git)、创建别名(自动remote add给克隆项目链接创建了别名origin);
- git pull是在本地有版本库时,从远程库中获取最新版本数据,合并到本地,相当于git fetch加git merge;
- git clone开源远程库时,不需要钥匙;
-
邀请加入团队
3. 跨团队协作
协作者:
- 在别人的项目GitHub页面fork一份到自己的远程库中:
Fork ?? 起Repository name ?? Create fork - 从自己远程库clone一份到自己的本地库中:
git clone ?? 修改 ?? 提交暂存区、本地库 ?? push到自己远程库 - 或者直接GitHub页面修改提交
- 发起Pull request:
在自己远程库GitHub页面Pull requests ?? New pull request ?? 发送commit信息、comment ?? Create pull request
项目发起方:
- 查看拉取请求:
Pull requests ?? 选择拉取请求查看; - 查看comment和修改内容;
- conversation交流
- 合并对方代码到自己远程库中:
Merge pull request ?? Confirm merge
4. SSH免密登录
ssh-keygen -t rsa -C “自己的邮箱地址” 注:会在.ssh目录下生成id_rsa私钥文件和id_rsa.pub公钥文件
- 将公匙文件内容SSH Key保存到GitHub账号中
GitHub ?? 头像 ?? Setting ?? SSH and GPG keys ?? new SSH key ?? title起名 ?? 粘贴id_rsa.pub公匙 ?? Add SSH key
- 测试SSH连接:ssh -T git@github.com
- push或pull时使用SSH链接操作;
三、Idea集成GitHub
1. 配置Git忽略文件
目的:忽略不参与服务器部署运行的与项目实际功能无关的文件; 方式:
-
创建忽略规则文件xxx.ignore(一般git.ignore) *.class、*.log、*.jar、*.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
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
>hs_err_pid*
>replay_pid*
>```
-
让~/.gitconfig文件引用.ignore忽略文件 [core]
excludesfile=/Users/USER/git.ignore
2. 创建项目本地库
Idea项目中VCS工具栏 ?? Create Git Repository创建Git仓库
3. Idea 集成 Git
4. Idea 集成 GitHub
- Setting ?? Version Control ?? GitHub
-
?? Log In via GitHub… 跳转浏览器登录GitHub授权 ?? Log In with Token… 输入在账号中申请的Token 注:两种方式皆可
-
Share项目到GitHub
Git ?? GitHub ?? Share Preoject in GitHub ?? 输入远程库名、公开 / 私有、别名、通过哪个账号分享 注:这个操作相当于手动在GitHub里Create了远程库,并将项目Push到了远程库
-
推送Push本地分支到远程库
- 项目右键 ?? Git ?? Push
- Git工具栏 ?? Push
这里带下划线的远程仓库名处可以点击选择连接方式(默认使用Https链接),选择Define Remote增加别名来使用SSH链接; 另外,分支名为Push远程库中的目标分支,默认同名(GitHub中不存在则新建),可以点击修改来自定义: 注意:Push的版本比远程库中的低时会被拒绝,所以实际生产中成熟的做法是,在动手改本地代码之前,先检查远程库和本地库代码的区别,如果本地代码版本已经落后,要先Pull拉取远程代码更新本地代码到最新后,再写业务再提交和Push;
-
拉取Pull远程库内容
右键 ?? Git ?? Pull选择要拉取的别名链接 ?? 选取要拉取的分支 注意:Pull拉取远程库代码时,会包含Merge操作,所以会涉及合并冲突的场景,这时需要手动解决冲突才能拉取成功;
-
克隆clone远程库到本地
- 在打开Idea时,在初始化页面选择Get from VCS
- 在URL栏输入远程库的HTTPS🔗或SSH🔗
- 或者直接从绑定GitHub账号下选择远程库进行克隆;
- 克隆成功后,会将远程库的代码包括分支、版本信息、日志信息都拉取过来,并且创建本地库,和自动起别名;
四、Gitee码云
必要性:
GitHub服务器在国外,🧱对国内用户不友好,Gitee码云服务器在国内,是开源中国基于GitHub推出的Git代码托管中心,使用方式和GitHub几乎一样,无🧱,操作更快更稳定,而且是中文版;
码云官网:https://gitee.com
1. 码云创建远程库
Gitee官网登陆状态下点击 + ?? 新建仓库 注:其他步骤和GitHub一样,参见上一章注:截止目前最新的gitee不能直接创建公开的仓库了,必须在创建仓库后通过「仓库设置」修改为公开;
2. Idea集成Gitee码云
- Idea的Plugins中安装Gitee插件
- 设置Gitee账号
Setting ?? Version Control ?? Gitee ?? + Log In
?? Log In via Gitee… 使用邮箱-密码登陆Gitee ?? Log In with Token… 输入在Gitee账号中申请的Token 注:两种方式皆可
-
Share项目到Gitee(参考GitHub) -
推送Push本地分支到Gitee远程库
- Push ?? 选择Define Remote 增加别名来使用码云的Https或SSH链接进行Push;
-
拉取Pull远程库内容(参考GitHub) -
克隆clone远程库到本地(参考GitHub)
3. 码云连接GitHub进行代码复制和迁移
特色功能:导入GitHub的项目到Gitee实现迁移;
- 新建仓库时选择导入:
- URL处输入GitHub项目的HTTPS链接,即可导入:
- 优点:克服了GitHub网络原因可能导致的无法访问使用的问题,同时还可以便捷地强制更新Gitee上导入的GitHub项目,让它和GitHub保持同步;
|