1 根底概念
1.1 git原理
git 把以后文件夹在生成一个 .git文件夹用作版本控制库,这个文件夹当前可能会很大,因为所有代码都寄存在外面。
git分区
git有三个分区:
工作区(Working Directory):开发者间接编辑的中央,只有文件产生了更改,在这就会显示进去,蕴含追踪与未追踪文件。通过git add将工作区文件增加到暂存区。
暂存区(Stage | Index):数据临时寄存的区域,通过git commit将暂存区文件增加到本地版本库。
本地版本库(Local Commit History):寄存所有曾经提交的数据,通过git push推送到近程仓库。
2 git罕用操作命令
从创立一个版本库到推送到近程仓库,合并抵触,分支,变基等操作,本次只对最罕用的git命令进行介绍。
2.1 创立版本库
创立版本库能够是在本地应用git init
命令进行创立版本库,或者能够在近程仓库创立一个存储库,在近程创立一个readme.md文件,而后将此我的项目clone到本地,后续对我的项目的的操作就基于此存储库进行。
2.2 增加操作
git add <filename> // 增加到暂存区(stage)
git add . // 全副提交到暂存区
2.3 提交操作
git commit -m "description" // 提交到本地库(必须先add)
git commit -am "description" // 可提交未add文件,然而不包含新创建文件
git commit --amend -m "description" // 这个命令会将暂存区中的文件与最近一次的提交记录合并,并批改提交信息为本次提交的提交信息。
git commit --amend // 与上边的命令类似,不同的是它在将本次提交与最近一次提交记录合并时不会被动批改提交信息,须要你在输出这个命令后进入的vim编辑器手动更改,或者应用:q命令退出批改,应用上次提交的提交信息。
2.4 删除操作(删除)
git rm <file> // 从暂存区删除(stage) 删除文件到暂存区,能够应用git checkout <file> 复原
git rm -f <file> // 删除之前批改过并且曾经放到暂存区域 删除的能够是文件夹或者文件,删除地位与复原同上
git rm --cached <file> // 如果把文件从暂存区域移除,但依然心愿保留在当前工作目录中,换句话说,仅是从跟踪清单中删除
2.5 撤销add
git checkout <file> // 复原未提交的更改,会讲批改的文件复原到上一次commit的状态,《留神》:应用git checkout 勾销add的文件无奈复原,应用前要确认以后add的批改项的确无
git reset HEAD <file> // 勾销之前 git add 增加,只是勾销add,工作区的内容不会受到影响。
2.6 撤销commit
当你提交了代码到本地,但此时,你想撤回这个提交,从新编辑批改一下。这时你能够通过 git reset 来实现。
这个撤销分为是否保留批改。
保留批改:git reset --soft
,你之前所作的更改都在,这也称为最平安的撤销。
舍弃批改:git reset --hard
,你之前所作的更改都会隐没,所以要审慎应用。
2.7 版本回退
git reset --hard HEAD~ //回退到上一个版本
git reset --hard <commit ID> //回退到指定版本
2.8 文件状态查问
当你批改了一个文件,你就能够应用git status
去查问这个文件的状态
个别当应用此命令查问到当前工作区都批改了那些文件,如图:咱们能够看到删除了readme.md与.DS_Store文件,新增了add文件,批改了hello.txt文件,他们的色彩代表他们过后的状态,绿色就是曾经存储到了暂存区,红色就是仅保留在工作区,未提交到暂存区保留。
2.9 拉取代码
git pull origin master // (如果你想拉到本地的dev分支上,首先git checkout -b dev,而后应用git pull origin dev,这样就将本地dev分支与近程origin/dev相绑定了)
git pull --rebase origin <branch name> //当多人开发一个我的项目时,可能同时有多人批改同一个文件,当a批改了这个文件并推送到近程时,b也批改了这个文件,在他推送的时候会失败,这个时候如果他应用git pull 命令就会产生一条额定的merge记录,--rebase就能够防止。
git fetch // 查看近程仓库有没有更新,有更新就下载下来,如果没有更新就没有任何反馈
对于git pull --rebase
命令的具体介绍,能够参考git pull –rebase的正确应用
2.10 推送代码
git push <近程仓库名称> <近程分支名称>
2.11 分支
当多人开发一个我的项目的时候,每个人都开发不同的业务,如果全副应用同一个分支开发就会比拟乱,这个时候就须要应用到多分支开发的技术。
首先,咱们能够应用git branch
命令来查看以后处于哪一个分支上和以后版本库总共有那些分支
应用git branch --remote
命令查看近程分支
当咱们须要新建一个分支时,能够应用git branch <new branch name>
来创立一个新的分支,此分支是基于以后分支进行创立的,所以他与以后分支的代码雷同,当咱们须要删除一个分支时,就能够应用git branch -D <branch name>
来删除一个指定的分支。
应用git push -d origin <branch-name>
删除一个近程分支
创立分支当前,能够应用git checkout <branch name>
来切换到指定的分支,这样就能够多分支并行开发。
咱们还能够应用git checkout -b <branch name>
来创立一个新的分支,同时切换到这个分支上。
2.12 合并分支
如果咱们在开发的时候应用的是dev分支,当我的项目要上线时须要将dev的代码合并到master分支上,这个时候就用到了命令:git merge
,咱们首先须要应用git checkout master来切换到master分支上,这个时候应用git merge dev
就能够把dev的代码合并到master上,或者dev将代码推送到近程,也能够应用git merge origin/main
将近程的指定分支的代码合并到以后分支。
2.13 临时保留
当咱们正在开发代码时,有人将一份十分重要的代码推送到的近程,如果你不拉取的话我的项目就无奈启动,这个时候如果咱们将未开发实现的代码commit
当前再拉取的话,就会产生无用的commit信息,这个时候咱们就用到了git stash
命令,git stash
能够将你以后未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是齐全一样的,所以你能够释怀的进行拉取代码,拉取代码后能够应用git stash pop
命令,将保存起来的代码从新复原到工作区。
2.14 将本地我的项目推送到近程仓库
当咱们在本地新建一个我的项目时,须要将他保留到近程仓库,这时候咱们首先要做的就是先将本地我的项目与近程我的项目关联起来,咱们首先查看本地是否关联近程仓库地址,应用命令git remote -v
命令,能够查看到是否关联到近程仓库
如果曾经关联了,须要更换关联的仓库,首先要删除本地关联,应用git remote rm origin
命令,而后能够应用git remote add origin <url>
命令将须要关联的仓库关联到这个我的项目,而后拉取近程代码到本地,间接应用git pull origin master
命令会报错:
fatal: refusing to merge unrelated histories
这是因为两个基本不相干的 git 库, 一个是本地库, 一个是远端库, 而后本地要去推送到远端, 远端感觉这个本地库跟本人不相干, 所以告知无奈合并
能够应用:
git pull origin master --allow-unrelated-histories。 // 容许无关的历史记录合并
来进行强制合并,这样就实现了两个仓库的合并,后续的操作就能够失常进行。
2.15 变基
git rebase和git merge区别
正如上图所示,变基的作用就是修整历史,将分支历史并入主线。
变基其实也是一种合并分支的办法。咱们能够切换到dev分支下后,再用git reabse master
命令进行分支合并,当呈现抵触时,应用:
git add test.txt
git rebase --continue
来合并抵触,接下来就能够切换回master分支,并疾速合并两个分支。
2.16 git本地配置
应用git config --list
查看本地的所有配置
能够应用git config --global user.name "name"
设置全局用户名,应用git config --global user.name
查问。
应用git config --global user.email "email"
设置全局邮箱,应用git config --global user.email
查问。
3 IDEA集成git的应用
3.1 intelliJ IDEA应用git
首先,要在应用的IDEA中配置git(我应用的是intelliJ IDEA)
而后,能够看到idea的最上方
接下来就能够应用idea自带的工具来进行git操作了
这几个按钮从左到右的意思别离是拉取,提交,推送,历史记录,回滚。
在idea的右下方,能够抉择切换分支,创立分支,合并分支,比拟差别,变基等性能,甚至与idea在左下角的功能区专门提供了一个git的性能按钮,点击当前就能够看到以下内容:
他的性能蕴含了上边两个局部的性能总和还要多,你能够看到每一个分支的每一个提交的详情信息,对指定分支拉取推送,删除,变基,将指定的分支回滚到指定的提交记录,等性能。
在idea上方的git性能组件中,甚至蕴含了一个在 GitHub创立一个与项目名称雷同的近程仓库,并将我的项目推送到除夕的性能。
这就防止了2.14所说的问题。
3.2 VSCode应用git
vs code的左性能栏有一个源代码治理的性能按钮,当你点击上来后会显示上图的成果(我的项目未应用git初始化时),这个时候你能够点击初始化存储库将我的项目放到本地存储库中,也能够点击发不到GitHub将代码间接公布到GitHub上,与idea的共享我的项目性能相似。
如果是一个曾经初始化过的我的项目,点击当前
他会显示以后未提交到暂存去的文件列表,你能够点击一个文件查看他的批改记录。
当须要对文件进行add,commit,pull,push时,咱们能够看到
能够点击对应的性能按钮进行git性能操作。
vscode的左下角显示的两个按钮
别离对应分支查看与近程仓库同步的性能。
发表回复