git学习笔记[idea整合GitHub,Gitee](非常详细)

1.学习目标

git学习笔记[idea整合GitHub,Gitee](非常详细)_第1张图片

2.Git概述

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。 其性能优于 Subversion、 CVS、 Perforce 和 ClearCase 等版本控制工具。

Git官网:Git (git-scm.com)

1.版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第2张图片

1.为什么需要版本控制?

从个人开发过度到团队协作

git学习笔记[idea整合GitHub,Gitee](非常详细)_第3张图片

2.版本控制工具
集中式版本控制工具

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

这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统, 要远比在各个客户端上维护本地数据库来得轻松容易。

事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第4张图片

分布式版本控制工具

Git、 Mercurial、 Bazaar、 Darcs……

像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一 次文件提取操作,实际上都是一次对整个文件仓库的完整备份。

分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:

1.服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)

2.每个客户端保存的也都是整个完整的项目(包含历史记录, 更加安全)

2.工作机制和代码托管中心

工作机制

git学习笔记[idea整合GitHub,Gitee](非常详细)_第5张图片

代码托管中心

局域网

  • GitLab
    互联网
  • GitHub(外网)
  • Gitee 码云(国内网站)

3.Git安装

在官网下载git的安装包

git学习笔记[idea整合GitHub,Gitee](非常详细)_第6张图片

选择安装目录,next

git学习笔记[idea整合GitHub,Gitee](非常详细)_第7张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第8张图片

选择默认编辑器

git学习笔记[idea整合GitHub,Gitee](非常详细)_第9张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第10张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第11张图片

在这里插入图片描述

git学习笔记[idea整合GitHub,Gitee](非常详细)_第12张图片

总结:一路next

查看版本:安装成功

git学习笔记[idea整合GitHub,Gitee](非常详细)_第13张图片

4.Git常用命令

git学习笔记[idea整合GitHub,Gitee](非常详细)_第14张图片

说明:签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。 Git 首次安装必须设置一下用户签名,否则无法提交代码

注意: 这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。

01.设置用户签名

打开Git Bash

git学习笔记[idea整合GitHub,Gitee](非常详细)_第15张图片

验证:在当前用户目录下找到,打开
在这里插入图片描述

git学习笔记[idea整合GitHub,Gitee](非常详细)_第16张图片

无误,则用户签名设置完成

02.初始化本地库:git init

案例:新建一个文件夹,当前目录进入Bash命令界面

git学习笔记[idea整合GitHub,Gitee](非常详细)_第17张图片
git学习笔记[idea整合GitHub,Gitee](非常详细)_第18张图片

创建了一个名为.git非空隐藏文件夹

03.查看本地库状态:git status

git学习笔记[idea整合GitHub,Gitee](非常详细)_第19张图片

新增hello.txt
git学习笔记[idea整合GitHub,Gitee](非常详细)_第20张图片

查看工作区有hello.txt,但是没有提交到暂存区

04.添加暂存区:git add 文件名

git学习笔记[idea整合GitHub,Gitee](非常详细)_第21张图片

此时hello.txt已经提交在暂存区,git可以追踪到

05.提交本地库:git commit -m “日志信息” 文件名

git学习笔记[idea整合GitHub,Gitee](非常详细)_第22张图片

再次查看

git学习笔记[idea整合GitHub,Gitee](非常详细)_第23张图片

查看日志:

git log与git reflog区别

git log 命令可以显示所有提交过的版本信息,如果感觉太繁琐,可以加上参数 --pretty=oneline,只会显示版本号和提交时的备注信息。

git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)。例如,执行 git reset --hard HEAD~1,退回到上一个版本,用git log则是看不出来被删除的commitid,用git reflog则可以看到被删除的commitid,我们就可以买后悔药,恢复到被删除的那个版本

在这里插入图片描述

06.修改文件

修改hello.txt内容,git status会提示该文件修改过

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
//修改文件信息
$ vim hello.txt 

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git restore ..." to discard changes in working directory)
        modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
//添加到缓存区
$ git add hello.txt
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged ..." to unstage)
        modified:   hello.txt


erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
//第二次提交
$ git commit -m "second commit" hello.txt
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory
[master 1eb2fb2] second commit
 1 file changed, 1 insertion(+), 1 deletion(-)

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git log
commit 1eb2fb245fbf8d5a28d35fb1072b80befb67e4c2 (HEAD -> master)
Author: syb <[email protected]>
Date:   Fri Mar 18 11:22:18 2022 +0800

    second commit

