视频与资料
【尚硅谷】5h打通Git全套教程丨2021最新IDEA版(涵盖GitHub\Gitee码云\GitLab):https://www.bilibili.com/video/BV1vy4y1s7k6
本笔记下载地址:https://download.csdn.net/download/weixin_42681761/19068303
Git 官网:https://git-scm.com/
Github 官网:http://github.com/
码云 官网:https://gitee.com/
Git
一、Git 介绍
Git是一个免费的,开源的分布式版本控制工具,可以快速高效地处理从小型到大型的各种项目
Git易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCase等版本控制工具。
Git工作机制:
二、Git下载安装
-
Git下载:https://git-scm.com/
-
Git安装
查看协议
Git选项配置
建议选择Git的默认编辑器
修改Git的环境变量
选择后台客户端连接协议
配置Git文件的行末换行符
选择Git终端类型
选择Git pull合并的模式
选择凭据管理器
其他配置
实验室功能,不要勾选
安装完成后,在桌面任意位置右键 > 选择 Git Bash Here > 输入 git --version
查看 git版本,验证是否安装成功。
三、Git常用命令
命令 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config -- global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git add 文件名 | 把工作区文件添加到暂存区 |
git add 文件夹 | 把工作区文件夹添加到暂存区 |
git add 文件名 文件名 文件名 | 把工作区多个文件添加到暂存区 |
git add --all | 把工作区所有文件添加到暂存区 |
git rm --cached 文件名 | 把文件从暂存区删除 |
git rm --cached 文件名 文件名 文件名 | 把多个文件从暂存区删除 |
git commit -m "版本说明" 文件名 | 把暂存区文件提交到本地库 |
git commit -m "版本说明" --all | 把暂存区所有文件提交到本地库 |
git status | 查看本地库状态 |
git reset --hard 版本号 | 版本穿梭 |
git reflog | 查看版本信息 |
git log | 查看版本详细信息 |
1. 设置用户签名
说明:签名的作用是区分不同操作者的身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。这里设置的用户签名和用来登录其他代码托管平台的账号没有任何关系。
操作方法:
打开 Git Bash,依次输入下面命令并回车。
命令:
git config --global user.name 用户名
git config -- global user.email 邮箱
查看是否设置成功:
C盘 > 用户目录 > 当前用户 > .gitconfig 文件
2. 初始化本地库
指定工作目录下 > 右键 Git Bash Here > git init > 产生 .git 目录。
命令:
git init
3. 查看本地库状态
命令:
git status
没有提交且不需要提交
没有提交但检测到未追踪的文件
4.添加工作区文件到暂存区
命令:
git add 文件名
5.从暂存区删除已追踪文件
命令:
git rm --cached 文件名
6.将暂存区文件提交到本地库
命令:
git commit -m "版本说明" 文件名
7.查看本地库历史版本
命令:
git reflog
git log
8.修改文件
9.版本穿梭
命令:
git reset --hard 版本号
四、Git分支
在版本控制过程中,同时推进多个任务,我们就可以创建每个任务的单独分支,使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己的分支的时候,不会影响主线分支的运行。
好处:同时推进多个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可。
常用命令:
命令 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
1. 创建分支
git branch 分支名
2. 查看分支
git branch -v
3. 切换分支
git checkout 分支名
4.合并分支
git merge 分支名
5. 冲突合并
冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
5.1 模拟产生冲突
在当前分支为 master 分支时,往 helloGit.txt 文件里面添加 “master:大家好!”并保存,接着把 helloGit.txt 添加到暂存区,然后把 helloGit.txt 提交到本地库。
把当前分支切换成 hot-fix,然后打开 helloGit.txt,由于没有合并 master 分支,所以此时看到的内容是空的。
在当前分支为 hot-fix 分支时,往 helloGit.txt 里面添加 "hot-fix:你们好!"并保存,然后添加到暂存区并提交到本地库。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4aADuAiw-1621990822205)(D:\install\Typora\files\git\git学习笔记.assets\image-20210523014831675.png)]
再切换成 master 分支,执行合并 hot-fix 分支的命令,就会产生冲突。
5.2 解决冲突
编辑有冲突的文件,删除特殊符号,决定要使用的内容,然后添加到暂存区并提交到本地库(此时执行 git commit 命令时不能带文件名)。
特殊符号:<<<<<<<<< HEAD当前分支的代码============
合并过来的代码 >>>>>>>>>hot-fix
此时解决的只是 master 的合并冲突,当切换回 hot-fix 分支时,文件内容还是原来的内容,hot-fix 想要合并 master 分支的内容,也需要执行上面的步骤。
五、Idea集成Git
- 配置 Git 忽略文件(可以忽略)
原因:与项目的实际功能无关,不参与服务器上部署运行。
忽略方法:
① 在当前用户目录下,创建忽略规则文件 xxxx.ignore。可共用模板如下:
# Created by .ignore support plugin (hsz.mobi)
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio
*.iml
## Directory-based project format:
.idea/
# if you remove the above rule, at least ignore the following:
# User-specific stuff:
# .idea/workspace.xml
# .idea/tasks.xml
# .idea/dictionaries
# Sensitive or high-churn files:
# .idea/dataSources.ids
# .idea/dataSources.xml
# .idea/sqlDataSources.xml
# .idea/dynamic.xml
# .idea/uiDesigner.xml
# Gradle:
# .idea/gradle.xml
# .idea/libraries
*.log
# Mongo Explorer plugin:
# .idea/mongoSettings.xml
## File-based project format:
*.ipr
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
### Maven template
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
② 在 .gitconfig文件中引用 .ignore 忽略配置文件。
- Idea 定位 Git 程序。
- 初始化本地库(git init)
- 添加工作区文件到暂存区(git add 文件名)
- 将暂存区文件提交到本地库(git commit -m “描述” 文件名)
- 版本穿梭(git reset 版本号)
- 创建分支(git branch 分支名)
- 切换分支(git checkout 分支名)
- 合并分支(git merge 分支名)
- 冲突合并
Github
一、常用命令
命令 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程库地址 | 给远程库地址起别名 |
git push 别名(链接) 分支名 | 推送本地分支上的内容到远程库 |
git clone 远程地址 | 将远程库的内容克隆到本地 |
git pull 别名 分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
二、创建远程库
三、远程库别名
- 查看当前所有远程地址别名
命令:
git remote -v
- 创建远程库别名
复制远程库https链接
命令:
git remote add 别名 远程库地址
四、代码推送 Push
命令:
git push 远程库别名(链接) 分支名
输入Github账号密码,推送成功。(Github是国外网址,容易超时)
五、代码拉取 Pull
命令:
git pull 别名 分支名
六、克隆远程仓库到本地
git clone 远程库地址
七、团队协作
- 团队内协作
邀请同伴,让同伴拥有推送代码的权限
- 跨团队协作
2.1 翔将远程库地址复制发给邀请跨团队协作的人,如张三。
2.2 张三打开链接,然后点击 Fork 将项目叉到自己的远程仓库。
2.3 张三就可以在自己的远程仓库编辑项目并提交。
2.4 张三点击 Pull 创建一个新的请求,并发给翔。
2.5 翔可以看到有一个 Pull request 请求。
2.6 翔确认过后,可以点击 Merge pull request 合并张三的代码。
八、SSH免密登录
在当前用户文件夹空白处,右键 > Git Bash Here > 输入ssh-keygen -t rsa -C 指定邮箱
命令 > 同时敲击回车三次 > 生成 .ssh 目录
ssh-keygen -t rsa -C 指定邮箱
.ssh目录结构
用记事本打开 id_rsa.pub 公钥,复制里面的内容
往Github添加SSH
接下来操作远程库就可以使用SSH连接而不需要登录了。
九、Idea集成Github
- Idea使用账号密码登录github
- Idea使用token登录github
- 分享工程到Github
- push 推送本地库到远程库
- pull 拉取远程库到本地库
- clone 克隆远程库到本地
Gitee码云
一、码云创建远程库
二、Idea集成Gitee码云
- Idea 安装 Gitee 插件
- 登录 Gitee
其它操作和 Github 几乎一样。