Git学习笔记
Git学习笔记
学习视频出处:【尚硅谷】5h打通Git全套教程IDEA版(涵盖GitHub\Gitee码云\GitLab)
一、本文内容介绍
1、Git
- Git介绍:分布式版本控制工具 & 集中式版本控制工具
- Git安装:2.33.1版本
- Git命令:基于开发案例,演示git常用命令
- Git分支:分支创建、分支特性、分支转换、分支合并、代码合并冲突解决
- Idea集成Git
2、Github
- 创建远程库
- 代码推送:Push
- 代码拉取:Pull
- 代码克隆:Clone
- SSH免密登录
- Idea集成Github
3、Gitee码云
- 码云创建远程库
- Idea集成Gitee码云
- 码云连接Github,进行代码的复制和迁移
二、Git介绍
1.Git是一个分布式版本控制系统
Git是一个免费的、开源的分布式版本控制系统,旨在以快速高效的方式处理从小型到大型的项目。
Git易于学习,占地面积小,性能极快。它超越了诸如Subversion、CVS、Perforce和ClearCase等版本控制工具,具有廉价的本地分支、方便的临时区域和多个工作流等功能。
Git官网:https://git-scm.com/
2.什么是版本控制
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制最重要的时可以记录文件内容修改的各个历史版本,从而让用户能够查看历史版本,方便版本切换。
就好比你反复修改毕业论文时,把每次修改前的那一版都保留一个副本。
3.为什么需要版本控制
因为需要从个人开发过渡到团队协作开发。
团队协作开发时,假设有一个版本为1.0的程序:

程序员A将程序从团队服务器下载到本地后,进行修改,然后提交为2.0版本:

但在程序员A修改程序期间,程序员B也对1.0版本的程序进行了修改,在程序员A提交后,程序员B也提交了2.0版本。那么就会将程序员A写的代码覆盖掉。

为了将程序员A和程序员B写的代码合并,需要版本控制

4.版本控制工具
4.1集中式版本控制工具
常见的集中式版本控制工具有:CVS、SVN(Subversion)、VSS等。
集中化的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本。而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。

这种做法带来了许多好处。所有人改的都是同一套代码,可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。
但这么做显而易见的缺点是中央服务器的单点故障:
- 如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
- 如果服务器遭受攻击,文件缺失,若没有备份就很难对文件进行恢复。
4.2分布式版本控制工具
常见的分布式版本管理控制工具有:Git、Mercurial、Bazaar、Darcs等
像这种分布式版本控制工具,客户端每次从远程库里提取的不是最新版本的文件快照,而是整个代码仓库。
把代码仓库整个克隆到本地库,将代码进行修改后,先提交到本地库进行版本控制,再将本地库文件推送到远程仓库。
如此,客户端的每一次文件提取操作,实际上都是一次对整个代码仓库的完整备份。

分布式版本控制系统解决了集中式版本控制系统的缺陷:
- 服务器断网的情况下也可以进行开发,因为版本控制是在本地进行的。
- 每个客户端保存的都是完整的代码仓库,包含历史版本记录,当服务器发生故障时可以对远程库进行恢复。
5.Git简史
6.Git工作机制
工作区:
- 就是我们写代码的地方,它不是指idea,idea只是开发工具,它指的是代码存放在本地磁盘的目录位置。
- 位于工作区的代码不会生成历史版本,可以随时删除或修改。
暂存区:
- 暂存区是一个临时存放代码的地方,我们在工作区写好代码后,需要将代码添加到暂存区,让Git追踪到我们写的代码。
- 位于暂存区的代码同样不会生成历史版本,可以随时删除或修改。
本地仓库:
- 一旦将暂存区的代码提交到本地仓库,就会生成对应的历史版本,而一旦生成历史版本,写过的代码就删不掉了。之后只能基于此版本进行修改。所以在提交代码到本地仓库前,一定要慎重考虑。
7.代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们将其简称为远程库。
互联网远程库:
- GitHub(外网)
- Gitee码云(国内网站)
局域网远程库:
- GitLab
三、Git安装
1.下载Git安装包
直接打开Git官网:https://git-scm.com/ 点击右下角的DownLoad for Windows即可下载最新版本。
如果嫌官网下载速度慢,可以用国内镜像下载:https://npm.taobao.org/mirrors/git-for-windows/
2.安装Git
选择非中文安装路径后,无脑下一步即可。

