总说

给我的感觉是: 早用早享受, 晚用多受罪.
比如, 我们改代码时候, 经常会有多个想法, 这些想法的改的代码会有冲突. 如果在以前, 都直接把代码复制两份到不同文件夹下, 分别进行更改.
还记得被 xxx_add1, xxx_remove2等等的恐惧吗? 其实这些都可以放在一个文件夹下, 而且相互改的代码不会影响. 这就需要 Git这个很神奇的东西.

附加

基本上windows上还是用WinEdit挺好用的。这里有一个破解版(10.2版本的), https://www.52pojie.cn/forum.php?mod=viewthread&tid=583476 完全靠谱!

下面讲的东西包括:

  1. 建立一个github仓库, 并初始化
  2. 文件更改的记录以及提交
  3. 建立多个分支(不同版本的代码通过分支控制)
  4. 分支的合并
  5. 合并产生冲突的解决方法

这里稍微说一下, repository是仓库的意思, 其实就是指一大堆项目文件, 里面所有的更改都会被记录, 那么这样的项目我们称之为 仓库.

新建一个github仓库

左上角的"+", 然后 “New repository”, 出现

我们这里建立一个私人仓库(这个号是我的第二个小号,基本弃用了), 此时出现
下面其实是三种建立仓库的情况, 分别针对普通的项目(还没用git追踪更改), 以及本地的仓库(已有git), 从其他仓库来导入.
现在按我的来,别看上面了~ ~
我们先建立一个文件夹

mkdir my_repo
cd my_repo

此时我们进入了一个空目录, 这时候, 直接初始化

git init

我们看看现在文件夹里面有啥

ll

我们发现多了一个隐藏文件夹 .git/ 没错, 这个文件夹主要负责仓库的更改的追踪

这时候我们往里面加点东西.

vim readme.md

里面写点东西, 比如 It is my repo, ready to make some surprise!
然后我们键入

git status

git status是查看仓库的状态, 我们看到
这里出现, 这里说, 有未跟踪的文件, 需要用git add加上去.

git add readme.md

我们再来看看现在的状态, git status

这个说明, 我们让仓库可以追踪我们这个文件了, 并且由于之前readme不在git的追踪列表中(因为之前仓库的没文件啊,哈哈), 所以这时候出现 “更改”.
注意一下, 我们这里 git add 之后, 我们还有进行 提交

git commit -m "add readme"

注意有-m 这个参数.

git commit是把本地更改, 进行作为一个提交进行存储. 存储完之后, 我们再看git的状态, 已经是干净的工作区了.
接下来我们要把提交推送 到网上.
首先我们得确定origin, 就是默认推送到哪个网址

git remote add origin https://github.com/LambdaWill/my_repo.git

附加操作,其实添加源之后, 可以去看看.git下面是不是多了什么东西.

vim .git/config


我们发现了这些信息, emmm
然后, 我们就推送呗.

git push -u origin master

-u 只在第一次提交需要加, 以后的提交不需要加. -u其实是指定origin为默认主机.
origin maser表示, 我们将该 分支推送到origin的master分支. origin就是我们之前加的那个网址.

此时我们的网页

强大的分支

我们可以建立不同分支, 从而对仓库的代码更改互不影响.

vim cal_twoMat.py
 import torcha = torch.randn(3,4)b = torch.randn(4,3)c = torch.mm(a, b)print(c)

一套操作走起,

git status
git add cal_twoMat.py
git commit -m "add cal_twoMat"

我们先提交上去

git push origin master

这时候, 你想, 感觉只把c 打印出来, 有点儿莫名其妙, 于是, 你进行更改. 但是原始的只把c 打印出来的代码版本又想保留. 此时我们新建一个分支.

git checkout -b "print_more_info"

git checkout切换分支的意思, 但是如果后面的分支是新的, 那么就是新建分支了.
我们再看看现在的分支

git branch


我们发现, 我们不仅建立了一个分支, 还自动切换到这个分支上去了. 现在我们在这个分支进行更改

vim cal_twoMat.py
import torcha = torch.randn(3,4)b = torch.randn(4,3)c = torch.mm(a, b)print('a: ')print(a)print('b: ')print(b)print('a mm b, get:')print(c)

运行一下, emm

yan@yan:~/my_repo$ python cal_twoMat.py
a:
tensor([[-0.8150, -0.3566,  0.0078,  1.6060],[-0.5543,  0.5904,  0.3476, -0.3242],[-1.1820,  2.2387,  0.5425, -0.9740]])
b:
tensor([[ 0.6056,  0.7839, -0.8740],[-1.4138, -2.0191,  0.0189],[ 0.5080, -0.1143, -0.7414],[ 0.6104,  0.3395,  0.7500]])
a mm b, get:
tensor([[ 0.9949,  0.6254,  1.9043],[-1.1917, -1.7763, -0.0052],[-4.2000, -5.8395, -0.0573]])

自我感觉良好, 提交一下

git status
git add cal_twoMat.py
git commit -m "print more info of matrix multiply"

然后我们推送到网上.

git push origin print_more_info

注意: 这里是推送到origin的 print_more_info分支, 一句话, 本地分支与源的分支是一致的. 如果是写成origin master会出错,
我们来看看网页的情况

这时候我们验证一下,是不是真的不会影响原来的代码啊(master分支)

git checkout master
vim cal_towMat.py

哇,神奇, 完全没变!

至此总结一下:

git status  检查分支状态
git branch  查看分支
git add some_file  将文件添加到仓库追踪里
git commit -m "some words"  将所有add的更改, 进行作为一次提交
git push origin some_branch  将提交 推送到源的某个分支
git checkout xxx   切换分支
git checkout -b xxx  新建一个分支

Git进阶

