git的下载地址:
Git 官方下载地址:https://git-scm.com/download/win
idea中git的基本操作
一、Git操作的基本结构
- 工作区(Workspace):基本文件的存放区(开发位置)
- 暂存区(Index/Stage):基本文件添加到暂存区后才会被Git管理(提交、更新)
- 本地仓库(Repository):本地的文件管理区域,提交代码或者更新代码的位置
- 远程代码托管中心(Remote):联合开发时,统一的文件联网管理中心
- 关系图:
二、Git的常用命令
本地库的操作
-
新建Git管理库
git init:在当前目录创建一个Git代码库
git init [project-name]:新建一个目录,将其初始化为Git代码库 -
签名配置
什么是签名?签名是git提交代码时的用户标识
用户签名:git config user.name “[name]” 、 git config user.email “[email address]”
案例:git config user.name “xxxx”、git config user.email “xxx@qq.com”系统签名:git config --global user.name “[name]” 、git config --global user.email “[email address]”
注意: Git会采用就近原则,如果设置了用户签名就会覆盖系统签名 -
查看信息
git status:显示当前git库所有有变量的文件(查看管理库的当前状态) -
暂存区的操作
git add [file1] [file2]:将工作区新增/修改的文件添加到暂存区
git add .:将当前目录下的所有文件添加到暂存区
git reset [file]:撤销暂存区的文件,工作区不变
git commit -m “备注” [file]:将暂存区的内容提交到本地库 -
历史记录的操作
查看:
git log:显示当前本地库的历史提交记录
git log --pretty=oneline:以单行的方式简化显示本地库的历史提交记录
git log --oneline:以更简化的hash值显示本地库提交的历史记录
git reflog:显示当前历史版本的全部操作过程版本的选择:
git reset --hard [版本的哈希索引值]:表示当前版本设置为指定的某个历史版本
git reset --hard HEAD^: 表示当前的版本后退一步,n个^表示后退n歩
git reset --hard HEAD~n:指定后退n歩 -
找回删除的文件
删除的文件的操作已经提交的本地库:git reset --hard [版本号] 通过回溯版本找到本地上一个版本
删除文件的操作未提交到本地库:git checkout [file] -
文件差异比较
git diff [file]:将工作区的文件和暂存区的文件进行比较
git diff [hash索引值] [file]:将本地库的某个历史版本和工作区的文件进行比较
git diff:将工作区和本地库的所有文件进行比较 -
分支的处理
什么是分支?
分支就是在当前的版本控制的主线上,复制一份出来,形成一个支线,所有的代码管理都可以对这个支线进行操作。对支线的操作不会对主线造成任何影响。这条支线就是所谓的分支。分支的应用场景
在项目开发过程中,可能会需要开发一些周期比较长并且不急于上线的功能,如果直接在当前的主线上进行版本控制,可能会对当前主线的代码造成污染,但是从代码的安全性角度来说,又不能不进行版本管理,这个时候就可以考虑分支进行开发。分支的操作
git branch -v:查看当前的分支情况
git branch [分支名]:创建分支(基于当前所在的分支创建)
git checkout [分支名]:切换分支
git push origin --delete [分支名]:删除远程分支(需要将分支切换到master才能删除其他子分支)
注意:在切换分支时,一定要保证当前分支的所有修改都提交到本地库上,否则工作区未提交的修改会随着分支的切换一并切换过去(保护机制)git merge [有新内容的分支名]:合并分支
注意:合并分支的时候,需要定位到被合并的分支上,然后再执行merge命令将有新内容的分支合并过来。
比如:需要将分支1合并到主分支上,
先要通过git checkout [主分支] 的命令定位到主分支,
再执行git merge [分支1]的命令进行合并冲突的解决:
如果主干和分支都修改了某个文件的相同的位置,就会发生所谓的冲突,这个时候需要进行冲突的解决:
1、找到冲突的文件进行编辑
2、按照具体的业务需求修改成合适的情况
3、git add添加修改后的文件到暂存区
4、git commit命令提交修改后的文件到本地库git branch --merged:查询哪些分支合并入当前分支
git branch --no-merged:查询没有和当前分支合并过的其他分支
git branch -d [分支名]:删除分支(当分支做了修改后,未合并到主分支上删除时,会报异常)
注意:如果该分支没有合并到主分支,则会删除失败,需要通过
git branch -D [分支名] 的方式强制删除
远程库的操作
- git remote -v:显示所有远程仓库
- git remote add [别名] [url]:新增一个远程仓库
- git push [别名] [分支名]:将指定分支推送到远程仓库上
- git push [别名] --all:推送所有分支到远程库
- git clone [url]:克隆远程仓库的文件到本地库,并且初始化本地库,自动生成一个名为origin的别名
- git pull [别名] [分支名]:将远程仓库上的变动拉取到本地库并且合并