安装成功标志:右键菜单中出现Git GUI Here
(Git图形化终端)和Git Bash Here
(Git命令行终端)

一般我们使用Git Bash Here,打开命令行终端,查看Git版本:
git --version

可以用ctrl+滑轮调节字体大小

四、Git常用命令
命令 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户名 |
git config --global user.email 邮箱 | 设置用户邮箱 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加文件到暂存区 |
git commit -m "日志信息" 文件名 | 提交文件到本地库 |
git reflog | 查看精简历史版本记录 |
git flog | 查看详细历史版本记录 |
git reset --hard 版本号 | 版本穿梭 |
1.设置用户签名
1.1说明
签名的作用是区分不同操作者的身份。用户的签名信息在每一个版本的提交信息中都能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。
注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。
1.2命令
设置当前客户端的用户名:
git config --global user.name TSCCG
设置当前客户端的用户邮箱:
git config --global user.email 2387600954@qq.com
查看当前客户端的用户签名:
cat ~/.gitconfig

也可以在C:\Users\Admin
目录下查看.gitconfig
文件中存放的用户签名信息

2.初始化本地库
2.1说明
如果要将某个目录作为本地库供Git管理,需要先获取该目录的管理权,也就是初始化本地库。
2.2命令
git init
2.3演示
1.在D:\Source\Git-Space目录下新建一个文件夹 git-demo 作为让Git管理的项目文件,也就是本地库
2.进入git-demo目录,在该目录下打开Git命令行终端 Git Bash Here
3.执行初始化命令,让Git管理git-demo目录
注意:初始化生成的.git
目录是隐藏的
3.查看本地库状态
3.1命令
git status
3.2首次查看本地库状态(工作区没有任何文件)
3.3在工作区新建文件
在工作区,也就是git-demo目录下新建一个hello.txt文件,输入一些文字内容。
linux的vim命令:
- 新建文件:
vim <file>
- 复制行:命令模式下选中目标行,双击Y键复制,单击P键粘贴
- 删除行:命令模式下双击D键
- 查看文件内容:
cat <file>
3.4再次查看本地库状态
4.将工作区文件添加到暂存区
4.1命令
添加到暂存区:
git add <file>
4.2执行添加命令
4.3删除暂存区文件
从暂存区删除:
git rm --cached <file>
删除暂存区文件并不意味着把工作区的文件也删除了
5.将暂存区文件提交到本地库
一旦将暂存区的文件提交到本地库,就会生成对应的历史版本。
5.1命令
提交文件:
git commit -m "日志信息" <file>
其中,-m "日志信息"
指的是在提交时,写入一个描述当前版本的日志信息。如果在提交时没有写日志信息,也会自动打开一个文件框让你输入日志信息。
5.2执行提交命令
5.3查看本地库状态
提交暂存区文件到本地库后,生成了版本信息,故不再提示No commits yet
。
提交文件后,当前工作区没有未被追踪的文件,暂存区也没有可提交的文件,故提示:nothing to commit, working tree clean
6.修改文件
6.1修改已提交的文件内容
打开文件:
在第二行后面添加内容:
查看本地库状态
6.2将修改的文件从工作区添加到暂存区
6.3将修改的文件从暂存区提交到本地库
Git是按照“行”来维护文件的,执行修改操作时,是先将原来的行删除,再插入修改的行。
所以提示信息是:一行新增,一行删除。
7.历史版本
7.1查看历史版本信息
1.命令
查看精简历史版本信息
git reflog
查看详细历史版本信息
git log
2.执行查看精简历史版本信息命令
3.执行查看详细历史版本信息命令
7.2版本穿梭
将当前项目回退到某一个历史版本
1.命令
git reset --hard 版本号
2.执行版本穿梭
7.3版本穿梭原理
Git不会创建多个历史副本,本地库里始终只有一个项目文件

