Git:在本地库进行控制
Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目
代码操作(和Linux相同)
cat 文件名
查看文件内容
git --version
查看git安装版本
clear
清屏
设置签名
git config --global user.name “xxx” 设置用户名
git config --global user.email “64901870@qq.com” 设置用户邮箱
本地仓库的初始化操作
文件要放在本地仓库目录中才能够进行管理
到本地仓库文件夹中输入git init 进行初始化
复制操作
在终端中选中就是复制了
粘贴操作
右键点击paste
add命令和commit命令
每一次对仓库文件进行修改都要进行 add 和commit 提交记录
先在本地仓库目录中新建一个文件demo.txt , 然后该目录打开Git Bash Here
添加:将文件提交到暂存区
git add Demo.txt 进行添加
添加注释提交:将暂存区的内容提交到本地库
git commit -m “这是我提交的第一个文件 Demo.txt” Demo.txt
(-m:意思是message)
status命令
git status
查看的是工作区和暂存区的状态
log命令
git log
查看提交的,显示从最近到最远的日志
如果历史记录太长了,会显示冒号,有分屏效果,
点击空格 查看下一页
点击 b 查看上一页
点击 q 退出
到尾页显示END
日志展示命令
1:git log 分页
2:git log --pretty=online 简洁展示
3: git log --online 更加简洁展示
4:git reflog 展示,多了HEAD@{数字} 这个数字的含义:指针回到当前版本需要走多少步
reset命令
hard参数
git reset --hard 索引(索引:通过 git reflog 可以查看索引)
前进或者后退历史版本
本地库的指针移动的同时,重置暂存区,重置工作区
mixed参数
git reset --mixed 索引
本地库的指针移动的同时,重置暂存区,但是工作区不动
soft参数
本地库的指针移动的时候,暂存区和工作区都不动
总结:常用 hard参数
删除文件
当 test.txt 存在于本地库目录中时
删除工作区中的test.txt
rm test.txt
将删除操作同步到暂存区
add操作
git add test.txt
删除操作同步到暂存区后回退
如果删除操作同步到暂存区后想要回退恢复暂存区的数据,则直接利用索引滚回到当前这一步就可以了
git reset --hard 索引
将删除操作同步到本地库
commit操作
git commit -m “删除test.txt同步到本地库” test.txt
找回本地库中删除的文件
git reset --hard 索引
实际上就是将历史版本切换到刚才的版本即可
diff命令
git diff 文件名
将工作区中的文件和暂存区中文件进行比较
git diff
目录下 比较工作区中和暂存区中 所有文件的差异
git diff HEAD text.txt
HEAD指向的本地库 和 暂存区 进行比较
git diff 索引 text.txt
索引指向的本地库历史版本 和 暂存区 进行比较
分支
什么是分支
在版本控制过程中,使用多条线同时推进多个任务。这里面说的多条线,就是多个分支
通过一张图展示分支
开辟功能
新的独立功能需要开辟一个新的分支,当开辟一个新的分支时,会对原来的master进行复制,然后再在这个复制的master上进行编写。
功能编写好后,再和原master进行合并
Debug
Debug的时候,会在原来节点复制一份节点,在复制的这份节点上进行Debug
Debug完后再合并原master
分支的好处
同时多个分支可以并行开发,互相不耽误,互相不影响,提高开发效率
如果有一个分支功能开发失败,直接删除这个分支就可以了,不会对其他分支产生任何影响。
分支命令
当前分支是看不到其他分支内容的,如果要查看需要checkout切换到该分支
查看分支状态
git branch -v
分支界面中 * 代表当前在哪一个分支上
创建分支
git branch 分支名字
切换分支
git checkout 分支名字
合并分支
git merge 要合并的分支名字
合并后要进行 add commit 操作
注意!!commit时不用加文件名否则出错!! git commit -m "xxx"
合并冲突问题
什么时候会出现冲突问题?在同一个文件的同一个位置修改
可以合并 但是会同时出现两部分内容
解决合并冲突问题
内部商量,人为决定,手动删除。
本地库和远程库的交互方式
多公司合作
Git查看远程库地址别名记录
git remote -v
添加别名
git remote add 别名 远程库地址
添加别名后 通过别名就可以代替远程库地址
推送至远程库
git push 别名/地址 要推送的分支(选择一个分支即可)
然后输入密码验证就可以推送上去
克隆操作
git clone 克隆地址
1:可以帮我们初始化本地库
2:将远程库内容完整克隆到本地
3:替我们创建远程库的别名
邀请进入团队
管理者:在Github 自己的仓库里找到setting 找到message access 然后输入被邀请者用户名会得到一个邀请链接
邀请者:进入邀请链接接受请求,然后就可以push推送到远程库里面去
pull操作:fetch 和 merge
拉取操作
pull操作,相当于 fetch + merge
git fetch 别名 分支
将远程库的内容下载到本地,但是并没有更新到工作区里面,所以工作区内容不变
检查
抓取后可以去远程库里面看看内容是否有问题
git checkout 远程库别名/分支名:切换分支到远程库分支
cat 文件名:查看
进行合并
1:
git merge 远程库别名/远程库分支名
合并前要在切换到原分支下进行merge操作
2:
远程库的拉取可以直接利用pull命令来完成
git pull 远程库别名 分支名
方法一比较慎重 方法二直接一键拉取合并
远程推送冲突问题
当推送失败,发现冲突
在冲突的情况下,应该先拉取下来,然后人为修改冲突,然后再推送到远程服务器。
人为修改冲突后,会显示merge冲突的标志,需要再commit的时候不输入文件名
IDEA集成Git
初始化本地库
先在IDEA中设置好Git路径
设置将工作区作为本地仓库
add操作
commit操作
### 远程库拉取 推送
注意!!先在远程库进行拉取,检查是否冲突,再一并推送上去。
1:在代码目录下Git Bash操作
拉取操作
git pull 别名 分支 --allow-unrelated-histories
参数:告诉git允许不相关历史合并
推送操作
git push -u 别名 master -f
2:在IDEA中拉取 推送
先拉取到本地库
add commit操作后,进行Push操作
commit的时候可以直接push,但是,为了防止出现冲突,建议先拉取到本地库commit没有冲突后再进行push。
利用IDEA克隆远程仓库到本地
克隆到本地后
这个目录既变成了一个本地仓库,又变成了工作空间
IDEA解决冲突
比较简单 比较智能 merge就完了
避免冲突
1:团队开发的时候避免在一个文件中改代码
2:在修改一个文件前,在push之前,先pull操作