Git
https://www.bilibili.com/video/BV1vy4y1s7k6
本地控制
-
Git本地三个分区:工作区,暂存区,本地库
- 提交至本地库后无法删除,除非有权限删除整个分支,注意!
-
初始化本地库命令:
git init
生成隐藏目录’.git’
-
查看本地库命令:
git status
- 首次生成三行日志:
- 表示当前所在分支
- 提交记录(本地库信息)
- 是否有暂存区需要提交
- 新增代码文件后,新增一行日志:
- 未被追踪的文件,即工作区文件
-
添加暂存区命令:
git add
-
添加后
git status
日志信息:首次日志的第三行变为:
- 全添加:全为:更改被提交,即暂存区文件
- 非全添加:既有暂存区文件又有工作区文件
-
-
提交本地库命令:
git commit -m "日志信息"
-
提示信息:"[分支信息(xx) 版本号] 日志信息";
-
提交后
git status
日志信息:首次日志的三行变为两行,首行不变,第二行变为:
- 全提交:没有东西需要提交,工作树干净
- 非全添加:暂不清楚
-
-
查看日志信息命令:
- 精简日志信息命令:
git reflog
- 详细日志信息命令:
git log
- 精简日志信息命令:
-
修改代码文件变化:
只要修改了就变为了工作区文件,需要添加暂存区,再提交至本地库。
-
版本穿越命令:
git reset --hard 版本号
原理:移动了head指针
-
Git分支
- 查看分支:
git branch -v
- 创建分支:
git branch 分支名
- 切换分支:
git checkout 分支名
- 合并分支:
git merge 分支名
- 代码冲突:
- 冲突后分支后有"MERGING"冲突提示,
git status
命令也有响应提示 - 解决:打开代码文件手动合并代码
- 文件中有提示,其中冲突代码中
- 上方为合并分支代码段
- 下方为被合并分支代码段
- 再讲手动合并的代码添加至暂存区和提交至本地库。
- 注:提交命令不能加文件名
- 而且,合并只会修改合并分支的代码文件,不会修改被合并分支的代码文件
- 文件中有提示,其中冲突代码中
- 冲突后分支后有"MERGING"冲突提示,
- 分支原理:创建分支即创建新的指向版本指针;head指针指向决定当前所在分支。
- 查看分支:
团队协作及远程控制
团队协作
- 团队内协作
git push
推送命令git clone
克隆命令
- 跨团队协作
git fork
远程库之间复制命令,将某个远程库添加至自己远程库的分支中Pull request
拉取请求→审核→merge
至自己远程库
GitHub
-
创建远程库
-
为远程库链接创建别名,别名最好与库名保持一致
-
推送本地库:
git push 别名/链接 分支
-
拉取远程库:
git pull 别名/链接 分支
-
克隆远程库:
git clone 链接
初始化并克隆,同时完成别名设置,默认别名为origin
-
GitHub团队内协作:管理员需要给予成员权限,在settings里的manage access中获得邀请链接,将链接发给新成员。
-
GitHub跨团队协作:首先fork其他团队远程库,点击
Pull request
拉取请求→审核→merge
至自己远程库 -
GitHub之SSH免密登录:P26
IDEA集成Git
-
配置忽略文件:
忽略不同IDE的特殊配置文件,如IDEA的.iml文件
- 方法:
- 推荐在用户目录(家目录)下创建git.ignore文件,方便引用;
- 家目录下.gitconfig文件里配置引用忽略文件
- 方法:
-
IDEA下选择settings设置内version control里的Git栏目,配置好Git的安装目录
-
本地库操作
-
初始化
项目目录下选择Git→create Git repository,选择项目目录
-
添加暂存区
文件右键选择Git→add或项目右键Git→add ,取消添加忽略文件即可
-
提交本地库
右键Git→commit file,选择文件和添加日志信息即可
-
切换版本
顶部栏Git→show Git log,选择目标版本右键checkout即可
-
创建分支
项目右键Git→branches→new branch或IDEA右下角点击当前分支→new branch
-
切换分支:右下角选择当前分支→checkout
-
合并分支:
- 在当前要合并分支中,右下角点击选择要被合并的分支右键→merge into current
-
合并冲突
左侧为合并分支代码,右侧为被合并分支代码,中间为手动合并区。
-
-
远程库操作 GitHub
-
登录GitHub账号:左上角+号使用Token登录
GitHub中Settings→developer settings→personal access tokens,权限全选
-
上传项目:顶部栏Git→GitHub→share project on GitHub
其中,remote别名建议修改成项目名(库名)
-
push推送:
文件右键选择Git→push或项目右键Git→push或顶部栏Git→push,默认选择HTTPS的别名push,建议配置了SSH则使用SSH推送
- 方法:右键分支自定义别名,复制SSH链接即可
注意:push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致, push 的操作是会被拒绝的。也就是说,要想push 成功,一定要保证本地库的版本要比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!
-
pull拉取:顶部栏Git→pull
注意:pull 是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。
-
clone克隆:开始页面右上角选择get from VCS→使用第一项url即可
-
-
gitee
-
远程库操作同上述Git,不过需要自定义码云链接
-
导入GitHub项目
选择HTTPS协议链接,库名后的刷新按钮可强制更新
-
GitLab
- 略