它会在内存里记录很多日志,很多版本信息,通过HEAD指针指向不同的版本来实现版本切换,如下图所示
版本穿梭前:
版本穿梭后:
五、Git分支操作
1.什么是分支
分支可以简单理解为整个项目的一个副本。
当主分支开发完毕,部署到线上服务器供用户使用后,我们为了在更新和维护时,不影响主分支的运行,可以创建一个主分支的副本分支,副本分支独立于主分支。在副本分支上开发好新功能并测试通过后,再将副本分支合并到主分支上。
我们在开发中经常同时开发多个分支:
如上图,master是项目的主分支。master开发好上线后,推出v1.0版本。
产品经理说要将用户界面更换为蓝色背景,我们就创建一个master的副本分支feature-blue,然后在feature-blue分支上进行操作。
在我们刚创建好feature-blue分支后,产品经理又说要添加一个豆递主小游戏,于是让另一波开发者再创建一个master的副本分支feature-game,在feature-game分支上进行开发。
此时,共有三条分支存在,master主分支供线上用户使用,feature-blue和feature-game分支并行开发新版本。
由于feature-blue分支开发难度较小,于是先一步开发完毕。合并到master v1.0上,推出v1.1版本。但是在用户使用时,出现了bug。于是马上创建一个基于master v1.1的hot-fix分支,进行修复。修复完毕后,合并hot-fix到master v1.1上,推出v1.2版本。
又过了一段时间,feature-game分支终于开发完毕了,要合并到主分支上。但由于feature-game分支是基于master v1.0创建的,而此时是master v1.2版本,会出现代码冲突,需要我们手动合并代码(后面会详细讲解)。由于本次更新变更较大,于是推出v2.0版本。
2.分支的好处
-
可以同时进行多个功能开发,提高开发效率。
-
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
3.分支的相关操作
命令 | 作用 |
---|---|
git branch -v | 查看分支 |
git branch 分支名 | 创建分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
3.1查看分支
1.命令
git branch -v
2.演示
目前只有一个master分支,指向d890297版本。
3.2创建分支
1.命令
git branch 分支名
2.演示
若要基于某个分支创建新分支,需要先切换到该分支上。
3.3切换分支
1.命令
git checkout 分支名
2.演示
分支底层使用的还是指针
3.4修改分支
1.修改文件内容
我们站在hot-fix分支上对文件内容进行修改
2.添加并提交
3.5合并分支
1.说明
将指定分支合并到当前分支。
2.命令
git merge 分支名
3.演示
3.6代码冲突
1、产生冲突的情况
合并分支时,如果两个分支在同一个文件的同一个位置有两套不同的修改,Git就无法替我们决定使用哪个,就会产生冲突。必须人为决定新代码内容。
2、演示冲突
1)分别在master分支和hot-fix分支上对hello.txt文件进行修改
master分支
在hello.txt倒数第二行添加:master test

添加并提交

hot-fix分支
切换到hot-fix分支,在hello.txt倒数第一行添加:hot-fix test

添加并提交

2)合并代码
发生冲突

3)查看状态
冲突产生的表现:后面的状态为MERGEING,合并中。

检测到有文件有两处分支修改
4)查看冲突文件

3、解决冲突
1)编辑有冲突的文件,删除特殊符号,决定要保留的内容

2)添加手动合并后的文件到暂存区

3)提交到本地库
注意:执行git commit
命令时不能带文件名
演示带文件名的情况:
提交失败

不带文件名提交:
master分支成功合并hot-fix分支

