一、创建和初始化本地库
1.创建文件夹(例:E:\testGit)
2.打开Git Bash(Git终端)
小贴士:按住ctrl键使用+或-去放大终端上的字体大小(固定设置字体大小:鼠标右键–》Options–》Text–》Select–》选择字号–》Apply–》Save)
小贴士:设置编码集 鼠标右键–》Options–》Text–》Characher set选择UTF-8–》Apply–》Save
验证Git是否安装完成(顺便查看下版本信息):git –version
基本命令(与Linux上操作一样):
clear 清屏
3.设置签名
设置用户名和邮箱
1 | $ git config --global user.name " 你的用户名" |
1 | $ git config --global user.email "你的邮箱" |
4.本地仓库的初始化操作
使用命令进入到你创建的文件夹内(例:E:\testGit)
1 | $ cd e: |
1 | $ cd testGit |
或者在资源管理器中创建的文件夹内鼠标右键,打开Git Bash
初始化命令
1 | $ git init |
5.查看目录命令
1 | $ ll -la //查看包括隐藏的文件,.git文件是隐藏文件(windows查看隐藏文件) |
小贴士: config 配置文件
二、提交文件
add和commit命令,提交文件到暂存区和本地库(这样才能对文件进行后续管理)
1. 在本地仓库文件夹中创建一个文件 (例:test.txt)
2. 将文件提交到暂存区
先打开Git Bash终端输入命令:
1
$ git add "Demo1.txt"
3. 将暂存区文件提交到本地库
打开Git Bash终端输入命令:
1 | $ git commit -m "这是我提交的第一个文件" "Demo1.txt" |
1 | $ git commit -m "第一次提交文件" "Demo1.txt" |
小贴士: 参数:m:message “”中的是注释,方便以后管理
小贴士: 提交文件时可不用双引号把文件名括起来
自己练习一下!
三、查看缓冲区和本地库状态的命令:
1 | $ git status |
说明:
nothing to commit 说明暂存区是空的(在本地库中放入一个文件)
Untracked files: 没有进行文件追踪,说明存在在本地库文件夹中有尚未被提交到暂存区的文件(使用add命令将其添加到暂存区)
Changes to be committed: 文件可以被提交(使用commit命令,将文件提交到本地库)
0 insertions(+) ,0 deletions(-) 0行增加 ,0行删除
修改文件内容后,再次查看状态
modified 文件已经修改了(可将已经修改的重新提交到暂存区和本地库)
小贴士:在工作区(本地库文件夹)中还没有被提交到暂存区的状态:untrack
通过add命令提交到暂存区,就是将文件加入到index中,状态变为:staged
通过commit命令可以将staged状态的文件加入到本地库的HEAD中
四、查看日志
1 | $ git log |
commit eb5579cf745b6c68e6480f2fc19481bf9452f219 (HEAD -> master)
commit 后的十六进制代码 可以看成键值对的索引,就是<key,value>中的key,key:索引,value:历史记录中的具体内容。通过索引可以找到历史记录中的具体内容。
小贴士: 历史版本由近至远
小贴士: 当历史记录太多时,出现 ”:“进行分页,在”:“后通过空格回车可切换到下一页
小贴士:
下一页:空格
上一页:b
到尾页显示END
退出:q
日志展示方式
- 以一种美观的方式,将其在一行上展示出来
1
$ git log --pretty=oneline
- 显示一部分索引,将其在一行上展示出来
$ git log --oneline
- 显示指针回溯到相应的历史版本需要的步数
1
$ git reflog
五、前进、后退历史版本的命令
小贴士:是指针名1
$ git reset --hard 【你所要跳到历史版本的索引】// 就是前面说的很长的一窜十六进制的数
小贴士:复制,在终端选中就是复制。粘贴,右键鼠标点击past。
小贴士:使用hard参数回溯历史版本时,本地库和暂存区已经本地存储的文件同步更改。
本地库(HEAD)的指针移动时,重置暂存区(index)、重置工作区(一开始初始化创建的文件夹)本地库(HEAD)指针移动的同时,重置暂存区(index),但是工作区(初始化时的文件夹)不动1
$ git reset --mixed 【索引】
小贴士:mixed参数不常用本地库(HEAD)指针移动的时候,暂存区(index)和工作区(初始化的文件夹)都不动1
$ git reset --soft 【索引】
小贴士:参数不常用六、删除操作
删除工作区中的文件将删除操作同步到暂存区1
$ rm 【文件名】
将删除操作同步到本地库1
$ git add 【文件名】
小贴士: 该删除不是物理删除,只是改变了指针指向1
$ git commit 【文件名】
找回本地库中删除的文件实际上就是将历史版本切换到添加文件时的版本1
$ git reset --hard 【索引】
找回暂存区的文件1
$ git reset --hard 【索引】
七、文件对比差异
1.在工作区创建一个文件(例:TEST.txt),将其提交的暂存区和本地库中
2.更改工作区内的文件(TEST.txt),增加文件内容,导致工作区和暂存区文件不同步
小贴士:Git是以行为单位进行管理
将工作区和暂存区文件进行比较的命令:
1 | $ git diff 【文件名】 |
多个文件的比对命令:
1 | $ git diff // 比较工作区和暂存区中所有文件的差异 |
比较暂存区和本地库的差异
1 | $ git diff HEAD 【文件名】 // 比较暂存区和当前本地库中该文件的差异 |
1 | $ git diff HEAD 【索引号】【文件名 】// 比较暂存区和历史本地库中该文件的差异 |
八、查看、创建、切换分支
概念
branch master主分支
branch分支
新的独立的功能,开辟新的分支branch,从master主分支上复制当前最新的版本到分支上。
小贴士:多个分支可以并行开发,各个分支互不影响
分支的合并
hot_fix 热修复(分支合并出现bug后新开辟的分支)
操作
- 查看当前版本下的所有分支
1
$ git branch -v
- 创建分支小贴士::分支名前面的*表示当前所在的分支
1
$ git branch 【分支名】
- 切换分支小贴士:创建的新分支和当前主分支上最新版本索引号相同
1
$ git checkout 【分支名】
查看文件内容命令:
$ cat 【文件名】
九、合并分支
将其他分支合并到主分支
- 切换到主分支
1
$ git checkout master
- 将分支合并到主分支小贴士:master|MERGING代表储在合并状态中
1
$ git merge 【分支名】
Merge conflict in 文件名 代表出现冲突
出现冲突的原因:在同一个文件的同一个位置修改
保留下需要的,进行修改后
将工作区中的内容添加到暂存区
进行commit操作
1 | $ git commit -m "解决了冲突问题" Demo1.txt |
小贴士:不能带文件名,否则出错
十、为仓库地址起别名(testRepository)
1 | $ git remote -v 查看远程库的别名 |
1 | $ git remote add 别名 Github仓库的地址 |
小贴士:fetch可以从仓库取回东西,push可以推送东西
十一、推送命令:
1 | $ git push 【别名】 master【要推送的分支名】 |
十二、克隆
选取下载到的盘符(下载到地址)
拉取命令:
1 | $ git clone 远程库的地址 |
克隆操作可以帮我们完成
使用push命令没有让输入密码也没有报错,push成功的原因是Git bash里有缓存
删除缓存:搜索管理你的凭据
邀请加入团队
进入远程库后点击Settings在Manage access里邀请普通成员
输入邀请人的github账户名
Pending Invite就是邀请连接
接受邀请输入,邀请连接
十四、远程库的修改和拉取操作
1.拉取pull操作的命令:相当于fetch+merge
2.项目经理先确定远程库内容是否更新了
3.项目经理进行拉取操作:
抓取操作
1 | $ git fetch 【远程库别名或远程库地址】【分支名】 |
抓取后切换到远程库中的内容是否正确
1 | $ git checkout 【远程仓库别名】/【分支名】 |
ll 查看目录
cat 【文件名】查看文件内容
发现内容都正确,进行合并操作
切换回本地库的主分支
1 | $ git checkout master |
合并分支
1 | $ git merge 【远程库别名】/【分支名】 |
小贴士:fetch操作只是将远程仓库里的东西下载到本地,并没有更新到工作区,工作区文件不变
直接pull拉取
远程库已经更新后
1 | $ git pull 【远程仓库别名】【分支名】 |
小贴士:fetch+merge 为了保险,pull代码简单
十五、跨团队合作
1.得到远程库的地址
2.fork操作
复制地址,点击fork操作
3.克隆到本地,进行修改
1 | $ git clone 【地址】 |
4.添加到暂存区,提交到本地库,推送到远程库
5.进行pull request操作
点击Pull requests
6.审核
查看请求点击pull requests
Files changed 可以查看具体提交的内容
点击Merge pull request 进行合并
十六、跨团队合作
1.得到远程库的地址
2.fork操作
复制地址,点击fork操作
3.克隆到本地,进行修改
1 | $ git clone 【地址】 |
4.添加到暂存区,提交到本地库,推送到远程库
5.进行pull request操作
点击Pull requests
6.审核
查看请求点击pull requests
Files changed 可以查看具体提交的内容
点击Merge pull request 进行合并
十七、SSH免密登录
(如果操作系统不是windows10)push每次需要输入账户和密码
免密操作
1.进入到用户的主目录中的命令:
1 | $ cd ~ |
2.执行命令生成一个.ssh的目录
1 | $ ssh-keygen -t rsa -C 【github对应的账户】 |
三次确认回车,使用默认设置
小贴士: C要大写
在.ssh目录下有两个文件id_rsa和id_rsa.pub,打开id_rsa.pub文件,将里面的内容进行复制操作
3.打开github 在头像位置找到Settings –》SSH and GPG keys –》创建型的SSH keys,将复制的内容粘贴到key中
4.生成密钥以后就可以正常进行push操作
5.添加别名的命令
1 | $ git remote add 【别名】 【远程库SSH协议下的地址】 |
十八、IDEA集成Git
创建project后,打开File点击Settings选择Git,设置git的安装路径
Path to Git executable:D:\study_setup\Git\bin\git.exe
Apply –》OK
1.本地库的初始化操作
VCS选择Import into Version Control选择Create Git Repository
本地库初始化完成,生成了.git文件
2.在创建好的project中创建New Modul创建Package创建Class然后进行Java代码的书写
3.在git中add添加到暂存区点击commit提交到本地库(可添加注释)Version control相当终端 Log日志
十九、使用idea拉取推送资源
拉取
1 | $ git pull 【别名】 【分支名】--allow-unrelated-histories |
允许无联系的版本合并
小贴士:不同本地库需要再次设置别名
推送
1 | $ git push -u 【别名】【分支名】-f |
远程库和本地库已经可以进行交互了
直接commit和push(不推荐)
为了防止冲突,一般都是先pull后push
二十、使用idea克隆远程仓库到本地
利用IDEA进行克隆项目
new–》 Progect from Version Control–》Git
URL:远程库地址
Directory:放置位置
Test测试与远程库是否能连接上
Open Project 选择New Window选择在新窗口打开
小贴士:克隆到本地后,这个目录即变成了一个本地仓库又变成了工作区间
二十一、使用idea解决冲突
1.制造冲突
2.A和B对同一个文件的同一个位置进行修改
3.解决冲突
出现冲突后,提示进行merge操作,点击merge进行合并(可选择合并的内容)
4.避免冲突
团队开发时避免在一个文件中改代码
在修改一个文件之前,在push之前先pull操作,在别人的基础上进行修改