一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

GIT的用法

下载

通过GIT官网下载

安装成功标志,打开文件夹,右击鼠标,发现有 git 的命令,安装成功

使用

第一阶段 快速入门

1.在资源管理器中,进入项目

2.右击鼠标,选择 Git Base Here ,跳转到 git 命令窗口

3.初始化 git 仓库

1 git init

4.输入命令 git status ,查看该仓库下所有文件的状态 (共三种状态,一、工作区,呈红色;二、缓存区,呈绿色;三、已被管理,不可见)

1 git status  // 告诉你有文件被修改过
2 git diff  // 可以查看修改内容。

5.提交修改,工作区到缓存区

1 git add 文件名   // 提交单个文件
2 git add .  // 提交所有文件
3 注意: git add 命令提交的是修改的内容,所有每次修改文件后,都需要 git add 一下

6.个人信息配置 ( 配置一次即可 )

1 git config --global user.email ‘1446591998@qq.com’ // 配置邮箱
2 
3 git config --global user.name ‘lis’ // 配置用户名

7.将缓存区的所有文件提交到当前分支,并生成 git 版本库

1 git commit -m '描述信息'   //  commit [ kəˈmit ] 承诺,保证

8.查看之前的 git 版本库

1 git log     
2 git log --pretty=oneline   // 简易化版本记录

第二阶段 拓展功能
1.回滚至之前的版本

1 git log // 查看之前的版本号
2 git reset --hard 版本号 // 回滚到指定的版本 reset [rēˈset] 重启

2.回滚至之后的版本

1 git reflog // 记录每一次命令
2 git reset --hard 版本号 // 回滚到指定的版本

3.丢弃工作区的修改,文件回到上一次修改的时候

1 git checkout -- 文件名
2 // 对还未 add 的文件,回到版本库的状态或上一次 add 之后的状态

4.丢弃缓存区保存的修改,文件回到 add 之前的状态

1 git reset head 文件名
2 // 对已经 add 的文件,删除 缓存区的修改,回到 add 之前的状态
3 // 此时可以进行 git checkout -- 文件名 操作,在删除一次修改

5.撤销修改,版本区回到缓存区

1 // 当文件被 add 而且 commit 之后,如何回到之前的状态呢
2 git reset --soft 版本号

分支撤销修改,版本区回到工作区

1 git reset --mix 版本号 // 回到工作区
2 git reset --hard 版本号 // 

分支
在版本更替的时候

 1       C1   ------------  >  C2  ----------  >   C3
 2     原始数据          没修改+修改+新增       没修改+修改+新增
 3       |                 |    |   |           |
 4       -------------------    |   |           |
 5       |                      |   |           |
 6       ----------------------------------------
 7 
 8 在 C1 版本保存所有原始数据文件
 9 在 C2 版本保存所有 修改+新增 的文件,
10 在 C2 版本不会保存没修改的文件,但会保存一个指向之前版本保存原始文件的指针,这里指向C1
11 // 每有一个文件,保存一个指针
12 在 C3 版本保存所有 修改+新增 的文件,
13 在 C3 版本没修改的文件可能是C1原始的,也可能是C2新增的,会含有多个指向不同版本的指针
 1        ----------------> C4 -----
 2       |                          |
 3       C3                       ---------- >  C6
 4       |                         |
 5       -----------------> C5 -----
 6 
 7 可能在 C3 的基础上开发了 C4
 8 又在 C3 的基础上开发了 C5
 9 现在想将 C4 和 C5 整合在一起,形成 C6
10 在此提出分支的概念

分支的作用:假如我们在 C3 的基础上正在开发 C4,但 C3 突然出现 BUG ,我们就需要对 C3 进行修改,变为 C5。

但,我们仍然可以在 C3 的基础上,开发 C4,最后将 C4 和 C5 整合起来,变为 C6 上线。

在这里:以 C1、C2、C3、C6 为干线的这些版本,称为主分支 master

​ 以开发为主的 这条分支,可以起名叫 dev 包含 C1、C2、C3、C4

​ 以修复为主的 这条分支,可以起名叫 bug 包含 C1、C2、C3、C5

当然 修复完bug,可以立即将 bug 分支合并到主分支上,根据业务需求来定。

查看所有的分支

1 git branch        // branch [branCH] 支,分会
2 // 默认 master

创建分支

1 git branch 分支名

跳转分支

1 git checkout 分支名
2 git switch 分支名
3 // 在此分支上修改文件,不会影响别的分支上的文件
4 git checkout -b 分支名  // 创建并跳转到该分支
5 git switch -c dev  // 创建并跳转到该分支  git 新命令