commit 4c9e1f045b47f30f3e84c0a19ee4ac641762db9d
Author: syb <[email protected]>
Date:   Fri Mar 18 11:11:30 2022 +0800

    first commit

07.版本穿梭:git reset --hard 版本号

  • git reset --hard 版本号
# 首先查看当前的历史记录
abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ git reflog
41f776b (HEAD -> master) HEAD@{0}: commit: third commit
6967bf0 HEAD@{1}: commit: second commit
b0006bc HEAD@{2}: commit (initial): first commit

# 切换到 b0006bc 版本,也就是第一次提交的版本
abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ git reset --hard b0006bc
HEAD is now at b0006bc first commit

# 切换完毕之后再查看历史记录,当前成功切换到了 b0006bc 版本
abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ git reflog
b0006bc (HEAD -> master) HEAD@{0}: reset: moving to b0006bc
41f776b HEAD@{1}: commit: third commit
6967bf0 HEAD@{2}: commit: second commit
b0006bc (HEAD -> master) HEAD@{3}: commit (initial): first commit

# 然后查看文件 hello.txt,发现文件内容回到第一版本
abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ cat hello.txt
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!

当你在切换版本后,再更改文本内容提交:

abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ vim hello.txt

abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git restore ..." to discard changes in working directory)
        modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ git add hello.txt

abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ git commit -m "forth commit"
[master 5f8dbf6] forth commit
 1 file changed, 1 insertion(+), 1 deletion(-)

abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ git reflog
5f8dbf6 (HEAD -> master) HEAD@{0}: commit: forth commit
b0006bc HEAD@{1}: reset: moving to b0006bc
41f776b HEAD@{2}: commit: third commit
6967bf0 HEAD@{3}: commit: second commit
b0006bc HEAD@{4}: commit (initial): first commit

再次切换到第一版本:

abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ git reset --hard b0006bc
HEAD is now at b0006bc first commit

abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ git reflog
b0006bc (HEAD -> master) HEAD@{0}: reset: moving to b0006bc
5f8dbf6 HEAD@{1}: commit: forth commit
b0006bc (HEAD -> master) HEAD@{2}: reset: moving to b0006bc
41f776b HEAD@{3}: commit: third commit
6967bf0 HEAD@{4}: commit: second commit
b0006bc (HEAD -> master) HEAD@{5}: commit (initial): first commit

abc@DESKTOP-R85C9HV MINGW64 ~/Desktop/HelloGit (master)
$ cat hello.txt
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!
hello, git!

Git 切换版本, 底层其实是移动的 HEAD 指针。

08.分支

git学习笔记[idea整合GitHub,Gitee](非常详细)_第24张图片

什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来, 开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
git学习笔记[idea整合GitHub,Gitee](非常详细)_第25张图片

分支的好处

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

分支操作命令

git学习笔记[idea整合GitHub,Gitee](非常详细)_第26张图片

1.查看分支:git branch -v
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git branch -v
* master 1eb2fb2 second commit

2.创建分支:git branch 分支名
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
#创建hot+-fix分支
$  git branch hot-fix

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
#再次查看分支可以看到之前创建的hot-fix分支
$ git branch -v
  hot-fix 1eb2fb2 second commit
* master  1eb2fb2 second commit

刚创建的新的分支,并将主分支master的内容复制了一份

3.切换分支:git checkout 分支名
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
#切换hot-fix分支
$ git checkout hot-fix
Switched to branch 'hot-fix'

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
#查看分支
$ git branch -v
* hot-fix 1eb2fb2 second commit
  master  1eb2fb2 second commit

切换分支后,在新分支修改文件:

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ vim hello.txt

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ cat hello.txt
hello Git!22222
hot fix
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git status
On branch hot-fix
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git restore ..." to discard changes in working directory)
        modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git add hello.txt
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git commit -m "hot-fix first commmit"
[hot-fix 38e0799] hot-fix first commmit
 1 file changed, 2 insertions(+), 1 deletion(-)

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git reflog
38e0799 (HEAD -> hot-fix) HEAD@{0}: commit: hot-fix first commmit
1eb2fb2 (master) HEAD@{1}: checkout: moving from master to hot-fix
1eb2fb2 (master) HEAD@{2}: reset: moving to 1eb2fb2
1eb2fb2 (master) HEAD@{3}: reset: moving to 1eb2fb2
1eb2fb2 (master) HEAD@{4}: commit: second commit
4c9e1f0 HEAD@{5}: commit (initial): first commit

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git log
commit 38e07995526da81a660c2711765d9102494a327b (HEAD -> hot-fix)
Author: syb <[email protected]>
Date:   Fri Mar 18 14:15:46 2022 +0800

    hot-fix first commmit

