
Git知识总结
发布日期:2022-02-17 02:39:48
浏览次数:16
分类:技术文章
本文共 3524 字,大约阅读时间需要 11 分钟。
1. Git
1.1. 基本常识
- 集中式版本控制系统(如 SVN ):它是有一个中央服务器来存放所有版本的信息,有个缺点就是一旦它崩了,开发者就看不到完整的代码了
- 分布式版本控制系统(如 Git ):各个开发者都有一份完整的代码,各自把自己修改的文件推送给其他开发者就好了
- fork:点一下会把别人的项目克隆到自己的远程仓库里,自己就可以在上面修改了,不会影响别人的
- pull request:自己把fork的项目修改了,点击 pull request 发起一个请求来,就可以让原作者看一下是否需要合并
- watch:某个项目,原作者修改了就会发送消息给你
- issue:在使用过程中,可以一起讨论某些bug啥的
1.2. git原理
1.2.1. 分区
git分为四个区:远程仓库、本地仓库、暂存区、工作目录

比较项 | git clone | git fetch | git pull |
---|---|---|---|
是否需要初始化本地仓库 | 否 | 是 | 是 |
是否可以直接推送到远端 | 是 | 否 | 否 |
git pull 是拉取远程分支更新到本地仓库再与本地分支进行合并即:git pull = git fetch + git merge |
1.2.2. 分支
分支保证了能够多人同时开发,最终合并分支完成代码合并
1.3. git命令
1.3.1. 术语查询地址
https://git-scm.com/docs/gitglossary
1.3.2. 初创git项目后,各命令解释
git init # 初始化一个空的 git 本地仓库git add README.md # git add 命令可将该文件添加到暂存区git commit -m "first commit" # 主要是将暂存区里的改动给提交到本地的版本库,这里会在本地默认创建一个 master 分支git branch -M main # 把本地刚创建的 master 分支重命名为 maingit remote add origin https://github.com/iiyuwan/heima-echarts-20210316.git # 关联到一个远程仓库 git push -u origin main # 将本地信息推送到远端 main 分支,-u 指定了下一次 git push 就不用再指明分支了,即 git push === git push origin main
1.3.3. 配置本地账户信息
远程仓库通过git的配置获取我们的邮箱来和账户进行关联,从而对我们的账号进行验证。
,必须要配置才能够提交
git config --global user.name 'iiyuwan'git config --global user.email '1606445662@qq.com'git config --list # 查看配置信息
1.3.4. 生成公钥
ssh-keygen -t rsa -C "1606445662@qq.com" # gitbash 里打开# /c/Users/Juice/.ssh/id_rsa 文件生成路径
1.3.5. 克隆拉取或推送
git clone https/ssh # https 使用 443 端口,只要账号和密码就可进行仓库的读写 # ssh 使用 22 端口,通过 ssh-keys 进行授权来对仓库进行读写git clone -b 分支名 xxx.git # 克隆指定分支,默认是 master 分支,会在本地创建同名 master 分支;如果指定了 yy 分支,则本地会创建 yy 分支,并且已经建立了关联,即可以直接 git push 到远程的 yy 分支git pull origin 分支名 # 拉取最新的远程分支代码git push origin main # 指定从本地仓库推送到远程的 main 分支git push --set-upstream origin branch1 # 将本地分支 branch1 推送到远程仓库,并在远程创建该分支
1.3.6. gitignore 配置
*.txt # 忽略所有 .txt 结尾文件!lib.txt # 但 lib.txt 除外/temp # 忽略 temp 下所有文件build/ # 忽略 build 目录下所有文件doc/*.txt # 忽略 doc 一级子目录下的所有 .txt 文件,子目录不忽略
1.3.7. 版本前进和后退
git log --pretty=oneline # 以一行显示每个版本信息git reflog # 可以看到回退到某个版本的步数git reset --hard 哈希值 # 回退或前进到某个版本,--hard 会重置暂存区和工作区,在本地库移动 HEAD 指针
1.3.8. 分支
git branch -v # 查看本地分支 -a 查看本地和远程分支,git branch 分支名 # 创建分支git checkout 分支名 # 切换分支git checkout -b 分支名 # 创建并切换分支git merge hox_fix # 合并分支:注意是要切换到目标分支,如 hot_fix 要合并到 master分支,就要切换到 master 分支#本地创建一个新分支:yy,如果没给远程关联而直接 git pull 就会出现错误git branch --set-upstream-to=origin/yy yy # 将本地创建的这个分支与远程的 yy 分支关联 git checkout mastergit branch -d dev # 删除本地分支:注意需要先切换到其他分支git push origin --delete 分支名 # 删除远程分支
1.3.8.1. 分支冲突
手动修改文件,再提交就可以了
<<<<<<<<< HEAD aaa aaa # 当前分支内容========bbb bbb # 另外分支内容>>>>>>>> # 手动决定哪些需要,哪些不要git add [文件名]git commit -m "修复冲突" # 这里不要加文件名
1.3.9. 新的开发者应该怎么做
-
对于有权限合并分支的人
# 对于克隆了远程的 yy 分支(新的 developer 操作流程如下:)git clone -b yy # 从 远程 main 刚创建的新分支 yy,克隆代码到本地git branch main # 本地创建 main 分支git branch --set-upstream-to=origin/mian mian # 本地 main 分支与远程 main 分支关联git checkout yy # 切换到本地 yy 后,自己单独开发git push ...git checkout main # 本地 main 分支 合并 yy 分支,解决冲突git merge yy git commit -m 'main 分支合并并解决冲突'git push # 提交到远程 maingit checkout yygit pull origin main # 拉取远程最新的 main 分支代码git push # 推送最新的到远程 yy # yy 继续开发....
-
没有权限合并分支的人
git clone -b hwl # 从 远程 main 刚创建的新分支 yy,克隆代码到本地# hwl 第一次开发新的功能...git add .git commit -m 'main 分支合并并解决冲突'git push # 提交到远程 hwl# 管理员git checkout maingit pull origin hwlgit pull origin yy# 合并处理git add .git commit -m '合并分支'git push # 推送最新的到远程 main# 后续再开发git pull origin maingit push # hwl,yy 继续开发...
转载地址:https://blog.csdn.net/qq_39811414/article/details/114939627 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2023年05月05日 19时54分09秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
Android使用代码动态创建Selector(网络图片)
2019-05-16 12:29:37
Dialog常见问题
2019-05-16 12:29:37
TextView图文混排图片被截断的问题以及Android省略号只有一个点的问题
2019-05-16 12:29:36
Android SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!
2019-05-16 12:29:36
Android 休眠状态对Camera预览的影响
2019-05-16 12:29:35
android自定义相机黑屏问题
2019-05-16 12:29:34
Android adapter局部更新
2019-05-16 12:29:34
Android 实时视频采集—Cameara预览采集
2019-05-16 12:29:33
Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整实现(原理:底层SurfaceView+上层绘制ImageView)
2019-05-16 12:29:32
android.view.SurfaceHolder$BadSurfaceTypeException: Surface type is SURFACE_
2019-05-16 12:29:32
error: insufficient permissions for device的解决
2019-05-16 12:29:31
Android在自定义View(SurfaceView)中实现进度条Progress
2019-05-16 12:29:31
Android显示系统之View与SurfaceView更新屏幕的区别
2019-05-16 12:29:30
自定义的CustomMultiPartEntity 继承MultipartEntity
2019-05-16 12:29:29
android实现带进度条的文件上传
2019-05-16 12:29:29
Android引入外部自定义特殊字体的方法
2019-05-16 12:29:28
InputStream中read()与read(byte[] b)
2019-05-16 12:29:27
DatagramSocket.receive()方法无响应的解决
2019-05-16 12:29:27
Java 完美判断中文字符
2019-05-16 12:29:26
HttpClient 流式读取时中文乱码的解决方法
2019-05-16 12:29:26