赞
踩
目录
推荐一篇自己使用 Git 遇到的问题及操作习惯 :
Git 常用命令速查表 :
Git
+ 是一个安装在电脑上的 "软件"
=> 不是依赖 node 环境运行的了
=> 是一个依赖电脑操作系统运行的工具(软件/环境)
=> 作用 : 管理本地的文件夹
=> 历史跳转
=> 作用: 可以把本地的内容上传到远程
+ 如果你想上传到 Github , 那么只能使用 Git 这个软件
GitHub
+ 是一个 "网站" , 是一个国外的 "网站"
=> 私人: 想象成一个网页版的百度云盘
+ 用来 保存项目 源代码
=> 可以选择公开或者不公开
=> 协同开发(单人异地协同开发, 多人协同开发)
+ 也是一个 服务器, 可以接受你上传的内容
+ 只能接受由 Git 这个 "软件" 上传内容
+ 也是一个 "社交平台", "开源社区"
=> 代码可以被 "点星"
+ 特殊的作用
=> 个人能力的体现
Gitee ( 码云 )
+ 是一个 "网站", 是一个国内的 "网站"
+ 和 Github 的作用是一致的
+ 接受 Git 这个 "软件" 上传的代码
=> 中国人的网站
+ 和 Github 的区别, 就是上传的时候, 填写的地址不一样
GitLab ( 一般为 公司级 应用 )
( 记住 : 人家问你上一家公司使用的是啥 , 千万不能说是 Gitee 啊 )
我们一开始使用的是 GitLab , 后来改用 Git-Gerrit 了
+ 不能使用 node 安装
+ 需要单独下载安装包, 手动安装
+ 下载安装包 :
=> 官网下载 : Git
+ 安装: 双击安装包运行, 一路下一步, 直到最后
+ 检测安装 :
=> 方案1: 来到桌面, 或者任意空白位置
-> 单击鼠标右键
-> 出现 Git Bash Here 和 Git GUI Here 表示安装成功
=> 方案2: 打开命令行, 目录无所谓
-> 输入指令: $ git --version
-> 出现版本号, 表示安装成功
Git 首次安装需要进行的配置
+ 需要配置一个 用户名 和 邮箱
1. 查看我的 Git 配置列表信息:
=> 打开命令行(终端, git bash), 目录无所谓
=> 输入指令: $ git config --list
=> 会在命令行出现你当前的 git 配置内容
2. 配置全局用户名:
=> 打开命令行, 目录无所谓
=> 输入指令: $ git config --global user.name "你的用户名"
3. 配置全局邮箱:
=> 打开命令行, 目录无所谓
=> 输入指令: $ git config --global user.email "你的邮箱"
=> 注意: 邮箱最好使用真实邮箱
Git 安装以后 得到什么内容 ?
+ 提供了一个新的 Git Bash 的命令行工具
+ 和我们自己电脑的 cmd 或者 终端 是一样的
+ 可以通过这个 命令行工具 操作 git 的指令 来管理你的文件夹
=> 点击 Git Bash Here, 就是一个命令行工具
=> 注意:
~> 当你使用指令来管理你的文件夹的时候
~> 你可以选择使用 电脑自带的终端 cmd
~> 也可以选择使用 Git Bash Here
+ Git 默认不会管理你的任何一个文件夹
+ 你的某一个文件夹如果需要 Git 管理
+ 那么你需要通知给 Git , 他才会管理
1. 把本地文件夹 初始化 成为 Git 仓库, 交给 Git 管理
+ 告诉 Git 这个软件, 我这个文件夹你帮我管理一下
+ 打开命令行, 切换目录到你需要 Git 帮你管理的文件夹目录
+ 输入指令: $ git init
+ 指令执行完毕 :
+ 会在当前目录下, 生成一个叫做 .git 的 隐藏文件夹
=> 只要有 .git 这个文件夹, 表示当前目录被 Git 这个软件管理了
=> 当前目录及所有后代目录都是被 Git 管理的状态
+ 注意:
=> 当你需要使用 git 的指令的时候
=> 必须要要保证这个文件夹是被 Git 管理的
1-1. 当你把一个 本地文件夹 变成 本地仓库 以后
=> Git 会 "虚拟" 的把你的文件夹分成 三个部分
=> 工作区
-> 你书写的代码全部都在工作区内
=> 暂存区
-> 把你想形成历史版本的内容暂时存储
-> 暂存区可以回退到 工作区
=> 历史区
-> 你形成的一个一个的历史版本
-> 只能把暂存区的内容形成历史版本
2. 查看当前文件 ( 暂存区 ) 状态
+ 打开命令行, 切换目录到 .git 文件夹所在的目录
+ 输入指令: $ git status
+ 查看当前目录下所有文件的管理状态
3. 把工作区的内容添加到暂存区
+ 打开命令行, 切换目录到 .git 文件夹所在的目录
+ 输入指令:
=> $ git add 文件名称
单独添加一个文件到暂存区
=> $ git add 文件夹名称
单独添加一个文件夹到暂存区(注意: 空文件夹 git 不管理)
=> $ git add --all
把工作区当前所有的内容都添加到暂存区
-> 简写: $ git add -A
-> 简写: $ git add .
4. 把暂存区的内容回退到工作区 ( 拉回 )
+ 打开命令行, 切换目录到 .git 文件夹所在的目录
+ 输入指令:
=> $ git reset HEAD -- 文件名称
单独撤回一个文件到工作区
=> $ git reset HEAD -- 文件夹名称
单独撤回一个文件夹到工作区
=> $ git reset HEAD -- .
撤回暂存区所有内容到工作区
5. 生成历史版本
+ 打开命令行, 切换目录到 .git 文件夹所在的目录
+ 输入指令: $ git commit -m "说明"
+ 就会把当前暂存区内的所有内容形成一个 历史版本
=> 并且 清空暂存区
6. 查看历史版本
+ 打开命令行, 切换目录到 .git 文件夹所在的目录
+ 输入指令: $ git log
+ 会以 倒序 的形式来展示你的历史版本
// 当前版本的版本 id => commit
// 签名(全局用户名和邮箱) => Author:
// 时间 => Date:
// 你写的提交说明
7. 回退历史版本 (跳转)
+ 作用: 把当前工作区回到指定的那个时间节点的版本
+ 打开命令行, 切换目录到 .git 文件夹所在的目录
+ 输入指令: $ git reset --hard 版本id
+ 就会把你工作区的文件夹回退到指定的历史版本时间节点状态
解释一下历史版本信息
// 当前版本的版本编号( id )
commit bee820aeea62f5c07b6acf0dae237f487b2c61db
// 作者( 全局用户名和邮箱 )
Author: 你的用户名 你的 email 邮箱
// 时间
Date: Thu Aug 5 11:45:23 2021 +0800
// 你写的版本提交说明
第一个版本
记录一下几个版本的编号
+ 第一版: bee820aeea62f5c07b6acf0dae237f487b2c61db
+ 第二版: 0bf4af29071100f44c8f4a15396b873d53bd838d
+ 第三版: db092ed5be9a563de47ab368ec352e3ed0c0bbe7
git 仓库是什么样子的 ?
+ 当一个文件夹被 git 管理以后
+ 会变成一个 git 仓库
+ 就会 "虚拟" 的把这个文件夹变成三个区域
=> 工作区
=> 暂存区
=> 历史区 ( 本地仓库 )
工作区:
+ 你所有书写在仓库中的代码(文件)
+ 都是放在工作区内, 表示你的源代码
暂存区:
+ 可以把工作区的内容在暂存区创建节点
+ 保存一份工作区的内容
+ 目的是 为了形成历史版本
+ 你想形成历史版本, 只能把暂存区的内容形成历史版本 (不能直接把工作区形成历史版本)
历史区:
+ 可以把暂存区的内容形成一个历史版本
+ 当你向前跳转的时候, 只能跳转历史区内存在的历史版本
+ 可以上传到远程
+ 你想上传到远程, 只能把历史区内的历史版本上传, 不能直接上传 暂存区和工作区
1. 你的历史区要有还没有上传过的版本
2. 你要有一个 远程的仓库
=> 尽量不要一个远程仓库对应多个本地仓库
=> 会出现 冲突
1. 第一次上传 (该本地仓库的第一次上传)
1-1. 建立一个远程仓库
GitHub 网站地址
Gitee 网站地址
=> 在 GitHub 或者 Gitee 上建立一个仓库
=> 打开网站 :
-> 点击页面右上角有个加号( + )
-> 如果是 Gitee 点击 新建仓库
-> 如果是 GitHub 点击 New repository
填写仓库信息 :
=> 仓库名称(必填)
-> 相当于一个远程文件夹名称, 不要用中文和空格
=> 仓库介绍(选填)
-> 中英文无所谓
=> 选择 加密或者开源
=> 点击创建
1-2. 给本地仓库设置远程地址 (建立连接通道)
=> 设置一个将来上传要上传到什么位置的地址
-> 你远程仓库的地址
-> 如果你要上传 GitHub 就填写 GitHub 地址
-> 如果你要上传 Gitee 就填写 Gitee 地址
=> 打开命令行, 切换目录到 .git/ 文件夹所在的目录
-> 输入指令: $ git remote add 变量名 远程地址
-> remote 指远程地址
-> add 指添加
-> 变量 你自己定义一个变量名
-> 地址 你要上传的远程地址
=> 相当于告诉了本地仓库, 以后上传可以使用 变量名 这个地址上传了
1-3. 把本地的历史版本推送到远程仓库
=> 打开命令行, 切换目录到 .git/ 文件夹所在的目录
=> 输入指令: $ git push -u 变量名 master
-> -u 的含义:
-> 比如你有两个远程添加了
-> 一个是 origin 记录了地址 a
-> 一个是 origin2 记录了地址 b
第一次上传的时候书写了 -u origin, 那么第二次的时候, 不用书写 origin 自动上传到 origin
第一次上传的时候没有写 -u origin, 那么第二次如果还想上传到 origin, 那么还得写一次 origin
2. 第二次上传 (指的是同一个本地仓库的第二次上传)
2-1. 只需要保证有未上传过的历史版本就行
2-2. 直接上传
+ 输入指令 : $ git push
1. 第一次拉取该远程仓库的内容
1-1. 打开网站( GitHub 或者 Gitee )
=> 找到你需要拉取的那一个远程仓库
=> 点击 克隆 / 下载 按钮
=> 复制 HTTPS 仓库地址
1-2. 在本地确定你需要存放远程仓库的目录位置
=> 在当前目录下打开 命令行
=> 输入指令: $ git clone 远程仓库地址
=> 就会把该远程仓库拉取到本地
2. 第 n 次拉取该远程仓库的内容
2-1. 直接拉取远程代码就行
=> 打开命令行, 切换目录到你之前拉取下来的文件夹内(第一次下载的文件夹下)
=> 输入指令: $ git pull
3. 上传问题
=> 如果你 clone 的是你自己的仓库
=> 那么可以直接在这里上传
=> 如果你 clone 的是别人的仓库, 那么不能上传
+ 在当前内容下, 把当前的内容复制一份一模一样的内容
开辟出一个 分支内容, 在分支上的所有书写
+ 和原本内容不相干, 是在复制出来的内容上进行开发
+ 当你需要的时候, 进行分支合并就可以了
一般是开发完毕以后再次进行合并
1. 创建一个新的分支
=> 打开命令行, 切换目录到 .git 文件夹所在的目录
=> 输入指令: $ git branch 分支名称
+ 作用 : 创建一个新的分支
=> 会把你当前所在的分支的所有内容复制一份放在新创建的分支上
=> 注意: 新分支上的内容就是当前分支的所有内容
2. 查看所有分支
=> 打开命令行, 切换目录到 .git 文件夹所在的目录
=> 输入指令: $ git branch
这个是简写 , 查看本地所有的分支命令 ,
git branch -a 这个是既可以看到本地的所有分支 , 还可以看到远程上的分支 ,
假如没有看到远程上别人的分支 , 可以先
git pull 跟远程仓库进行一下同步操作 , 然后再
git branch -a 查看分支
3. 切换分支
=> 打开命令行, 切换目录到 .git 文件夹所在的目录
=> 输入指令: $ git checkout 分支名称
=> 切换到指定的分支位置
4. 合并分支
=> 在 git 内的合并分支, 只有一种情况
-> 你站在某一个分支上, 想把其他分支的内容合并到自己身上
=> 打开命令行, 切换目录到 .git 文件夹所在的目录
=> 输入指令: $ git merge 分支名称
或者呢 ? =>
我 切到 你的分支 上 git pull 拉了一下 , 然后切回 我的分支 , 合并 你的分支 , 然后就可以了
再 或者 呢 ? =>( $ git pull origin master )一定不要忘了加 origin
5. git 删除本地分支
( 1 ) 切换到 git 代码目录 。
( 2 ) 使用指令 $ => git branch -d 你的本地分支名 来删除本地分支
6. git 删除远程分支
使用指令 $ => git push origin --delete [branchname] 你的远程分支名
或者 $ => git push origin -d 分支名 , 来删除远程分支
切换到你 git 项目所在的目录后,使用 git branch -a 命令来查看所有的分支。
列出所有分支了,其中上方的是 本地的分支,
下方的有 remotes/origin 开头的就是 远程分支。
假设要删除 new-a 的远程分支 ,我们需要先把分支切换到 master ,
因为你现在所在的分支就是 new_a ,在这个分支下 ,是不能删除它的 。
使用命令 git checkout master
7. git 查看远程地址
git remote -v
如果绑定好远程地址的话:
会有两条地址 fetch 和 push ,那么 fetch 表示我们要获取到的地址,
push 则表示我们要推送的地址。
8. git 设置远程地址
8-1、添加远程地址
git remote add origin http://git.XXXX.com/XXX/XXX.git/
8-2、修改远程地址
git remote set-url origin http://git.XXXX.com/XXX/XXX.git/
1. master 分支
+ 创建 git 仓库时的 主分支 , 默认生成的
+ 不接受任何代码上传
+ 只接受 主开发分支 (由 dev 分支) 合并来的代码内容
2. dev 分支
+ 也叫作 development
+ 主开发分支 , 从 master 分支分出来的
=> 不接受任何代码上传
+ 只接受 主功能分支 合并来的代码内容
+ 负责把测试没有问题的版本合并到 master 上
3. feature-xxx(功能)
+ 主功能开发分支 , 从 dev 分支上分出来的
=> 进行主要功能开发
+ 接受该功能的代码上传
+ 负责把该功能开发完毕以后合并给 dev 分支
例如 : feature/zhangsan
4. feature-xxx(功能)-xxx(bug)
+ 你自己在分配给你的分支上开辟的(个人开辟的分支)
=> 从 feature-xxx 分支上开发
+ 根据需求开辟出来(用来细分自己的功能)
=> 还可以用来作为记录留存, 当项目测试中出现的 bug 需要你修改
5. hot-xxx(bug)
+ 极其特殊的分支: master 分出来
+ 直接在 master 上开辟
+ 专门用来解决 紧急 bug 的分支
=> 修改完毕 bug 以后, 可以不经过测试直接合并回到 master 分支上
+ 在 git 上传代码的过程中, 异地上传的过程中
+ 有可能会出现冲突的情况
+ 为什么会出现冲突
=> 本地和远程的版本不一致
+ 多个本地仓库对应一个远程仓库
解决冲突 :
+ 把远程的代码拉取下来 => git pull 一下
+ 在本地根据代码进行选择, 保留哪一个冲突位置的代码
=> 在本地把冲突代码解决掉
+ 再次 add 、commit 、push 就可以了
=> 你的所有版本, 解决冲突之前和解决冲突之后的版本都会被保留下来
1. readme.md
+ 只要在项目目录内有一个叫做 readme.md 的文件
+ 当你上传到远程仓库的时候,
就会自动把文件解析成类似 html 页面的格式显示在仓库首页上
2. .gitkeep 文件
+ 是一个只有后缀名, 没有文件名的文件
+ 为了作为文件夹保持目录结构的
+ 因为 git 不会管理空文件夹
-> 当我们初始化项目的时候
-> 其实就是为了保持一个目录结构
-> 就需要在文件夹内部放一个没有意义的文件
-> 这时最好在空文件夹内放一个 .gitkeep 文件
3. .gitignore 文件
+ 是一个只有后缀名, 没有文件名的文件
+ 作为忽略文件使用
+ 把你要忽略的文件和文件夹写在这个 .gitignore 文件内
+ 你书写完毕后 , git 就不在管理这个文件或者文件夹了
+ 是在 .git 文件夹同级建立一个叫做 .gitignore 的文件
可视化工具
=> githubdesktop
工作中遇到的分支问题 :
自己的本地开发分支 ( develop 分支 ) 对应的远程分支 ( develop 分支 )
已被 “ 管理员 ” 删除了 ,且创建了新的远程分支 ( WEB_HOTFIX ) ,
但是我本地还在 已被删除 的 ( develop ) 开发分支上 ,
本地还没有删除 , 而且还写了新的代码 ,并未提交 ,
那我怎样才能把本地分支的代码 同步 到 “ 管理员 ” 新创建的( WEB_HOTFIX )分支上呢?
一 、 首先是在你本地分支写的代码为提交的状态下
1、git fetch ( 获取最新创建的远程分支 )
2、git stash ( 把本地未提交的代码 暂存 起来 )
3、git checkout ' 新分支 ' ( 切换到新创建的分支上 )
4、git stash pop ( 把 暂存 的代码 再 释放 出来 )
5、git branch -a ( 查看所有分支 、 包括本地分支和远程分支 )
( 可以 git branch -d ' 分支名 ' 删掉本地无用的分支 )
解决 Git 每次提交输入密码的问题
1、git config --global credential.helper store 2、git pull / git push ( 第一次输入 , 后续就不用再次输入了 ) pull / push 你的代码 , 这时会让你输入 用户名 和 密码 , 这一步输入的 用户名 密码 会被记住 , 下次再 pull / push 代码时就不用再次输入了 。 这一步其实是在用户目录下面生成文件 .git-credential 用来记录用户名和密码信息的文件。
打开项目目录下面的 .git 目录里的 config 文件 url=http://{username}:{password}@192.168.200.19/ProtoType/insurtech_od_api.git 换上自己的 用户名 和 密码 即可
解决 合并 merge 分支代码 时 Git 工具页面混乱的问题
1、 i 2、 Esc 3、 Shift + : 冒号 3-1、 冒号 : wq 4、 Enter 回车i => Esc => :wq => Enter
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。