六、Git团队协作机制
1.团队内协作
- 岳不群身为华山派掌门人,使用Git初始化了一个本地库,在里面开发了一套《华山剑法》。
- 为了让门派其他人都能学到此剑法,岳不群在代码托管中心(GitHub)创建了一个远程库,然后将这套剑法push(推送)到了代码托管中心。
- 令狐冲看到师傅在代码托管中心里推送的华山剑法,于是将整个远程库clone(克隆)到自己的本地库里,细细研读。
- 一段时间后,令狐冲已将华山剑法练至炉火纯青,有了一些独特的心得感悟。于是在本地库里对华山剑法进行改进,推出《华山剑法》2.0,然后将其push(推送)到远程库里去。(若想推送代码到远程库,必须先加入到团队中)
- 岳不群看到令狐冲推送到远程库的《华山剑法》2.0,感觉很nb。于是将其pull(拉取)到本地库,更新自己本地库的内容,勤加练习。
2.跨团队协作
- 岳不群为了加强自己的华山剑法,特意请大名鼎鼎的东方不败来做改进。而东方不败作为大佬,不屑于加入华山派的团队,只是看在令狐冲的面子上改一下。
- 东方不败作为团队外的人,在代码托管中心搜索到岳不群的华山剑法远程库后,将其fork(叉)到自己的远程库里。如此,东方不败的远程库里就有了完整的华山剑法。
- 东方不败将华山剑法clone(克隆)到本地库,将无敌的自宫之法写入其内,然后push(推送)到自己的远程库里。
- 为了将修改好的华山剑法交给岳不群,东方不败向岳不群发送Pull request(拉取请求),通知他可以拉取了。
- 岳不群看到东方不败发过来的拉取请求后,先对其进行审核。看到修改的内容后,岳不群大受震撼,立即将其merge(合并)到自己的远程库里。
- 岳不群和弟子令狐冲将远程库里由东方不败修改过的华山剑法pull(拉取)到本地库,对自己的本地库进行内容更新,然后急不可耐地苦练了起来。
七、GitHub操作
1.GitHub简介
众所周知,GitHub是全球最大的同性交友网站,技术宅男的天堂,新世界的大门。
GitHub是一个全球范围的代码托管中心,可以在上面创建远程仓库,将自己在本地仓库里的项目推送上去。
GitHub网址:https://github.com/
2.创建远程仓库
1、注册账号并登录后,在个人主页右上角点击加号,选择New repository

2、在打开的创建页面输入远程仓库名称等配置,然后点击创建

3、查看创建成功页面
生成的远程仓库地址:
- HTTPS:
https://github.com/tsccg/git-demo.git
- SSH:
git@github.com:tsccg/git-demo.git

3.远程仓库操作
命令 | 作用 |
---|---|
git remote -v | 查看当前所有远程仓库地址别名 |
git remote add 别名 远程仓库地址 | 给远程仓库地址起别名 |
git push 远程仓库地址别名 本地分支名 | 推送本地分支上的内容到远程仓库 |
git clone 远程仓库地址 | 将远程仓库的内容克隆到本地 |
git pull 远程仓库地址别名 远程仓库分支名 | 将本地分支对应远程仓库分支的最新内容拉取下来,与本地分支合并 |
3.1创建远程仓库地址别名
1.说明
远程仓库地址都太长了,不便于频繁推送和拉取。为此,我们可以给远程仓库起简短的别名,推送或拉取时用别名代替地址。
2.命令
查看当前所有远程仓库地址别名
git remote -v
给远程仓库地址起别名
git remote add 别名 远程仓库地址
3.演示
3.2推送本地分支到远程仓库
1.命令
git push 远程地址别名 本地分支名
2.演示
1)执行推送命令
若推送超时可多试几次。
2)授权Git访问GitHub账户

3)确认访问,需要输入密码

4)认证成功,可返回客户端。

5)推送成功

