2021-01-26

Git学习笔记

在这里插入图片描述

一 git基本工作流程

git工作区域图:
工作区 -> 暂存区 -> Git仓库
在这里插入图片描述

二 Git实验前提

1.账户初始化

配置账户名: git config --global user.name “GitHub用户名”

配置账户邮箱:git config --global user.email “GitHub邮箱”
再使用git init进行初始化

2.对文件相关操作

创建文件:touch 文件名(文件名:形如hello_world.cpp,README.md这种)
打开文件:cat 文件名
修改文件:vim 文件名 -》 保存(Esc+Z+Z) {在修改文件时切记要把底下的状态变一下比如变成INSERT,按0即可更换状态}

3.Git关键操作

查看当前工作状态命令:git status
提交文件到暂存区:git add 文件名
文件从暂存区提交到仓库:git commit -m "具体操作"
注:
文件从暂存区提交到仓库的这些具体操作如下(这些具体操作相当于是自己给的一个注释):
1.提交文件名文件,如git commit -m “提交README.md文件”
2.删除文件名文件,如git commit -m “删除README.md文件”
3.重命名文件名文件,如如git commit -m “重命名README.md文件”
4.其他自己都可以给注释

三 Git基本操作

1.查看历史提交记录

查看历史提交记录:git log
查看简约版历史提交记录:git log --pretty=onelinegit log --onelinegit reflog

2.前进后退版本号

HEAD控制的方式有三种:
(1) 使用版本号进行操作(常用):
命令格式为:git reset --hard 版本号
(2) 使用^符号进行操作,只能后退:
命令: git reset --hard HEAD^ 表示后退一个版本
命令: git reset --hard HEAD^^ 表示后退两个版本
(3) 使用~符号进行操作,只能后退:
命令: git reset --hard HEAD~ 表示后退一个版本;
命令: git reset --hard HEAD~~ 表示后退两个版本;
命令: git reset --hard HEAD~5 表示后退5个版本;
命令: git reset --hard HEAD~n 表示后退n个版本;

如果想查看那个版本对应的文件内容,直接打开即可

3.查看版本之间的差异

对于版本之间同样文件内容比较可以使用命令 git diff 进行操作
比较文件的差异有多种情况:
第一种:工作区和暂存区文件比较,命令格式为: git diff 文件名
第二种:工作区和Git仓库文件比较,命令格式为:git diff HEAD 文件名
第三种:工作区和Git仓库 的 不同版本文件比较,命令格式为:git diff 版本号 文件名
注:不添加文件名进行比较时,将自动比较多个相同文件名文件。

4.删除和重命名文件

(1)git删除文件

git删除文件用到的命令有以下几种情况:
命令:rm 文件名 表示删除的是工作区文件。如果想再接着删除暂存区里的文件,输入git add 文件名即可。如果再想删除仓库里的文件用git commit -m "具体操作"即可
命令:git rm 表示删除的是工作区和暂存区的文件。如果再想删除仓库里的文件用git commit -m "具体操作"即可
命令:git rm -f 文件名 表示当工作目录和暂存区的同一个文件存在不同内容时,执行命令 git rm -f 文件名 就可以强制删除工作区和暂存区的文件。如果再想删除仓库里的文件用git commit -m "具体操作"即可
命令:git rm --cached 文件名 表示只删除暂存区的文件并且保留工作目录的文件。如果再想删除仓库里的文件用git commit -m "具体操作"即可

(2)重命名文件

重命名文件有来两种情况:
命令:mv 旧文件名 新文件名 表示将工作区文件重命名,暂存区和仓库文件名不变。如果想再接着重命名暂存区里的文件,输入git add 文件名即可。如果再想重命名仓库里的文件用git commit -m "具体操作"即可
命令(常用):git mv 旧文件名 新文件名 表示将工作区和暂存区的文件重命名,仓库文件名不变。如果再想重命名仓库里的文件用git commit -m "具体操作"即可

四 分支管理

1.创建分支与查看分支

创建分支命令格式:git branch 分支名

查看分支命令格式:git branch -v
也可以通过命令:git log --decorate --all --oneline --graph 对各个分支进行图形化显示。

假设目前工作区和仓库有 Tom.txt , hello_world.cpp , README.md 四个文件,现在需要建立分支 feature_sum , 然后查看该分支。

