Git和GitHub学习笔记

git

  1. git介绍 分布式版本控制工具 VS 集中式版本控制工具
  2. git安装 基于官网发布的最新版本2.31.1 安装讲解
  3. git命令 基于开发案例 详细讲解了git的常用命令
  4. git分支 分支特性 分支创建 分支转换 分支合并 代码合并冲突解决
  5. idea集成git

GitHub

  1. 创建远程仓库
  2. 代码推送push
  3. 代码拉取 pull
  4. 代码克隆 clone
  5. SSH免密登录
  6. idea集成Github

Gitee码云

码云创建远程仓库

idea集成Gitee码云

码云连接GitHub进行代码的复制和迁移

GitLab

GitLab服务器的搭建和部署

idea集成GitLab

第1章 Git概述

Git官网:https://git-scm.com/

Git是一个分布式版本控制系统

1.1 版本控制

记录文件内容变化,记录文件修改历史,查看历史版本

alt

1.2 为什么需要版本控制

个人开发过渡到团队协作

alt

1.3 版本控制工具

集中式版本控制工具

CVS、SVN(Subversion)、VSS

有一个单一的集中管理的服务器,保存所有文件的修订版本,通过客户端连接到服务器

如果服务器发生故障,无法工作

alt

分布式版本控制工具

Git、Mercurial、Bazaar、Darcs

客户端把代码仓库完整的拉到本地库

  1. 服务器断网的情况下也可以进行开发(版本控制在本地进行)
  2. 每个客户端保存的都是整个完整的项目

此处还有一个远程库

alt

1.4 Git简史

alt

1.5 Git工作机制

本地库再通过git push推送到远程库

alt

1.6 Git和代码托管中心(远程库)

基于网络服务器的远程代码仓库

  • 局域网:GitLab
  • 互联网
    • GitHub(外网)
    • Gitee码云(国内)

第2章 Git安装下载

官网:https://git-scm.com/

各版本下载地址:https://npm.taobao.org/mirrors/git-for-windows/

测试,右键Git Bash Here,输入git --version

alt

alt

2.1 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 版本号 版本穿梭

2.2 设置用户签名

全局范围的签名,区分不同操作者身份,是哪个用户提交的代码,Git首次安装必须设置一下用户签名,否则无法提交代码

注意:这个用户签名与其他(GitHub)的账号无关

WGG@LAPTOP-7S84JVQ1 MINGW64 ~/Desktop
$ git config --global user.name wgg

WGG@LAPTOP-7S84JVQ1 MINGW64 ~/Desktop
$ git config --global user.email zhishuchen@qq.com

alt

2.3 初始化本地库

初始化用于获取目录管理权限

在目录中右键执行git init

alt

2.4 查看本地库状态

git status查看

alt

新建一个文件,查看状态

alt

2.5 添加到暂存区

LF行尾换行方式替换CRLF方式(Linux系统中是LF,Windows中是CRLF,安装Git时默认勾选自动转换了)

alt

alt

2.6 提交本地库

alt

简写版本号只取前7位

2.7 修改文件

Head指针指向第二个版本

alt

本地始终只有一个文件

alt

2.8 版本穿梭(切换版本)

往前往后都可以

alt

指针所在分支 alt

具体的版本号

alt

版本切换的原理就是移动的head指针

alt

第3章 Git分支

用户使用的分支,程序员进行开发的分支

alt

3.1 分支

同时推进多个任务,就可以为每个任务创建单独的分支,把自己的工作从开发主线上分离出来,开发时不会影响主线分支的运行。可以理解为分支就是一个单独的副本(底层就是指针的引用) alt

3.2 分支的好处

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

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

3.3 分支的操作

命令 作用
git branch 分支名 创建分支
git branch -v 查看分支
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上

指针进行操作

alt

合并分支

需要先切换到master分支才能进行合并

alt

冲突

在master分支修改hello.txt倒数第二行并提交到本地库

alt

brone分支中修改hello.txt中倒数第一行

alt

在master分支进行合并

alt

手动修改hello.txt

alt

alt

提交到本地库,不带文件名

alt

brone分支中的数据并不会受到影响

alt

创建分支和切换分支本质上都是head指针,head指向哪个分支就在哪个分支上

第4章 Git团队协作机制

4.1 团队内协作

alt

  1. 岳不群创建华山剑法推送到远程库
  2. 令狐冲学习华山剑法并加了两招,推送到远程库(需要加入团队:拜师)
  3. 岳不群更新华山剑法

4.2 跨团队协作

alt

  1. 东方不败从岳不群的远程库fork(叉子:复制)华山剑法到自己的远程库
  2. 东方不败clone到本地,改造成僻邪剑法
  3. 推送到远程库
  4. 给岳不群发一个拉取剑法的请求
  5. 岳不群进行审核
  6. 审核通过后合并到自己的远程库
  7. 岳不群和令狐冲都可以pull到本地学习僻邪剑法

第5章 GitHub操作

5.1 创建远程库

GitHub:https://github.com/

远程库名最好和本地库名相同

alt

库名,公有库

alt

alt

链接太长了可以给远程库起别名

alt

5.2 推送本地分支到远程库