commit 1eb2fb245fbf8d5a28d35fb1072b80befb67e4c2 (master)
Author: syb <[email protected]>
Date:   Fri Mar 18 11:22:18 2022 +0800

    second commit

commit 4c9e1f045b47f30f3e84c0a19ee4ac641762db9d
Author: syb <[email protected]>
Date:   Fri Mar 18 11:11:30 2022 +0800

    first commit

4.合并分支(正常合并):git merge 分支名

在 master 分支上合并 hot-fix 分支(将hot-fix的合并到master)。

# 首先要切换到master分支上
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git checkout master
Switched to branch 'master'

#将hot-fix的合并到master
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git merge hot-fix
Updating 1eb2fb2..38e0799
Fast-forward
 hello.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

#合并后,可以在master分支上看到hot-fix上分支对文件的修改
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ cat hello.txt
hello Git!22222
hot fix
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!

#合并后,hot-fix分支依然存在,并未消失
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git branch -v
  hot-fix 38e0799 hot-fix first commmit
* master  38e0799 hot-fix first commmit

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git branch hot-fix
fatal: a branch named 'hot-fix' already exists

5.冲突合并:

冲突产生的原因

并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。 Git 无法替我们决定使用哪一个,因此,必须人为决定新代码内容。

产生冲突

首先,在master修改文件hello.txt最后修改内容,并提交:

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ vim hello.txt

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ cat hello.txt
hello Git!22222
hot fix
master test
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!

提交至本地库区:

#提交至暂存区
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git add hello.txt

#提交至本地库
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git commit -m "master test" hello.txt
[master 3288538] master test
 1 file changed, 1 insertion(+)

然后,在hot-fix修改文件hello.txt最后一行内容,并提交:

#切换至hot-fix
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ vim hello.txt

#查看修改
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ cat hello.txt
hello Git!22222
hot fix
hot fix test
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!

#提交暂存区
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git add hello.txt


#提交本地库
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git commit -m "hot fix test" hello.txt
[hot-fix 0dad068] hot fix test
 1 file changed, 1 insertion(+)

切换到master分支,然后将hot-fix分支的合并到master,冲突产生:

#切换分支
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git checkout master
Switched to branch 'master'

#冲突产生 代码合并失败
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git merge hot-fix
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.

# MERGING 出现,表示有冲突待解决
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master|MERGING)
$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add ..." to mark resolution)
        both modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

#查看 <<<当前分支的代码===     ===要合并的代码>>>
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master|MERGING)
$ cat hello.txt
hello Git!22222
hot fix
<<<<<<< HEAD
master test
=======
hot fix test
>>>>>>> hot-fix
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!

解决冲突

编辑有冲突的文件,删除特殊符号,决定要使用的内容

<<<<<<< HEAD
当前分支的代码 
======= 
合并过来的代码 
>>>>>>> hot-fix
#选择要和合并的代码
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master|MERGING)
$ vim hello.txt

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master|MERGING)
$ cat hello.txt
hello Git!22222
hot fix
master test
hot fix test
hot-fix
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!

#提交后才能合并成功
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master|MERGING)
$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add ..." to mark resolution)
        both modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

#提交暂存区
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master|MERGING)
$ git add hello.txt

#提交本地库 注意此时不能带文件名 否则会爆错
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master|MERGING)
$ git commit -m "meger test"
[master 1572ab3] meger test

#查看是否提交成功
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ cat hello.txt
hello Git!22222
hot fix
master test
hot fix test
hot-fix
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!

此时只会修改master 的内容 不会修改hot-fix的内容

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git checkout hot-fix
Switched to branch 'hot-fix'

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ cat hello.txt
hello Git!22222
hot fix
hot fix test
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!

git学习笔记[idea整合GitHub,Gitee](非常详细)_第27张图片

5.Git团队协作机制

团队内协作

git学习笔记[idea整合GitHub,Gitee](非常详细)_第28张图片

跨团队协作

git学习笔记[idea整合GitHub,Gitee](非常详细)_第29张图片

6.GitHub操作

官网:GitHub: Where the world builds software · GitHub

创建远程仓库

1.登录:

git学习笔记[idea整合GitHub,Gitee](非常详细)_第30张图片

登陆后点击右上角+号,选择new respository创建远程库

git学习笔记[idea整合GitHub,Gitee](非常详细)_第31张图片

生成远程库链接

git学习笔记[idea整合GitHub,Gitee](非常详细)_第32张图片