创建分支,使用命令:git branch feature_sum ,然后通过命令:git branch -v 查看该分支,也可以通过命令:git log --decorate --all --oneline --graph 图形化显示分支

2.切换分支

切换分支命令格式:git checkout 分支名

3.合并分支

假设需要将其他分支合并到master分支上,则合并分支前,首先切换到master分支上,然后将其他分支合并到master分支上即可。
合并分支命令格式:git merge 分支名
注意: 若将 feature_sum 分支合并到master分支(其他分支合并到master分支),此时当前分支状态需要在master分支下。

4.解决合并分支产生的冲突

合并分支的时候可能会产生冲突,下面举一个例子进行说明:
上一个操作合并分支,则master分支下的文件和feature_sum分支下的文件相同。假设用户A对master分支下 test_sum.cpp 文件进行修改然后提交到仓库,用户B对feature_sum分支test_sum.cpp文件进行修改然后提交到仓库。用户A和用户B对同一个文件进行修改,那么修改的文件内容在合并时会产生冲突,系统不知道该如何操作,则会出现报错,此时就需要人工修改文件来解决冲突。

例子:
合并分支(feature_sum分支合并到master分支)
在这里插入图片描述

如上图所示,合并分支时出现冲突,提示 test_sum.cpp 文件出现冲突,并且此时还处于合并状态,这是需要解决冲突,通过命令: vim test_sum.cpp 打开该文件查看冲突,如下图所示:
在这里插入图片描述
test_sum.cpp 文件中 <<<<<<< HEAD 提示符 、======分隔符和 >>>>>> feature_sum提示符 删除,然后修改内容,如下图所示:
在这里插入图片描述
接着,修改文件后保存退出 ——> 解决冲突后的文件提交到暂存区 ——> 解决冲突后的文件提交到仓库,结果如下图所示:
在这里插入图片描述
下面对解决合并冲突进行总结:

解决冲突的步骤(当前一直处于合并状态):

第一步:编辑文件,删除/修改冲突部分,保存退出;
第二步:重新提交文件至暂存区: git add 文件名
第三步:重新提交文件至仓库: git commit -m “提交描述”
注意: 此时commit后不能带具体的文件名,因为当前一直处在合并状态,默认提交的是当前冲突的文件。

5.删除分支

合并分支结束后,可以删除分支,删除分支命令格式:git branch -d 分支名

6.分支管理总结

分支管理中常用的命令如下:

1.创建分支命令格式:git branch 分支名
2.查看分支命令格式:git branch -v
3.切换分支命令格式:git checkout 分支名
4.合并分支命令格式:git merge 分支名
注: 需要注意当前所在分支
5.删除分支命令格式:git branch -d 分支名

五 本地库管理远程库

1.本地库和远程库

本地库(Git仓库)可以管理远程库(GitHub),一般地操作有pull, clone 和pull 操作,在实际协作开发项目是一般会有两种情况:

第一种是团队之间互相认识,共同开发项目。这样可以建立私人项目或者公开项目,然后邀请项目成员共同开发,这样其他人将看不到团队的项目。
例如:如下图所示,开发者A在GitHub上新建仓库,接着新建一个分支然后邀请团队成员开发者B在这个分支上提交代码。开发者B在本地库写好的项目代码推送到远程库的分支上,然后可以发送请求给开发者A,要求审核代码并合并分支,开发者A可以将代码拉取下来查看。如果觉得代码可以,那么直接合并代码即可,如果觉得代码不可以,要求开发者B进行修改知道合格为止。

第二种是开源的项目,全网都可以看到,任何开发者都可以对你的项目提出建议和修改,达到共同开发的目的。
例如:如下图所示,开发者A在GitHub上新建仓库,然后开发者C在GitHub上无意间看到了这个仓库,觉得挺好就Fork该仓库,于是开发者C就会出现该仓库。开发者C将这个仓库拉取(pull)本地库进行改进然后推送(push)到自己的远程库上,此时开发者A的仓库不会变化。
如果开发者C想要将自己的代码合并到开发者仓库中就要提出请求,然后开发者A进行审核,如果通过开发者A觉得可以就进行合并。

在这里插入图片描述

以上两种情况和GitHub协同开发基本类似,不同的是本地库和远程库之间需要进行拉取(pull)和推送(push)操作,pull和push操作也是本地库管理远程库的关键。下面就简单介绍本地库文件推送(push)到远程库、远程库文件拉取(pull)到本地库等基本操作。