6)刷新GitHub网页,远程仓库中已存在hello.txt
3.3拉取远程库内容到本地库
1.命令
git pull 远程地址别名 远程库分支名
2.演示
1)修改远程库文件内容
点击hello.txt,在内容页面点击右侧的🖊,进入在线修改页面:
在末尾新添一行数据:
在页面下方执行提交:
提交成功,远程库文件内容已被修改:
2)拉取远程库最新内容到本地库
3.4克隆远程仓库到本地
1.说明
克隆操作会把远程库整个复制到本地,需要知道远程库地址,且不能用别名。
获取远程库地址:
克隆操作是不需要登录任何账号的,因为我们创建的是公共仓库,读权限是没有限制的,任何人都可以查看和克隆。
2.命令
git clone 远程库地址
3.演示
1)在本地创建一个文件夹,在其中打开Git命令终端,执行克隆命令
2)查看克隆结果
3)总结
clone命令所做操作:
- 拉取代码
- 初始化本地仓库
- 创建别名
3.5邀请加入团队
1.向合作者发送邀请
1)在远程库的Settings选项页中,选择左侧的Manage access,然后在右下方点击添加成员
2)在弹出的窗口搜索团队成员(名称或邮箱地址),发送邀请
3)将生成的邀请链接复制下来,通过QQ、微信等工具发送给该用户:
邀请链接:https://github.com/tsccg/git-demo/invitations
2.合作者同意邀请
1)合作者收到邀请者发送给他的邀请链接后,登录自己的GitHub账户,在浏览器地址栏输入邀请链接
2)在打开的页面同意邀请
3)加入团队后,即可向该远程库中push代码
5.跨团队协作
5.1大佬查找远程仓库
跨团队协作的大佬有两种方式找到我们的远程库
- 远程仓库地址
- 在GitHub上直接搜索tsccg/git-demo
一般我们直接把远程库地址发送给大佬,大佬直接在浏览器里输入地址即可找到我们的远程库
5.2大佬fork到自己的远程库中
大佬找到目标远程库后,点击右上角的Fork,把该远程库叉到自己的远程库里
5.3大佬在线修改后提交
大佬技术nb,直接在线修改好了代码,并提交
5.4大佬发起拉取请求
大佬改好代码后,为了将改好的代码交给我们的团队,发起Pull request,拉取请求
5.5团队审核修改内容
大佬发起Pull request后,我们团队的远程库就收到了请求
当然,我们要对其进行审核。
点开发送的pull request,我们可以查看修改的代码,并且可以进行实时聊天,与大佬友好交流技术
审核通过后,点击Merge pull request,输入合并提交的描述信息,将代码合并到团队的远程仓库
团队的远程库中,文件内容已更新
5.6团队成员拉取到本地库
6.SSH免密登录
6.1SSH地址
我们可以看到远程仓库中还有一个SSH的地址,也可以使用它来访问远程仓库。
与HTTPS地址不同的是,使用SSH地址推送代码时不需要再授权访问账号密码了。

使用SSH需要先添加公钥。
You don't have any public SSH keys in your GitHub account. You can add a new public key, or try cloning this repository via HTTPS.
您的GitHub帐户中没有任何公共SSH密钥。您可以添加新的公钥,或者尝试通过HTTPS克隆此存储库。
6.2添加SSH公钥
1.删除C:\Users\Admin
目录下的.ssh
目录文件
2.在此目录下打开Git命令终端,运行命令重新生成.ssh
秘钥目录
ssh-keygen -t rsa -C 邮箱地址
ssh-keygen
:生成SSH免密登录协议的公钥和私钥-t
:指定使用哪种加密算法来生成rsa
:非对称加密协议-C 邮箱地址
:表示生成的免密登录秘钥是专门针对此邮箱的
输入命令后,敲三次回车

重新查看,已生成.ssh
目录:
3.复制公钥
进入.ssh
目录,里面分别是私钥和公钥
在Git命令终端查看公钥内容,复制下来
4.登录GitHub,点击用户头像→Settings