我们发现, print_more_info的修改得挺好的, master分支也应有这个更改. 这时候就是合并分支.** 我们这里是将 print_more_info 分支 merge到master分支上**.
直接网页弄就行…
这时候我们就可以看到这个pull request, 就是合并请求. 直接merge request, 出现

这时候检查网上的代码,已经是合并后的了.

这时候我们可以删除本地和远程的pritn_more_info分支,因为它的使命已经完成.

git branch -D "print_more_info"

这时候发现本地也只有一个分支了. 值得注意的是, 不能删除所在的分支. 这点没啥好说的.
远程分支可以通过网页版进行操作, 或者终端输入

git push origin --delete print_more_info

我们现在去看看一些仓库的情况呗. 我们找一个小的, 比如这个 https://github.com/pytorch/contrib/network
我们看到, 现在有3个合并请求, 并且看Network可以了解到, 有这些人fork了这个代码, 并且是往fork的代码进行了 推送的! 这些一个个点分别是 这些推送的时间, 并且都是有相关信息的. 也可以看到哪些人在哪个时间fork了代码, 并且哪些人往源仓库的推送被merge了~

到目前位置, 应该差不多了吧. 至于更多的操作, 等我有空再来写啊~ ~ 这是一个新的flag
之后要写: 如何解决冲突

日常科研使用Git指南相关推荐

  1. 每个人都应该学git,最新GitHub上git指南我不信你不会git

    转载地址:https://www.toutiao.com/i6848104869241291272/?tt_from=weixin&utm_campaign=client_share& ...

  2. git 原理详解及实用指南_如何编写良好的提交消息:实用的Git指南

    git 原理详解及实用指南 To create a useful revision history, teams should first agree on a commit message conv ...

  3. 【日常实用】git的简单使用

    前言:在日常的工作中,使用git是家常便饭了,对于新手来说,可能在使用方便还是存在这一些不熟悉,下面就介绍一些日常生活中经常用到的命令吧. git的下载和环境搭建可以看这篇博客,本文就从使用部分开始说 ...

  4. 码农日常生活之Git Gitlab Gitk

    文章目录 1.Git和Gitlab 2.Git新人课程 3.Git & Gitlab配置 3.1 设置git用户信息 3.1 生成RSA公私钥 3.2 将公钥添加到Gitlab 4.Git日常 ...

  5. Git指南-Git-flow开发流程

    Git-flow简介 简单来说,git-flow 就是在 git branch git tag基础上封装出来的代码分支管理模型,把实际开发模拟成 master develop feature rele ...

  6. 又有2名博士入选华为“天才少年”!学霸日常科研计划表曝光

    本文转自:募格学术 | 来源:中国基金报.双一流高校公众号 "江山代有才人出!"武汉大学也有博士入选华为"天才少年"了!该校两位90后少年--计算机学院2019 ...

  7. 代码托管从业者 Git 指南

    本文作者:李博文 - CODING 后端开发工程师 前言 六七年前,我机缘巧合进入了代码托管行业,做过基于 Git 支持 SVN 客户端接入.Git 代码托管平台分布式.Git 代码托管读写分离.Gi ...

  8. [Git]Git指南一 查看创建删除标签

    1. 查看标签 列出现有标签,使用如下命令: xiaosi@yoona:~/code/learningnotes$ git tag r-000000-000000-cm.cm v1.0.0 v1.0. ...

  9. 【git指南--命令大全】

    我看好多文章命令都记录得比较发散不够全面,这里还是把我自己的笔记分享出来,方便查阅. 文章目录 1. git config 作用域 --list 显示当前所有配置 配置 cd ~/.ssh 2. 初始 ...

最新文章

  1. 使用云开发以及vant组件库搭建的一个收账小程序
  2. .NET 项目 在 Visual Studio 各种版本间的转换
  3. Cache 工作原理、Cache 一致性,你想知道的都在这里
  4. Word转PDF及SWF在线浏览——Flash Paper
  5. 学习笔记(30):Python网络编程并发编程-Event事件
  6. 面向数据科学家的 Docker 最佳实践
  7. POJ-1195-Mobile phones
  8. 2021“数维杯”国际大学生数学建模竞赛D题思路
  9. android来电录音软件,通话录音软件来电录音
  10. 微信小程序抓包-夜神模拟器结合BurpSuite抓包(可用于现在最新版本微信)
  11. 单片机AD采样的几种算法
  12. if_attact中几个宏定义
  13. Python智能机械助理
  14. 无线分组网关系统解决方案(GGSN、PDSN)
  15. phpstorm9中文输入法不好用的解决方案
  16. 项管(十六)——文档管理、配置管理、知识管理、变更管理
  17. 一小时构建 IoT 音视频应用,声网发布灵隼物联网云平台
  18. 如何用统计学指导自己的生活?
  19. Vue UI 组件库(移动端常用 UI 组件库,PC 端常用 UI 组件库,Element UI基本使用,Element UI按需引入)
  20. SQL——JDBC练习题

热门文章

  1. Android短彩信源码解析-短信发送流程(一)
  2. (附源码)计算机毕业设计ssm党史知识竞赛系统
  3. 无人出租赛道洗牌开启?这家公司为什么会黄?
  4. R语言读取文件报错之二:Error in read.table(“xxxx.txt“, header = TRUE) : 列的数目比列的名字要多
  5. 计算机网络(6)应用层
  6. 扬帆致远跨境电商:跨境电商品牌如何锁定真实用户
  7. Python 制作朋友圈高逼格的九宫格图片
  8. 上传大文件超时upstream timed out ,nginx配置修改
  9. VS开发Qt应用时遇到“找不到VCRUNTIME140D_APP.dIl,无法继续执行代码”的错误
  10. Spring框架两大核心特征的基本理解