本地库就是开发者将文件提交到Git仓库,此时Git仓库文件还在本地电脑。通过Git仓库可以管理GitHub远程仓库,例如Git仓库可以推送到GitHub仓库上,共享到社区,其他开发者可以看到这个仓库,然后可以提出Bug和改进建议达到共同开发的目的。

2.本地库管理远程库的基本操作

(1)本地库推送(push)到远程库(GitHub)

本地库推送到远程库命令格式为:git push origin分支名

现在开发者A将本地库推送到GitHub仓库上, 由前面的操作可知,teamwork仓库的地址为:
https://github.com/luohuayouyi666/teamwork.git

由于地址太长不太好操作,可以用一个简单的名称(别名origin)代替复较长的地址,
起别名的命令为格式为:git remote add origin 远程库地址
还可以通过命令:git remote -v 查看当前的别名 判断新名称(别名)是否更新成功。

注意:
更改远程地址别名命令:git remote add origin GitHub仓库地址
删除本地指定的远程地址别名命令:git remote remove origin

如果拉取失败则通过语句git pull origin master --allow-unrelated-histories

(2)远程库克隆(clone)到本地库

远程库克隆(clone)到本地库命令格式为:git clone 远程仓库地址

远程库克隆到本地库的效果:
1.完整的把远程库下载到本地库;
2.初始化本地库;

(3)远程库拉取(pull)到本地库

远程库拉取(pull)到本地库命令格式为: git pull origin master ,origin为远程库地址的别名。

将远程库文件更新到本地库,本地工作区文件将会更新,如果本地有和远程库同名的文件,将会强制更新本地库文件。

如果pull失败,则通过语句git pull origin master --allow-unrelated-histories 强制拉取(pull)
当然也可以通过命令: git fetch origin master 将远程库文件抓取到本地库缓存区,此时本地库和工作区文件并没有被合并,
通过命令:git checkout origin/master 切换到本地库缓存的分支上,然后通过命令: cat 文件名 来查看文件内容

接下来可以将缓存区分支文件和本地库文件进行合并,通过命令:git checkout master切换到本地库分支上,然后再将缓存区的分支合并到本地库:命令为:git merge origin/master

注: pull操作相当于 fetch + merge 操作。

3.协作开发项目

GitHub协作开发项目可以分为团队协作开发和开源项目协作开发,前者项目成员之间互相认识,后者成员之间可能不认识。其实二者在操作时本质上的区别并不大。协作的主要几个步骤为:
创建分支——>提交代码——>发送请求——>讨论与审核——>合并分支

附:参考

参考自TechArtisan6的Git学习专栏

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
2021-03-26 20:54:33,596 - Model - INFO - Epoch 1 (1/200): 2021-03-26 20:57:40,380 - Model - INFO - Train Instance Accuracy: 0.571037 2021-03-26 20:58:16,623 - Model - INFO - Test Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Best Instance Accuracy: 0.718528, Class Accuracy: 0.627357 2021-03-26 20:58:16,623 - Model - INFO - Save model... 2021-03-26 20:58:16,623 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 20:58:16,698 - Model - INFO - Epoch 2 (2/200): 2021-03-26 21:01:26,685 - Model - INFO - Train Instance Accuracy: 0.727947 2021-03-26 21:02:03,642 - Model - INFO - Test Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Best Instance Accuracy: 0.790858, Class Accuracy: 0.702316 2021-03-26 21:02:03,642 - Model - INFO - Save model... 2021-03-26 21:02:03,643 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 2021-03-26 21:02:03,746 - Model - INFO - Epoch 3 (3/200): 2021-03-26 21:05:15,349 - Model - INFO - Train Instance Accuracy: 0.781606 2021-03-26 21:05:51,538 - Model - INFO - Test Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,538 - Model - INFO - Best Instance Accuracy: 0.803641, Class Accuracy: 0.738575 2021-03-26 21:05:51,539 - Model - INFO - Save model... 2021-03-26 21:05:51,539 - Model - INFO - Saving at log/classification/pointnet2_msg_normals/checkpoints/best_model.pth 我有类似于这样的一段txt文件,请你帮我写一段代码来可视化这些训练结果
02-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值