合并分支

1 git checkout 分支名
2 git switch 分支名
3 // 在此分支上修改文件,不会影响别的分支上的文件
4 git checkout -b 分支名 // 创建并跳转到该分支
5 git switch -c dev // 创建并跳转到该分支 git 新命令

合并分支

1 // 假如我们在 C3 版本发现 bug ,然后创建 bug 分支
2 // 在 bug 分支上,修服完 bug ,保存版本为 C4
3 // 然后 主线合并分支
4 // 一定要切换回mastet 必须在主线上操作 ,然后执行如下代码
5 git checkout master
6 git merge bug // merge [mərj] 合并,融合

删除分支

1 // 修复完bug,分支就没用了
2 git branch -d bug // delete 删除

解决冲突问题

 1 // 例 C4 在 C3 基础上开发新项目
 2 // C5 修改完 C3 bug,合并到主线
 3 // 当开发完成时,将C4 合并到 C5
 4 // 会报以下错误
 5 Mergo config in 文件名 (起冲突的文件)
 6 // 打开该文件 会看到以下情景
 7 <<<<<<<<<<<<<<<<<<<<<<< HEAD
 8 C5 中与 C4 冲突的文件
 9 =================
10 C4 中与 C5 冲突的文件
11 >>>>>>>>>>>>>>>>>>>>>>> dev
12 // 起冲突的原因, C4 和 C5 都对 C3 中同一个文件,进行修改
13 // 这个时候,需要人为的解决这个问题 (例,将 C5 中的内容替换为 C4 的内容,前提 C5 的内容,兼容之前的版本 )

我们在修复 BUG 时,应该尽量兼容之前的版本,解决冲突后再进行合并,就没有问题了。

1 git status 
2 // 也可以查看冲突文件

Github 的使用
注册账户
创建仓库
本地代码推送
在命令行上创建新的存储库

1 echo "# github" >> README.md
2 git init
3 git add README.md
4 git commit -m "first commit"
5 git remote add origin https://github.com/14465/github.git
6 git push -u origin master

从命令行推送现有存储库

1 git remote add origin https://github.com/14465/github.git // 远程 增加 仓库名 仓库地址
2 git push -u origin master // 推送 -u 仓库名 支线名 

在外地下载代码

1 git clone https://github.com/14465/github.git
2 // clone 完全拷贝 
3 // 注意:此时 git branch 只能看到 master ,但你可以使用 git checkout 分支名 跳转到其它分支

dev数据更新
在开发 dev 分支时,应更新 dev 分支 ,将 master 里最新的数据 合并到 dev 里,( master 里的数据不会改变 )

1 // 1.查看 dev (跳转到 dev)
2 git checkout dev
3 // 2.合并 master (获取master最新的数据 [仅一次])
4 git merge master 

在外地推送更新完的代码

git push origin dev

回家更新dev
当你回到家时,你应该将在外地上传的dev下载下来

1 git pull origin dev // 拉 仓库名 分支名
2 // 只获取更新后的文件
3 // 开发
4 // 提交
5 git add .
6 git commit -m 'xxx版本'
7 git push origin dev

开发完毕,要上线

 1 // 切换
 2 git checkout master
 3 // 合并
 4 git merge dev
 5 // 推送 master
 6 git push origin master
 7 // 更新 dev (保持和master一致)
 8 git checkout dev
 9 git merge master
10 git push origin dev
11 // 回家拿到最新的 dev ,继续开发 ····

补充

1 git pull origin dev
2 // 等价于下面两条合体
3 git fetch origin dev // 将 dev 从GitHub 下载到版本区, fetch [feCH] 取
4 // 为区别自己的dev,下载的文件名为 origi/dev
5 git merge origin/dev // 将 origin/dev 合并到自己的 dev
6 // 因此自己的 dev 发生变化,将自动变更状态到工作区

rebase 变基
使 git 记录变得简洁

第1种应用场景
将多条提交记录,整合为一条记录

1 git rebase -i 版本号 // 不是最新的版本
2 // 将这个版本号直到最新的版本记录,整合成一条记录
3 git rebase -i HEAD~3 
4 // 将最新的3条版本记录整合成一条记录
 1 // 上面点击完成后,会显示下面信息 pick [pik] 挑
 2 pick 版本号 V2
 3 pick 版本号 V3
 4 pick 版本号 V4
 5 
 6 // 这个时候,要将 V3 和 V4 最前面的 pick 修改为 s 
 7 pick 版本号 V2
 8 s 版本号 V3
 9 s 版本号 V4