→SSH and GPG keys→New SSH key
→然后输入公钥
5.出现如下画面即表示添加成功,以后当使用此电脑通过远程仓库的SSH地址连接此账户时,无需输入账号密码。
6.3通过SSH地址拉取和推送代码
1.在线修改远程库内容
2.使用SSH地址拉取远程库内容到本地库
执行命令后,输入yes

拉取成功

3.使用SSH地址推送本地库内容到远程库
1)修改并提交本地库文件内容
2)使用SSH地址推送到远程库
注意:这次在推送时不需要登录账号密码了
查看远程库,已推送成功
八、Idea集成Git
1.配置Git忽略文件
1.1说明
Idea和Eclipse项目中,有很多文件与项目实际功能无关,不参与服务器上的部署运行。使用Git时把它们忽略掉能够屏蔽IDE工具之间的差异。
Idea:eclipse:
1.2配置忽略配置文件
1.创建忽略配置文件xxx.ignore
文件(前缀名自定义,建议为git.ignore)
此文件原则上放在任何位置都可以,但为了便于让~/.gitconfig
文件引用,建议放在用户家目录(C:\Users\Admin
)下。
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
文件中引用忽略配置文件(C:\Users\Admin\.gitconfig
)

.gitconfig
:
[http]
sslVerify = true
[user]
name = TSCCG
email = 2387600954@qq.com
[credential]
helper = manager
[core]
excludesfile = C:/Users/Admin/git.ignore
2.Idea定位Git
3.使用Idea初始化本地库
1.在Idea右上方工具栏选择VCS-->Import into Version Control-->Create Git Repository...
2.在打开的页面选择要创建Git本地库的工程

3.在将该工程初始化为Git本地库后,其中的文件名变为了红色,代表此文件位于工作区,需要添加到暂存区
4.使用Idea添加工作区文件到暂存区
1.右键点击项目选择Git -> Add将项目添加到暂存区
2.执行Add后,文件名变成了绿色,代表已添加到暂存区,被Git所追踪到
5.使用Idea提交暂存区文件到本地库
1.右键点击项目选择Git -> Commit Directory
2.在打开的提交页面输入提交的日志信息,点击Commit执行提交
3.提交成功后,文件名都变回了最初的黑色,代表无需提交
6.使用Idea切换历史版本
6.1修改文件内容,生成多个版本
1.第一次修改:
文件内容被修改后,文件名会变为蓝色
2.第二次修改:(可跳过add,直接commit)
如此,就生成了三个历史版本
6.2查看历史版本
在Idea左下方工具栏选择Git,然后选择Log,即可查看所有历史版本
其中,黄色标签代表HEAD指针,绿色标签代表分支指针。两个指针指明了当前位于哪个分支,哪个版本。
6.3切换历史版本
选中要切换的版本,点击右键,然后选择Checkout Revision
切换成功:
7.Idea操作分支
7.1打开操作分支页面
7.2创建分支
创建成功
7.3切换分支
重新打开操作分支页面,左键点击master-->Checkout,即可切换到master分支。

7.4合并分支
1.制造冲突
分别在master分支和hot-fix分支中修改代码并提交
1)master分支:
2)hot-fix分支:
2.合并分支
1)切换至master分支,将hot-fix分支合并
- 如果代码没有冲突,分支会直接合并成功,并且代码自动提交,无需手动提交到本地库。
- 如果有冲突,则需要手动合并。
2)发生冲突,在弹出的页面点击Merge,进入手动合并界面
手动合并界面:
3)手动合并代码:
合并后会自动提交代码
4)查看版本变化:
九、Idea集成GitHub
1.Idea设置GitHub账号
1.1账号密码登录
打开Settings页面,找到GitHub(如果没有可以在Plugins下载GitHub插件),点击右上角加号,添加GitHub账号。
当然,由于GitHub是国外网站,故使用账号密码极难登录成功。为此,我们可以使用口令登录,点击登录框右上角的Use Token。
1.2口令登录
1.使用口令登录需要先获取GitHub口令

2.登录GitHub账号,在右上角点击头像,选择Settings