alt

也可以使用别名代替链接(不成功,不知道为啥),可能需要在凭据管理器中删除凭据

git push git-demo master

在远程库中就可以看到hello.txt(成功的话)

5.3 拉取远程库到本地库

本地库和远程库不同步了

更新本地库,拉取后会自动提交本地库

(用别名试了好多次,又用链接试了好多次)

alt

5.4 克隆远程库到本地

复制仓库地址

公共库克隆不需要登录,需要一个空的文件夹

alt

克隆后文件夹中会有.git文件夹,克隆会1、拉取代码。2、初始化本地库。3、创建别名(origin)

alt

5.5 团队内协作

令狐冲克隆到本地后修改了代码

想push到远程库,此时会报没有权限(Permission denied to...)

少了一个认师的动作(需要加入岳不群的团队)

在岳不群的账号中邀请令狐冲加入团队

alt

alt

复制邀请函发送给令狐冲

alt

https://github.com/zhishuchen/git-demo/invitations

在令狐冲的账号访问该链接,选择接受邀请还是婉拒

alt

令狐冲加入项目团队后就可以push代码到远程库了

岳不群再pull代码下来

5.6 跨团队协作

东方不败访问岳不群的远程库

https://github.com/zhishuchen/git-demo.git

点击fork到自己的账号

alt

alt

修改代码(在线修改或clone到本地库)

修改好后,新建一个pull request

alt

alt

填写信息

alt

在岳不群的账号就可以看到pull request alt

查看代码

alt

alt

审核后就可以进行合并

alt

5.7 SSH免密登录

HTTPS协议和SSH协议

alt

生成SSH的公钥和密钥

在此目录下右键git bash here

alt

输入命令生成公钥和私钥

alt

ssh-keygen  	#生成公钥和私钥的命令
-t rsa			#指定rsa加密算法来生成
-C				#描述

三次回车

在当前目录生成了.ssh文件

alt

复制公钥

alt

alt

alt

添加SSH公钥后进行测试免密登录,拉取推送代码无需登录

alt

第6章 IDEA集成Git

6.1 配置Git忽略文件

eclipse和idea项目会生成特定文件.idea等

alt

我们只想要pom.xml和代码

C:\Users\666目录下新建以.ignore结尾的文件

alt

# 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中使其生效

alt

使用正斜线

alt

idea中准备Git

alt

6.2 在idea中使用Git

alt

红色文件表示未被追踪,还没有被添加到暂存区

alt

右键文件添加到暂存区

alt

绿色文件表示已经添加到暂存区,还未提交本地库

alt

写了很多代码,可以直接在项目名上右键添加到暂存区,可能会弹出提示框是否强制添加忽略文件,点击取消

alt

alt

提交到本地库

alt

不同的idea版本界面不同

alt

提交后变成了这种颜色

alt

6.3 切换版本

修改代码,文件变成了蓝色,表示该文件已被追踪,发生了修改

alt

可以直接提交本地库

alt

右下角git,黄色指针表示当前界面,绿色指针表示当前分支

alt

版本上右键进行切换

alt

alt

6.4 创建分支

方法一:右键项目

alt

方法二:右下角

alt

右下角表示当前分支,可进行切换分支

alt

6.5 合并分支

修改hot-fix分支代码,提交本地库,切换到master分支

alt

进行合并

alt

alt

6.6 代码冲突

修改hot-fix分支代码,提交到本地库

alt

修改master分支提交本地库

alt

进行合并发生冲突,需要手动合并

alt

左边master,中间未修改前,右边hot-fix

alt

alt

第7章 IDEA集成Github

使用口令登录GitHub账户

alt

在GitHub账户生成口令,起名字,勾选所有权限,复制口令到上述Token栏

alt

7.1 分享项目到GitHub(创建远程库)

alt

alt

7.2 推送代码到远程库

修改代码后,提交到本地库,push到远程库

alt

默认是使用HTTPS协议,容易受到网络影响,建议使用SSH协议

复制SSH链接

alt

alt

alt

push操作中本地库的版本要比远程库的版本高,否则push会被拒绝,所以程序员在动手修改本地代码之前,会先检查远程库和本地库的区别,如果本地库代码已经落后,就需要先pull拉取远程库的代码,更新到最新,再修改、提交、推送

7.3 拉取远程库的代码到本地

本地库的代码不是最新的了就需要pull

alt

如果远程库代码和本地库代码不一致,会自动合并,合并失败的话需要手动解决冲突问题

7.4 克隆远程库到本地

输入远程库的SSH链接

alt

第8章 码云

8.1 码云简介

Gitee是国内的一个代码托管中心,和GitHub一样,访问较好

Gitee:https://gitee.com/

8.2 创建仓库

alt

alt

8.3 IDEA集成码云

安装插件

alt

登录Gitee账户

alt

SSH免密登录和GitHub设置一样

8.4 push到Gitee远程库

链接填gitee上创建的远程

alt

也可以直接创建远程库

alt

在新建仓库中也可以复制GitHub项目到码云中

第9章 自建代码托管平台GitLab

GitLab简介

GitLab安装

全部评论

相关推荐

05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务