Git从入门到精通
什么是git?
Git 是一个免费的、开源的分布式版本控制系统。 为什么我们需要版本控制呢?从最初的个人开发过渡到团队合作!
一.Git的工作机制
工作区: 我们代码所在地方的文件夹。
暂存区:就是一个缓存的地方,不能长久存在,可以删除版本的记录。
本地库:该版本已经持久化,提交到本地库中的代码版本记录会永久存在。
二.Git常用命令
git config --global user.name 用户名 设置用户签名
git config --global user.email 邮箱 设置用户签名
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m "日志信息" 文件名 提交到本地库
git remote add origin 远程库地址 //将本地库与远程库相关联
git push 远程库地址 推送到的分支名称 //将本地库的内容推送到远程仓库之中
git reflog 查看历史记录
git reset --hard 版本号 版本穿梭
2.1 设置用户签名、查看用户签名
git config --global user.name 用户名
git config --global user.email 邮箱
git config --global --list //查看用户签名
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。 Git 首次安装必须设置一下用户签名,否则无法提交代码。 ※注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任 何关系。
2.2 初始化本地仓库
说明:我们需要进入一个文件夹,或者创建一个新文件夹并进入!执行以下命令
git init
如果出现.git的隐藏文件,说明初始化成功!
2.3 查看本地库状态
git status
两种情况:
- 工作区没有任何文件:
- 工作区存在还没有提交到暂存区的文件
2.4 添加暂存区
将工作区的文件添加到暂存区中
git add 文件名 //添加具体工作区中的文件到暂存区中
git add . //添加所有工作区新的文件到暂存区中
2.5 提交本地库
将暂存区中的文件提交到本地库
git commit -m "日志信息" 文件名
注意:每次新修改了一个文件以后都需要执行从工作区==>暂存区==>本地库的流程才能保存
2.6 将本地库和远程库进行绑定
git remote add origin 你的远程库地址
2.7 获取远程库和本地库的同步
git pull --rebase origin master
2.8 查看版本信息
提交到了本地库的每一次信息都存在版本记录!我们可以通过查看这些记录,并且回退到对应版本!
git reflog // 查看所有的版本记录【简单显示情况】
git log //查看所有版本记录的详细信息
2.9 版本穿梭
每个版本都有一个版本号,我们通过版本号就可以随便进入到任何一个版本状态
git reset --hard 版本号
git切换版本,底层原理其实就是移动HEAD指针。
三.Git分支操作
什么是分支?
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独 分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时 候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是 一个单独的副本。(分支底层其实也是指针的引用)
分支的好处?
同时并行推进多个功能开发,提高开发效率。 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败 的分支删除重新开始即可。
3.1 分支常用命令
git branch 分支名 //创建新分支
git branch -v //查看当前所在分支
git checkout 分支名 //切换到指定分支
git merge 分支名 //把指定的分支合并到当前分支上
四. 版本冲突问题解决
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替 我们决定使用哪一个。必须人为决定新代码内容。
1. 找到冲突的文件
2. 自己决定保留哪一个部分,删除到冲突部分的代码。
3. 重新将修改后的文件添加提交到工作区中。
五.团队协作机制
5.1 团队内部协作
大家都处于一个开发团队中,共同拥有对代码pull和push的权利。
5.2 跨团队协作
团队外的人对这个团队项目进行修改完善。
1. fork到自己的代码仓库
5.2.2 在自己仓库中进行修改
5.2.3 修改完成后发起请求
这样,项目的原本发起者就可以选择是否合并你的代码到其中了!
六.GitHub操作
远程仓库常用命令
git remote -v //查看当前所有远程地址别名
git remote add 别名 远程地址 //给远程地址起别名
git push 别名 分支 //推送本地分支上的内容到远程仓库,分支是最小单位!一定要加上
git clone 远程地址 //将远程仓库的内容克隆到本地,十分常用!
git pull 远程库地址别名 远程分支名 //将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
git clone命令会做如下操作: 1、拉取代码。2、初始化本地仓库。
6.1 进入GitHub仓库,创建账号
6.2 创建一个仓库
6.3 ssh免密登录
我们可以看到远程仓库中还有一个 SSH 的地址,因此我们也可以使用 SSH 进行访问。
6.3.1 进入到本地计算机C盘的用户主目录
6.3.2 在当前目录右键,进入git bash界面
输入命令
ssh-keygen -t rsa -C yuri2559@qq.com //最后是一个邮箱,设置为自己的邮箱
// rsa 是一个著名的非对称算法,表示根据你的邮箱名字生成一个唯一的秘钥和公钥。
6.3.3 出现一个.ssh目录
我们打开公钥这个文件,复制其中的内容。
6.3.4 在GitHub中添加公钥
七. IDEA集成Git
7.1 配置Git忽略文件
为什么要忽略?
这些文件与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之 间的差异。
7.1.1 创建一个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
7.1.2 在.gitconfig 文件中引用忽略配置文件(此文件在用户主目录中)
[user]
name = jianyou
email = yuri2559@qq.com
[core]
excludesfile = C:/Users/Administrator/git.ignore
位置如下
7.2 配置git程序安装目录
这样就继承成功了,我们可以对Idea中的项目进行相关的操作。
7.3 Idea查看项目历史版本
我们选中对应的版本,右键,可以选择回退到之前的版本中。
7.3 Idea切换分支
这样,我们就可以切换到不同的分支中去了!
7.4 Idea 合并分支
在7.3的基础上,我们选中一个想要合并的分支,右键, 即会出现merge分支的命令,如果代码没有冲突的话,我们就可以合并成功了!
八.IDEA集成GitHub
8.1 配置GitHub账号
8.2 分享本地项目到GitHub
- 先随便创建一个本地项目
我们直接点击分享,就可以将项目直接分享到GitHub中去了,并且Idea会自动为我们在GitHub中创建项目仓库。
推荐视频学习:www.bilibili.com/video/BV1vy…
九. 将本地项目与远程仓库关联的两种方式
9.1 clone
将远程仓库下载到本地(核心就是下载.git文件),然后将我们的代码复制过去。这样就可以直接进行提交了
9.2 使用命令
在创建新仓库成功以后,直接对本地的项目使用命令进行绑定,在仓库创建成功以后会有该命令的提示!
十.可能遇见的问题
push失败
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master
这个意思是说你的本地分支没有和远程分支相关联,因此导致提交失败。解决方法有两种。 解法一: 指定要上传到的分支
git push origin dev 确保本地有相同的分支,远程没有这个分支没关系,会在远程自动创建一个分支。
解法二: 关联远程分支
git push --set-upstream origin dev 进行关联后就不用每次都进行方法一啦!
转载自:https://juejin.cn/post/6993238290220449799