3.找到Developer settings并点击
4.选择Personal access tokens---->Generate new token,生成新口令
5.输入密码

6.配置口令
7.复制生成的口令
8.将口令输入Idea口令登录框,然后点击登录
9.登录成功
2.分享项目到GitHub账号
使用Idea可以将本地项目分享到GitHub账号,并且自动创建远程仓库
1.在Idea中的打开项目-->VCS-->Import into...-->Share Project on GitHub
2.配置远程库
3.分享成功
账号中已创建远程库
查看代码内容
3.push推送本地库内容到远程库
注意:push是将本地库代码推送到远程库,如果本地库代码比远程库代码版本落后,push的操作是会被拒绝的。也就是说,要想push成功,一定要保证本地库的版本要比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先pull拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!
3.1修改本地库代码并提交
3.2打开Push推送界面
有两种方式打开推送界面:
1.方式1:选择项目-->右键-->Git-->Repository-->Push
2.方式2:VCS-->Git-->Push
3.3执行推送
1.使用HTTPS地址
打开Push推送界面后,默认使用HTTPS地址的别名

但使用HTTPS地址对网络要求较高,所以我们推荐使用SSH地址。
2.使用SSH地址
1)新建SSH地址别名
2)使用SSH地址别名执行推送
3.4查看远程库
远程库内容已更新
4.pull拉取远程库内容到本地库
注意:pull是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。
4.1在线修改远程库代码并提交
1.修改代码
2.提交
4.2使用Idea拉取远程库内容到本地库
1.打开pull拉取界面
VCS-->Git-->pull
2.选择SSH地址拉取


4.3拉取成功
5.clone克隆远程库到本地
5.1删除本地项目
既然已经将项目push到远程库了,那么即使将本地项目删除,也可以通过克隆来恢复。
删除本地项目:
5.2打开克隆界面
有两种方式:
1.打开Idea-->VCS-->Git-->Clone
2.在Idea开始界面选择Get from Version Control

5.3输入远程仓库地址
在克隆界面输入远程仓库的地址,并选择本地目录作为项目的本地仓库

5.4克隆成功
十、国内代码托管中心-Gitee码云
1.Gitee码云简介
众所周知,GitHub 服务器在国外,使用GitHub 作为项目托管网站,如果网速不好的话,严重影响使用体验,甚至会出现登录不上的情况。针对这个情况,大家也可以使用国内的项目托管网站-码云。
码云是开源中国推出的基于Git 的代码托管服务中心,使用方式跟GitHub 一样,而且它还是一个中文网站,如果你英文不是很好它是最好的选择。
Gitee网址:https://gitee.com/
2.Gitee创建远程库
1.点击右上角加号-->新建仓库

2.配置仓库信息,同GitHub
3.获取远程库HTTPS和SSH地址
3.Idea集成Gitee码云
3.1下载Gitee插件
Idea默认不带码云插件,所以我们需要手动在插件市场下载Gitee插件
Idea 重启以后在Settings的Version Control 设置里面看到Gitee,说明码云插件安装成功
3.2Idea连接Gitee
在码云插件里面添加码云帐号,我们就可以用Idea连接码云了。(码云是国内的,网络要求低,不需要使用口令登录)
出现下图即代表连接成功
3.3分享项目到Gitee
同GitHub,我们也可以将项目分享到Gitee账户上
配置远程库

分享成功
3.4push本地库内容到Gitee远程库
1.修改本地库内容并提交
2.push到Gitee远程库
3.push成功
对Gitee码云远程库进行 pull 和 clone 的操作和 Github 一致,此处不再演示。
4.将GitHub仓库迁移到Gitee
码云提供了直接复制GitHub 项目的功能,方便我们做项目的迁移和下载。
1.进入新建仓库界面

2.选择右上角导入,进入导入界面

3.有三种导入方式
- 从URL
- 从GitHub账户
- 从GitLab账户
我们选择第一种

4.复制GitHub远程库HTTPS地址
5.输入Gitee导入界面,执行导入
6.导入成功