10 // s 代表合并到上面的版本去
11 // 在最下面输入命令提交 :wq 保存 :q 返回
12 :wq
 1 // 上面点击完成后,会显示下面信息
 2 v2 xxxxx
 3 v3 xxxxx
 4 v4 xxxxx
 5 // 这是提示信息,提示你给新的版本起名称
 6 // 将上面三条记录,全部删除,然后输入 v2 & v3 & v4 (可以任意起名称)
 7 
 8 // 输入 
 9 git log
10 // 结果
11 v2 & v3 & v4
12 版本号
13 v1
14 版本号

注意:合并记录时,不要将 push 到远程的版本一起合并,后面处理很麻烦。

第2种应用场景
将支线合并到主线上

1 // 原来主线和支线是两条线
2 C1 --- > C2 --- > C4 --- > C5
3 | |
4 ------ > C3 -------
5 // 合并之后变为一条线
6 C1 --- > C2 --- > C3 --- > C4 --- > C5
1 // 1 先切换到支线
2 git checkout dev
3 // 2 执行 rebase 命令,在 master 中备份
4 git rebase master
5 // 3 切换到主线
6 git checkout master
7 // 4 接收 dev ( 备份接收数据 )
8 git merge dev

查看记录小技巧

1 // 查看历史记录
2 git log
3 // 附带图形模式查看历史记录
4 git log --graph
5 // 查看简洁版的历史记录 (每条记录只含 简易版本号、支线名称、版本名称)
6 git log --graph --pretty=format:"%h %s" // h 代表 hash 

第3种应用场景

1 // 在公司写的 v1 忘记上传 
2 // 回家写的 v2 上传
3 // 来到公司 不在使用 git pull origin dev (这会产生分叉)
4 git fetch origin dev
5 git rebase origin/dev // 这样不会产生分叉

注意:使用 git rebase 可能会产生冲突,先解决冲突,

然后 git add . ( 将冲突的文件修复完毕,在回到缓存区 )

最后再执行 git rebase --continue

beyond compare
快速解决冲突的软件

安装
在 git 中配置

1 git config --local merge.tool bc3 // --local 只在当前项目生效
2 git config --local mergetool.path 'user/local/bin/bcomp' // 这个路径是 compare 的安装路径
3 git config --local mergetool.keepBackup false // 解决冲突后不保留备份

使用过程
当产生冲突时,它会自动弹出来,并罗列出来,不在需要我们自己在文件里修改

多人协同开发流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6B7zfCPD-1623920962469)(C:\Users\14465\AppData\Roaming\Typora\typora-user-images\1587909115224.png)]

给当前版本 起标签

git tag -a v1 -m '第一版'

创建组织
邀请成员
在某个项目,在setting中设置权限

在分支的基础上再创建一个分支

1 // 1 先切换到 dev 分支
2 git checkout dev
3 // 2 创建并切换到 ddz 分支
4 git checkout -b ddz // checkout -b == > 先 branch 再 checkout
5 // 然后在这个分支上开发新功能

代码 review

 1 // 当 ddz 开发完毕
 2 // review 实现方式 
 3 // GitHub 的 pull request (merge request)
 4 // 小领导 在 github 的项目进行配置
 5 // setting -- > Branches 
 6 // 选中 requier pull request 然后再下面的选项 选中 一个人 其它的选项先不用处理
 7 
 8 // 小弟提交
 9 // 在项目的 下方 有个 New pull request 按钮,点击
10 // 选中 base:dev <= compare:ddz // 在下面有标题框和描述信息框 自己输入信息即可
11 
12 // 小领导会接收到 pull request 请求
13 // 领导可以通过两种方式,检查代码,一:在网站上检查;二、pull 代码到本地,在本地使用工具检查。
14 // 领导检查完代码,点击 perge pull request , 
15 // 然后勾中提示框,在点击 Comfirm merge , 完成 review 操作 
16 // 此时查看 dev ,就是 review 之后的 dev 了

fork 源代码

1 // 如果想要copy 别人的源代码
2 // 点击别人的仓库
3 // 点击右上角的 Fork 按钮,将别人的源代码 copy 到自己的远程仓库
4 // 然后就可以在本地 git clone 这个源代码了
5 
6 // 如果发现别人源代码的错误 
7 // 可以 copy 到本地
8 // 修复完之后
9 // 申请发送给原作者 (pull request)

配置文件存放位置