远程仓库操作

命令名称 作用
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址 起别名
git push 别名 分支 推送本地分支上的内容到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支名 将远程仓库对于分支最新内容拉下来后与 当前本地分支直接合并

1.创建远程库别名:

  • git remote -v : 查看当前所有远程地址别名
  • git remote add 别名 远程地址 :起别名
#此时没有别名
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git remote -v

#创建别名
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git remote add gitdemo https://github.com/peacelovea/gitdemo.git

#创建别名成功
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git remote -v
gitdemo https://github.com/peacelovea/gitdemo.git (fetch)
gitdemo https://github.com/peacelovea/gitdemo.git (push)

2.推送本地库到远程仓库

基本语法:git push 别名 分支

将master分支推送到远程仓库:

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (hot-fix)
$ git checkout master
Switched to branch 'master'

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ cat hello.txt
hello Git!22222
hot fix
master test
hot fix test
hot-fix
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!

#网络可能失败
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git push gitdemo master
fatal: unable to access 'https://github.com/peacelovea/gitdemo.git/': Failed to connect to github.com port 443 after 21082 ms: Timed out

弹出github登录框

git学习笔记[idea整合GitHub,Gitee](非常详细)_第33张图片

我这里选择第二个使用code登录

输入完code后

git学习笔记[idea整合GitHub,Gitee](非常详细)_第34张图片

推送成功

git学习笔记[idea整合GitHub,Gitee](非常详细)_第35张图片

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git push gitdemo master
Enumerating objects: 18, done.
Counting objects: 100% (18/18), done.
Delta compression using up to 8 threads
Compressing objects: 100% (12/12), done.
Writing objects: 100% (18/18), 1.35 KiB | 275.00 KiB/s, done.
Total 18 (delta 5), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (5/5), done.
To https://github.com/peacelovea/gitdemo.git
 * [new branch]      master -> master

刷新github后,可以在远程库看到本地库的代码

git学习笔记[idea整合GitHub,Gitee](非常详细)_第36张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第37张图片

3.远程库拉取到本地库

基本语法:git pull 别名 分支

在Github(远程库)上修改hello.txt文件,并提交。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第38张图片

拉去代码到本地库:

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git pull gitdemo master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 690 bytes | 32.00 KiB/s, done.
From https://github.com/peacelovea/gitdemo
 * branch            master     -> FETCH_HEAD
   1572ab3..e61407f  master     -> gitdemo/master
Updating 1572ab3..e61407f
Fast-forward
 hello.txt | 1 +
 1 file changed, 1 insertion(+)

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git status
On branch master
nothing to commit, working tree clean

# 和Github代码一致
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ cat hello.txt
hello Git!22222
hot fix
master test
hot fix test
hot-fix
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
Edit from Github first commit

4.克隆远程库到本地

基本语法:git clone 远程地址

创建一个新文件夹

git学习笔记[idea整合GitHub,Gitee](非常详细)_第39张图片

在远程库获取地址URL
git学习笔记[idea整合GitHub,Gitee](非常详细)_第40张图片

注意:在gitClone目录打开Bash命令

git学习笔记[idea整合GitHub,Gitee](非常详细)_第41张图片

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitClone
$  git clone https://github.com/peacelovea/gitdemo.git
Cloning into 'gitdemo'...
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 21 (delta 6), reused 17 (delta 5), pack-reused 0
Receiving objects: 100% (21/21), done.
Resolving deltas: 100% (6/6), done.

#进入到gitdemo
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitClone
$ cd gitdemo

#查看别名 
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitClone/gitdemo (master)
$ git remote -v
origin  https://github.com/peacelovea/gitdemo.git (fetch)
origin  https://github.com/peacelovea/gitdemo.git (push)

克隆成功

git学习笔记[idea整合GitHub,Gitee](非常详细)_第42张图片

clone 会做如下操作:

  1. 拉取代码。
  2. 初始化本地仓库。
  3. 创建别名。

5.GitHub_团队内协作

一、选择邀请团队成员。(在仓库设置里操作)

git学习笔记[idea整合GitHub,Gitee](非常详细)_第43张图片

二、填入成员账号,将成员添加到仓库。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第44张图片

三、复制邀请函(链接)发送给成员 ,如:https://github.com/atguiguyueyue/git-shTest/invitations。

在这里插入图片描述

四、成员登陆账号在github,在浏览器复制链接,点击接受邀请。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第45张图片

五、成员邀请成功之后,可以在Github账号上看到将来共同开发远程仓库。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第46张图片

六、目标合作者可以修改内容并 push 到远程仓库。

# 编辑 clone 下来的文件
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/pro-linghuchong/git-shTest(master)
$ vim hello.txt
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/pro-linghuchong/git-shTest(master)
$ cat hello.txt
hello git! hello atguigu! 2222222222222
hello git! hello atguigu! 33333333333333
hello git! hello atguigu!
hello git! hello atguigu!
hello git! hello atguigu! 我是最帅的, 比岳不群还帅
hello git! hello atguigu!
hello git! hello atguigu!
hello git! hello atguigu!
hello git! hello atguigu!
hello git! hello atguigu!
hello git! hello atguigu!
hello git! hello atguigu!
hello git! hello atguigu!
hello git! hello atguigu!
hello git! hello atguigu! master test
hello git! hello atguigu! hot-fix test

# 将编辑好的文件添加到暂存区
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/pro-linghuchong/git-shTest(master)
$ git add hello.txt

# 将暂存区的文件上传到本地库
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/pro-linghuchong/git-shTest(master)
$ git commit -m "lhc commit" hello.txt
[master 5dabe6b] lhc commit
1 file changed, 1 insertion(+), 1 deletion(-)

# 将本地库的内容 push 到远程仓库
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/pro-linghuchong/git-shTest
(master)
$ git push origin master
Logon failed, use ctrl+c to cancel basic credential prompt.
Username for 'https://github.com': atguigulinghuchong
Counting objects: 3, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 309 bytes | 309.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/atguiguyueyue/git-shTest.git
7cb4d02..5dabe6b master -> master

七.回到发送合作邀请者的 GitHub 远程仓库中可以看到,最后一次是目标合作者提交的。

6.GitHub_跨团队协作

git学习笔记[idea整合GitHub,Gitee](非常详细)_第47张图片

一、将远程仓库的地址复制发给邀请跨团队协作的人,比如东方不败。

或者直接搜索项目名称

二、在东方不败的 GitHub 账号里的地址栏复制收到的链接,然后点击 网页右上方的Fork按钮,将项目叉到自己的本地仓库

在这里插入图片描述

叉成功后可以看到当前仓库信息。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第48张图片

三、东方不败就可以在线编辑叉取过来的文件。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第49张图片

四、编辑完毕后,填写描述信息并点击左下角绿色按钮提交。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第50张图片

五、接下来点击上方的 Pull 请求,并创建一个新的请求。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第51张图片

六、回到岳岳 GitHub 账号可以看到有一个 Pull request 请求。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第52张图片

进入到聊天室,可以讨论代码相关内容。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第53张图片

七、如果代码没有问题,可以点击 Merge pull reque 合并代码。
在这里插入图片描述

7.GitHub_SSH免密登录

远程仓库中还有一个 SSH 的地址,因此我们也可以使用 SSH 进行访问。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第54张图片

这里提示没有ssh密钥

先到用户的主页目录,删除.ssh文件夹(如果没有.ssh文件夹,忽略此步)

git学习笔记[idea整合GitHub,Gitee](非常详细)_第55张图片

打开Git Bash,运行命令ssh-keygen生成.ssh目录 敲三次回车:


erhang@DESKTOP-PNIJAHF MINGW64 ~
$ ssh-keygen -t rsa -C 903923381.com
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/erhang/.ssh/id_rsa):
Created directory '/c/Users/erhang/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/erhang/.ssh/id_rsa
Your public key has been saved in /c/Users/erhang/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:内容...
The key's randomart image is:
+---[RSA 3072]----+
|    ....E  .==   |
| .   o+++ . ...  |
|  o  oB=.+ .     |
|   o ++==o.      |
|    =.o*S..      |
| . B o+o..       |
|  * *o           |
| . o...          |
|   .++.          |
+----[SHA256]-----+


重新生成了.ssh目录
git学习笔记[idea整合GitHub,Gitee](非常详细)_第56张图片

查看公钥

erhang@DESKTOP-PNIJAHF MINGW64 ~
$ cd .ssh

erhang@DESKTOP-PNIJAHF MINGW64 ~/.ssh
$ cat id_rsa.pub
ssh-rsa .............

将生成的公钥添加至Github账号SSH设置

打开setting/SSH and GPG keys

git学习笔记[idea整合GitHub,Gitee](非常详细)_第57张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第58张图片

添加成功

git学习笔记[idea整合GitHub,Gitee](非常详细)_第59张图片

添加公钥后,可不用输入Github账号密码便可推送。

接下来通过SSH方式提交hello.txt。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第60张图片

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ cat hello.txt
hello Git!22222
hot fix
master test
hot fix test
hot-fix
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
hello Git!
Edit from Github first commit