1 // 例 git config --local user.name '李世粱'
2 // 第一个配置文件 --local 项目配置文件 : 当前项目下的 /./.git/config
3 // 第二个配置文件 --global 全局配置文件 /user/.gitconfig
4 // 第三个配置文件 --system 系统配置文件 /etc/.gitconfig //需要 root 权限
5 // 优先级 1 > 2 > 3
6 
7 // 应用场景
8 // 1 用户名 密码
9 // 2 bc3 (解决冲突软件的配置)

git 免密登录
URL 体现

1 // 原来的URL
2 https://github.com/lishiliang666/dbhot
3 // 修改后的URL
4 https://用户名:密码@github.com/lishiliang666/dbhot
5 // 在推送仓库时,使用
6 git remote add origin https://用户名:密码@github.com/lishiliang666/dbhot
7 // 在配置文件种修改
8 // 下次再创建项目 可以在项目名后面加 .git 例 dbhot.git

SSH ***

 1 // 1 在自己电脑上生成公钥和私钥 ( C:\Users\~\.ssh\id_rsa.pub ) ~ 就是 user
 2 // 打开命令窗口 输入 ssh-keygen 回车 回车 
 3 // 注意:当要生成新的公钥时,先删除原来的公钥,在上面的第二个回车处,输入 y 加三个空格 在点击回车
 4 // id_rsa.pub 公钥 id_rsa 私钥
 5 // 打开 id_rsa.pub copy 里面的内容
 6 
 7 // 2 在 github 上 配置公钥
 8 // 打开 github
 9 // 点击右上角头像
10 // 点击 Settings
11 // 点击 SSH and GPG keys
12 // 点击 New SSH key 按钮
13 // 将 id_rsa.pub 里的内容 复制到 key 的内容框中
14 // 在 title 框 输入 我的电脑
15 // 点击 Add SHH key
16 // 在 git 本地文件配置 ssh 地址 
17 // git@github.com:lishiliang666/dbhot.git 
18 // 点击自己的仓库,点击右边的下载按钮,将 https 切换到 ssh 即可看到该 ssh 地址 

git 自动管理凭证

 1 // window 不知道在哪
 2 1
 3 git 忽略文件
 4 // 如果在项目中,有些文件,你不希望被 git 管理
 5 // 在当前项目下 创建 .gitignore 文件 
 6 // 将不想被管理的文件名,写入 .gitignore 文件里
 7 // 例 a.h 单个文件
 8 // *.h 所有以 .h 为后缀的文件
 9 // .gitignore 这个文件本身
10 // files/ files 文件和其下面的所有文件
11 // !a.h 将 a.h 排除 
12 // *.h !a.h 就是除了 a.h 外的所有以 .h 为后缀的文件,将不在被管理
13 // 可以将 files 文件下的某个文件 加上 ! 让其重新被管理
14 // 可以去 github 查找 gitignore 人家已经把每种服务器应该要屏蔽的文件类型帮我们列出来了
15 // 项目中一定要加 gitignore

git 任务管理
issues 文档以及任务管理
wiki 项目文档说明
在 git 使用中出现的错误
一 在连接远程仓库时 ,出现错误

1 $ git remote add origin git@github.com:lishiliang666/Typora.git
2 fatal: remote origin already exists.
3 // 致命:远程来源已经存在。 origin 别名以存在

解决方案 删除该别名 在重新创建

1 git remote rm origin // 删除
2 git remote add origin git@github.com:lishiliang666/Typora.git // ok

// *.h !a.h 就是除了 a.h 外的所有以 .h 为后缀的文件,将不在被管理
// 可以将 files 文件下的某个文件 加上 ! 让其重新被管理
// 可以去 github 查找 gitignore 人家已经把每种服务器应该要屏蔽的文件类型帮我们列出来了
// 项目中一定要加 gitignore

 1 ## git 任务管理
 2 
 3 ### issues 文档以及任务管理
 4 
 5 ### wiki 项目文档说明
 6 
 7  
 8 
 9  
10 
11 # 在 git 使用中出现的错误
12 
13 ### 一 在连接远程仓库时 ,出现错误
14 
15 ```shell
16 $ git remote add origin git@github.com:lishiliang666/Typora.git
17 fatal: remote origin already exists.
18 // 致命:远程来源已经存在。 origin 别名以存在

解决方案 删除该别名 在重新创建

1 git remote rm origin // 删除
2 git remote add origin git@github.com:lishiliang666/Typora.git // ok

 

posted on 2022-07-13 14:01  一杯清酒邀明月  阅读(183)  评论(0编辑  收藏  举报