#修改本地仓
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ vim hello.txt

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git add hello.txt

erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged ..." to unstage)
        modified:   hello.txt


erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git commit -m "ssh test"
[master 81efd31] ssh test
 1 file changed, 1 insertion(+)

# 通过SSH推送
erhang@DESKTOP-PNIJAHF MINGW64 /d/tool/Git/GitSpace/gitdemo (master)
$ git push [email protected]:peacelovea/gitdemo.git
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 270 bytes | 270.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:peacelovea/gitdemo.git
   e61407f..81efd31  master -> master

推送成功。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第61张图片

7.IDEA集成Git

环境准备

1.配置 Git 忽略文件

如:
git学习笔记[idea整合GitHub,Gitee](非常详细)_第62张图片

为什么忽略:

一般我们只希望保存pom文件和代码,这些文件与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异。例如,Maven工程根据src生成的target。

怎么忽略:

1.创建忽略文件XXXX.ignore(前缀名随便起,建议是git.ignore),这个文件的存放位置原则上哪里都可以,为了便于~/.gitconfig文件引用,建议也放在用户家目录下

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

git学习笔记[idea整合GitHub,Gitee](非常详细)_第63张图片

将文件模板复制到git.ignore后

在.gitconfig 文件中引用忽略配置文件(此文件也在 Windows 的家目录中)

git学习笔记[idea整合GitHub,Gitee](非常详细)_第64张图片

[user]
	name = syb
	email = [email protected]
[core]
	excludesfile = C:/Users/erhang/git.ignore

注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”

2.idea中定位Git程序

打开设置

git学习笔记[idea整合GitHub,Gitee](非常详细)_第65张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第66张图片

选中bin/git.exe

git学习笔记[idea整合GitHub,Gitee](非常详细)_第67张图片

点击右上角test,弹出git的版本,保存配置,定位成功
在这里插入图片描述

3.初始化Git

点击导航栏VCS,选择create git repository

git学习笔记[idea整合GitHub,Gitee](非常详细)_第68张图片

选中项目的根目录(默认就选中了),点击ok

git学习笔记[idea整合GitHub,Gitee](非常详细)_第69张图片

可以看到项目根目录出现了.git文件

在这里插入图片描述

同时项目颜色变成了红色(git红色表示文件未被追踪,即文件还没被添加到暂存区)

4.添加到暂存区

这里我创建一个名叫HelloGit的Maven工程。重复3的操作

创建一个HelloGit类,将其添加Git暂存区。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第70张图片

创建完类后idea会自动提醒是否添加暂存区。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第71张图片

点击add,该类变绿色(绿色说明添加到了暂存区,还没有添加到本地库)

git学习笔记[idea整合GitHub,Gitee](非常详细)_第72张图片

也可以右键单击文件,Git->add,手动添加

git学习笔记[idea整合GitHub,Gitee](非常详细)_第73张图片

也可以将这整个项目一次性add,右键单击文件根目录,手动add

5.提交本地库

右键单击项目根目录,选择Git->Commit Directory。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第74张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第75张图片

添加成功,控制待打印信息

git学习笔记[idea整合GitHub,Gitee](非常详细)_第76张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第77张图片

被提交的类变为正常的黑色

git学习笔记[idea整合GitHub,Gitee](非常详细)_第78张图片

6.切换版本

修改一行代码

git学习笔记[idea整合GitHub,Gitee](非常详细)_第79张图片

此时被修改的文件变蓝,蓝色说明被追踪过但是又被修改了

git学习笔记[idea整合GitHub,Gitee](非常详细)_第80张图片

我们要重新add,commit,可以看到代码的不同

git学习笔记[idea整合GitHub,Gitee](非常详细)_第81张图片

再添加第三个版本,

git学习笔记[idea整合GitHub,Gitee](非常详细)_第82张图片

因为已经被被追踪过,这里我们可以直接commit

此时有三个版本了

git学习笔记[idea整合GitHub,Gitee](非常详细)_第83张图片

可以看到修改信息
git学习笔记[idea整合GitHub,Gitee](非常详细)_第84张图片

切换版本:

右键选择要切换的版本,然后在菜单里点击 Checkout Revision。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第85张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第86张图片

此时头指针指向第二版本,文件也变为第二版本的文件

7.创建分支

右键点击HelloGit,Git -> Branches,或者点击IDEA的右下角,点击New Branche:

git学习笔记[idea整合GitHub,Gitee](非常详细)_第87张图片

或:

git学习笔记[idea整合GitHub,Gitee](非常详细)_第88张图片

弹出框,输入分支名:

git学习笔记[idea整合GitHub,Gitee](非常详细)_第89张图片

在这里插入图片描述

8.切换分支

点击右下角分支选择checkout,可以切换分支

git学习笔记[idea整合GitHub,Gitee](非常详细)_第90张图片

或者在log窗口,右键点击分支,选择checkout:

git学习笔记[idea整合GitHub,Gitee](非常详细)_第91张图片

9.合并分支(正常合并)

在hot-fix分支修改类并commit提交:

git学习笔记[idea整合GitHub,Gitee](非常详细)_第92张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第93张图片

切换到master分支

git学习笔记[idea整合GitHub,Gitee](非常详细)_第94张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第95张图片

我们要将hot-fix分支合并到master分支:

点击右下角master,选择hot-fix分支,选择Merge into Current

git学习笔记[idea整合GitHub,Gitee](非常详细)_第96张图片

如果代码没有冲突, 分支直接合并成功,分支合并成功以后,代码自动提交,无需手动提交本地库。
git学习笔记[idea整合GitHub,Gitee](非常详细)_第97张图片

10.合并分支(冲突合并)

分别在master,hot-fix分支修改HelloGit类同一行,并提交,故意制作冲突:

此时两分支代码是一样的,我们切换到hot-fix分支,修改一行代码
git学习笔记[idea整合GitHub,Gitee](非常详细)_第98张图片

提交,

git学习笔记[idea整合GitHub,Gitee](非常详细)_第99张图片

提交成功后,切换到master分支,修改同样位置代码

git学习笔记[idea整合GitHub,Gitee](非常详细)_第100张图片

提交

git学习笔记[idea整合GitHub,Gitee](非常详细)_第101张图片

这里我不小心创建了两个

git学习笔记[idea整合GitHub,Gitee](非常详细)_第102张图片

在master分支上合并hot-fix分支

git学习笔记[idea整合GitHub,Gitee](非常详细)_第103张图片

点击Merge into Current,弹出冲突框,点击Merge手动合并

git学习笔记[idea整合GitHub,Gitee](非常详细)_第104张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第105张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第106张图片

点击apply,合并成功,自动提交本地库

查看日志信息,可以看到hot-fix-commit-2和master commit-2合并成了一个版本

git学习笔记[idea整合GitHub,Gitee](非常详细)_第107张图片

IDEA集成GitHub

1.设置GitHub账号

在菜单栏File->Setting->搜索栏搜GitHub,添加GitHub账号:

git学习笔记[idea整合GitHub,Gitee](非常详细)_第108张图片

弹出网页,授权即可

git学习笔记[idea整合GitHub,Gitee](非常详细)_第109张图片
git学习笔记[idea整合GitHub,Gitee](非常详细)_第110张图片

2.分享项目到GitHub

git学习笔记[idea整合GitHub,Gitee](非常详细)_第111张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第112张图片

在这里插入图片描述

在github主页可以看到项目

git学习笔记[idea整合GitHub,Gitee](非常详细)_第113张图片

点击History可以看到本地库对应的版本

git学习笔记[idea整合GitHub,Gitee](非常详细)_第114张图片

3.push推送代码到远程库

注意: push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,
push 的操作是会被拒绝的。也就是说, 要想 push 成功,一定要保证本地库的版本要比远程库的版本高! 因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!

https协议push

在app类中新增一行代码push test并提交到本地库

git学习笔记[idea整合GitHub,Gitee](非常详细)_第115张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第116张图片

此时远程库是没有该代码的,点击Git->push
git学习笔记[idea整合GitHub,Gitee](非常详细)_第117张图片

push成功

在这里插入图片描述

在远程库可以看到新增代码

git学习笔记[idea整合GitHub,Gitee](非常详细)_第118张图片

ssh协议push

如果由于网络问题,无法push,我们之前设置过ssh免密登录,也可以用ssh方式push

在远程库HelloGit中,复制ssh链接

git学习笔记[idea整合GitHub,Gitee](非常详细)_第119张图片

app类新增代码并提交到本地库

git学习笔记[idea整合GitHub,Gitee](非常详细)_第120张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第121张图片

点击push,选择ssh push commit,点击push

git学习笔记[idea整合GitHub,Gitee](非常详细)_第122张图片

push成功

在这里插入图片描述

回到github主页可以看到代码push成功
git学习笔记[idea整合GitHub,Gitee](非常详细)_第123张图片

注意:如果你开的有,https很快就能push,但是ssh会因为网络代理的问题push失败,ssh方式push时把关掉

4.pull拉取远程库到本地库

我们在远程库即github主页对代码进行更新,并提交

git学习笔记[idea整合GitHub,Gitee](非常详细)_第124张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第125张图片

此时远程库的代码已经比本地库的代码更新了

注意: pull 是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动
合并,如果自动合并失败,还会涉及到手动解决冲突的问题,所以在pull时尽量不要改写本地库的代码。

右键点击项目,可以将远程仓库的内容 pull 到本地仓库:

git学习笔记[idea整合GitHub,Gitee](非常详细)_第126张图片

拉取成功

git学习笔记[idea整合GitHub,Gitee](非常详细)_第127张图片

注意:我这里pull fail了好几次,原因是开启了 关掉即可

5.clone远程库代码到本地

我们已经把代码托管到了github上,本地的代码相当于一个备份,这里我直接删除HelloGit项目,利用clone 将代码重新克隆到本地

1.删除项目

2.重新打开idea

git学习笔记[idea整合GitHub,Gitee](非常详细)_第128张图片

在GitHub主页上复制HelloGit项目的链接,我这里复制的是ssh链接

git学习笔记[idea整合GitHub,Gitee](非常详细)_第129张图片

Clone成功后,项目从远程库重新克隆到了本地

git学习笔记[idea整合GitHub,Gitee](非常详细)_第130张图片

Gitee(码云)

简介

GitHub 服务器在国外, 使用 GitHub 作为项目托管网站,如果网速不好的话,严重影响使用体验,甚至会出现登录不上的情况。针对这个情况, 大家也可以使用国内的项目托管网站-码云。使用方式跟 GitHub 一样,而且它还是一个中文网站,如果你英文不是很好,它是最好的选择。

官网:https://gitee.com

账号注册登录

创建远程库

跟Github的类似。点击+号->新建仓库

git学习笔记[idea整合GitHub,Gitee](非常详细)_第131张图片

也可以从GitHub与GitLab中导入仓库。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第132张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第133张图片

创建成功

IDEA集成Gitee

首先,要在IDEA安装Gitee插件。

在菜单栏选File->Settings->Plugins,搜Gitee。

git学习笔记[idea整合GitHub,Gitee](非常详细)_第134张图片

安装插件成功后,重启IDEA。

功能跟在IDEA的Github插件,功能类似,如添加Gitee账号等,可参考IDEA的Github插件。

连接码云,和之前类似:

git学习笔记[idea整合GitHub,Gitee](非常详细)_第135张图片

push推送代码到远程库

可以将本地项目发布到码云上

git学习笔记[idea整合GitHub,Gitee](非常详细)_第136张图片

如果不想点这个,也可以用push推送到码云仓库

git学习笔记[idea整合GitHub,Gitee](非常详细)_第137张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第138张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第139张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第140张图片

打开码云主页,可以看到项目成功被push到远程仓

git学习笔记[idea整合GitHub,Gitee](非常详细)_第141张图片

演示一下完整过程:

本地库新增一行代码

git学习笔记[idea整合GitHub,Gitee](非常详细)_第142张图片

提交

git学习笔记[idea整合GitHub,Gitee](非常详细)_第143张图片

选择码云的链接push

git学习笔记[idea整合GitHub,Gitee](非常详细)_第144张图片

push成功:
git学习笔记[idea整合GitHub,Gitee](非常详细)_第145张图片

pull拉取代码到本地库

在gitee上修改项目,并提交

git学习笔记[idea整合GitHub,Gitee](非常详细)_第146张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第147张图片

选pull按钮,这里要选择码云的路径,不要pull错了

git学习笔记[idea整合GitHub,Gitee](非常详细)_第148张图片

pull成功

git学习笔记[idea整合GitHub,Gitee](非常详细)_第149张图片

clone远程库代码到本地库

1.关闭idea,将项目删除

2.重新打开idea

git学习笔记[idea整合GitHub,Gitee](非常详细)_第150张图片

选择gitee的项目

git学习笔记[idea整合GitHub,Gitee](非常详细)_第151张图片

clone成功

git学习笔记[idea整合GitHub,Gitee](非常详细)_第152张图片

码云复制GitHub

Gitee可以把GitHub的项目迁移到Gitee上,迁移后可以进行同步刷新,不再赘述

git学习笔记[idea整合GitHub,Gitee](非常详细)_第153张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第154张图片

git学习笔记[idea整合GitHub,Gitee](非常详细)_第155张图片

你可能感兴趣的:(git,idea,git,github)