生物信息基础:实用Git命令,掌握这些就够了

我发现有搞了几年生信的朋友还不会用Github管理代码,这不免令人意外。我一直强调基础知识的重要性,而这些知识又是可以在短时间内掌握的。Github管理平时写的代码,要用到Git命令。虽然官方Git命令非常多,但我们只要掌握常用的几个能干活就好了。

作为半个IT人,写代码是工作日常,如何进行代码版本控制及托管,本文介绍一下我的最佳实践,其实很容易。

工作或学习过程中写的代码,存在本地的话容易丢失,也不方便与他人进行交流。

我一般把代码托管在Github网站上,这样既解决了代码备份问题,又方便与他人进行交流。

有人可能会问,如果我只想托管代码,不愿意让别人看到呢?有办法,Github上的代码仓库分为公开和私有两种,公开的所有人都可以访问,私有的只有自己才能访问。

之前私有仓库是收费的,需要绑定一张能支付美元的信用卡进行扣费,我记得一年大概是400多接近500元人民币,这不便宜,也难住了一些没信用卡的用户。

不过自从微软收购Github后,私有仓库免费了,感谢微软。

一、基本用法

要利用Github来托管代码,就要先学习一下Git语法。关于Git语法的学习,那真是多了去了,够写几本书。但实际上本人这么多年实践下来,其实最常用的就几个命令。

我的工作流程一般是这样的:

  1. 在Github上创建项目仓库:先填写仓库的名字(Repository name*,必须),然后填写项目描述(Description,可选),其次“Add a README file”复选框打钩,点击“Create repository”

  2. 将仓库clone到本地,如git clone git@github.com:jianzuoyi/learngit.git

  3. 代码编写,查看工作区状态,git status

  4. 将代码添加到暂存区git add <file>, <file>是文件名,git add .代表添加当前目录的所有修改到暂存区

  5. 提交修改,git commit -m <comment>,<comment>表示给本次提交添加一个注释,最好认真填写,以便将来知道本次提交到底做了什么修改

  6. git push,代码推送到远程仓库,至此就完成了简单的代码版本控制和远程托管,非常简单

可见,git常用的命令也就是:

git clone
git status
git add
git commit
git push

当代码仓库已经存在于本地,要继续工作时,先git pull将远程仓库的最新版本拉到本地,修改后再git statusgit addgit commitgit push

熟练掌握这几个命令,已经能应付80%的工作需求了,这也符合二八法则,即掌握20%的命令,完成80%的工作,其他命令需要时再去查。

下面我们再来简单介绍一下Git进行版本控制的三个核心概念:工作区、暂存区和版本库。

  1. 工作区(Working Directory),即工作目录,就是项目文件所在的目录,如learngit。

  2. 暂存区(stage,或者index),故名思义,暂存工作区的文件修改,git add <file>就是将文件提交到暂存区

  3. 版本库(Repository),工作区中一个隐藏的.git目录,即是Git版本库,它记录了项目文件的所有修改记录,通过版本库,你可以随时将文件的内容恢复成之前的某个版本

这里解释一下,为什么要在版本库与工作区之间增加一个暂存区呢,其实是有必要的。比如你一个文件修改了一大段内容,下面又要对这一大段内容进行修改,但是你又怕改错,这时候不妨git add <file>暂存一下,然后继续修改,如果要保存最新的修改结果,则再次git add <file>覆盖掉暂存区的内容,如果你改错了,则可以把文件恢复到暂存区中的状态。

暂存区的好处就是能够多次暂存,最后一次提交到版本库,这样能保证版本库的整洁,不至于那么混乱,试想你每做一点小的修改,就往版本库中提交一次,没有必要。

理解了工作区、暂存区和版本库的概念,那么平时工作,用到的相应命令也就好理解了。

  1. 本地还没有代码库,从远程仓库克隆一个到本地git clone

  2. 本地已经有代码库,修改代码之前先git pull与远程代码库同步

  3. 当我敲了一会代码,想看下工作区的状态,用git status

  4. 我想看下某个文件修改了哪些内容,git diff <file>,这个命令用于查看工作区的文件与暂存区的(如果有的话)或版本库中的对比

  5. 当我觉得需要暂存一下工作内容了,用git add

  6. 完成了修改,用git commit提交到代码库

  7. 我想查看现在的版本库情况,git reflog,或者git log --pretty=oneline

二、版本回退

以上介绍的都是工作一帆风顺的情形,但是有些时候,我们发现文件修改错了,想退回到修改前的版本,这要分多情况。

情况1:工作区修改了,还没add到暂存区,需要放弃修改,直接恢复为版本库中的版本

git checkout -- <file>

情况2:工作区修改了,已经add到暂存区,又再次修改了,需要恢复成暂存区的版本

git checkout -- <file> # 将工作区的内容恢复为最近的版本:暂存区的(如果有的话)或版本库中的

情况3:工作区修改了,已经add到暂存区,还没commit,需要恢复成版本库中的版本

git restore --staged <file>
git checkout -- <file>
# 分两步,先撤销暂存,再回到最新版本。如果不先撤销暂存,只checkout,则只会恢复成用暂存区

情况4:工作区修改了,已经commit到版本库,需要恢复成commit前的版本

git reset HEAD^ <file>  # 将上一个版本库中的内容放入暂存区
git checkout -- <file>  # 从暂存区恢复到工作区

情况5:在版本之间切换

git reset --hard HEAD^  # HEAD^, HEAD^^, HEAD~3
git reset --hard commit_id  # 在任意版本之间切换

HEAD指向的版本就是当前版本,Git允许在任意版本之间切换

三、远程仓库

版本管理的最佳实践就是先创建远程仓库,再克隆到本地进行修改,然后push到远程仓库。

但是有些时候代码已经存在本地了,需要将其推送到远程仓库,我通常是这样做的:

  1. 在Github上创建项目仓库:先填写仓库的名字(Repository name*,必须),然后填写项目描述(Description,可选),点击“Create repository”,注意”Initialize this repository with:“下面的几个复选框都不要选,直接点“Create repository”

  2. 这样会在弹出的页面中显示如下命令
    echo "# learngit" >> README.md
    git init
    git add README.md
    git commit -m "first commit"
    git branch -M main
    git remote add origin git@github.com:jianzuoyi/learngit.git
    git push -u origin main

  3. 切换到本地的代码目录,运行上述命令,就可以在当前目录创建代码仓库,并与远程仓库进行关联

四、分支管理

分支的作用:当一个功能还没开发完成时就提交代码,不完整的代码库会导致程序不能正常工作。如果等完成了再提交,又存在丢失每天进度的风险。

有了分支,就可以等开发完毕后一次性合并到原来的分支上。

查看分支:git branch

创建分支:git branch <name>

切换分支:git switch <name>或者git checkout <name>

创建+切换分支:git switch -c <name>或者git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

查看分支合并图:git log --graph --pretty=oneline --abbrev-commit

五、解决冲突

有时候从远程库pull时,可能会存在冲突,因为Git是一个分布式管理系统,你在公司电脑上有一份克隆,修改提交后push到了Github,然后你家里电脑也有一份克隆,当你要继续进行工作时,需要先运行git pull命令同步Github的最新版本,发现本地仓库已经有了更新,这时可能就会出现合并冲突。

这时你可以:

git stash,暂时清空工作区
git pull,执行合并
git stash pop,弹出暂存的工作区内容
git status,查看工作区状态
git diff <file>,查看具体文件的修改,从而决定是否用新版本,如果要保存新版本,则执行`git add, git commit`流程
git checkout -- <file>,如果要放弃文件的修改,则执行此命令

掌握以上这些命令,基本上就够用了。

关于简说基因

  • 生信平台

    简说基因创建了Galaxy中国社区(UseGalaxy.cn),致力于将生信分析都迁到云上。Galaxy中国为所有用户提供免费服务,热情欢迎广大生物医学研究者使用。

  • 生信培训

    简说基因的生信培训班,荣获学员的一致好评。如果你也对生物信息学感兴趣,欢迎来跟简说基因,学真生信

  • 生信分析

    我们能够承接所有 NGS 组学数据分析业务,包括但不限于 WGS / WES / RNA-seq 等。基因组组装、注释,以及各种重测序业务都可以与简说基因合作。

0bd1460079a205572cd26f6914c78ac9.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/147786.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch微调终极指南2:提升模型的准确性

作为一名机器学习从业者&#xff0c;你可能经常会发现自己处于这样一种情况&#xff1a;你正在针对特定任务微调预先训练的模型&#xff0c;但已经达到了无法进一步提高模型准确性的地步。 在本文中&#xff0c;我们将探讨可用于提高模型准确性的各种技术和策略。 这些方法旨在…

Python武器库开发-flask篇之session与cookie(二十六)

flask篇之session与cookie(二十六) 在 Flask 中&#xff0c;可以使用 session 来在不同请求之间存储和传递数据。Session 在客户端和服务器端之间交换&#xff0c;但是数据存储在服务器端。 Session 与 Cookie 的区别 session 和 cookie 都可以用来在不同请求之间存储和传递…

Vue3-readonly(深只读) 与 shallowReadonly(浅只读)

Vue3-readonly(深只读) 与 shallowReadonly&#xff08;浅只读&#xff09; readonly(深只读)&#xff1a;具有响应式对象中所有的属性&#xff0c;其所有值都是只读且不可修改的。shallowReadonly(浅只读)&#xff1a;具有响应式对象的第一层属性值是只读且不可修改的&#x…

使用requests库进行网络爬虫:IP请求错误的解决方法

目录 引言 一、了解requests库 二、遇到的问题 三、解决方法 1、随机化IP地址 2、减少请求频率 3、使用User Agent模拟浏览器行为 4、使用Cookies 四、注意事项 五、使用代理池 六、总结 引言 在利用Python的requests库进行网络爬虫操作时&#xff0c;我们有时会遇…

系列七、JVM的内存结构【堆(Heap)】

一、概述 一个JVM实例只存在一个堆内存&#xff0c;堆内存的大小是可以手动调节的。类加载器读取了类文件后&#xff0c;需要把类、方法、常变量放到堆内存中&#xff0c;保存所有引用类型的真实信息&#xff0c;以方便执行器执行&#xff0c;堆内存分为三个部分&#xff0c;即…

给openlab搭建web网站

1.作业的要求 2.访问www.openlab.com网站 2.1先准备好相关的包和关闭防火墙等操作 mount /dev/sr0 /mnt/ //先挂载 yum install httpd -y //下载htppd systemctl stop firewalld //关闭防火墙 setenforce 02.2然后开始配置文件和仓库 这一步比较关键,之前改了接口…

【OpenCV实现图像:OpenCV进行OCR字符分割】

文章目录 概要基本概念读入图像图像二值化小结 概要 在处理OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;时&#xff0c;利用传统的图像处理方法进行字符切分仍然是一种有效的途径。即便当前计算机视觉领域主导的是卷积神经网络&#xf…

DAO和增删改查通用方法-BasicDao

文章目录 一、BasicDao是什么&#xff1f;二、BasicDao分析三、BasicDao实现&#xff08;1&#xff09;BasicDao&#xff08;2&#xff09;ActorDao&#xff08;3&#xff09;TestDao 四、总结 一、BasicDao是什么&#xff1f; BasicDao:基础的数据对象&#xff0c;可以完成通用…

asp.net智能考试系统VS开发sqlserver数据库web结构c#编程计算机网页项目

一、源码特点 asp.net 智能考试系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 系统运行视频 https://www.bilibili.com/video/BV1gz4y1A7Qp/ 二、功能介绍 本系统使用Microsoft Visual Studio 201…

DeepMind发布新模型Mirasol3B:更高效处理音频、视频数据

Google DeepMind日前悄然宣布了其人工智能研究的重大进展&#xff0c;推出了一款名为“Mirasol3B”的新型自回归模型&#xff0c;旨在提升对长视频输入的理解能力。该新模型展示了一种颠覆性的多模态学习方法&#xff0c;以更综合和高效的方式处理音频、视频和文本数据。 Googl…

MATLAB 模糊设计器 构建 模糊系统

系列文章目录 文章目录 系列文章目录前言一、创建 FIS 结构二、定义输入变量三、定义输出变量四、定义成员函数五、定义规则库六、设计分析七、存储和修改设计八、导出 FIS总结 前言 本例演示如何使用 Fuzzy Logic Designer 应用程序交互式创建 1 型 Mamdani 模糊推理系统&…

在线文档频繁故障不稳定,其实可以自己搭一个Etherpad在线文档

正文共&#xff1a;1116 字 20 图&#xff0c;预估阅读时间&#xff1a;2 分钟 最近某头部云厂商多次出现故障&#xff0c;导致在线文档使用受限&#xff0c;虽说影响不大&#xff0c;但我们有必要考虑一下是否有备用方案。 在自己搭建在线文档方面&#xff0c;我们之前测试过部…

[Jenkins] 物理机 安装 Jenkins

这里介绍Linux CentOS系统直接Yum 安装 Jenkins&#xff0c;不同系统之间类似&#xff0c;操作命令差异&#xff0c;如&#xff1a;Ubuntu用apt&#xff1b; 0、安装 Jenkins Jenkins是一个基于Java语言开发的持续构建工具平台&#xff0c;主要用于持续、自动的构建/测试你的软…

uniapp基础学习笔记01

文章目录 本博客根据黑马教程学习uniapp一、技术架构二、创建项目2.1 Hbuilder创建2.2 插件安装2.3 微信开发者工具配置与运行2.3.1 简单修改基础页面 2.4 pages.json和tabBar2.4.1 pages.json与tabBar配置2.4.2 案例 3.1 通过命令行创建项目3.2 命令行运行项目3.2.1 命令行总结…

五、Linux目录结构

1.基本介绍 1.Linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录"r/"&#xff0c;然后在此目录下再创建其他的目录。 2.深刻理解linux树状文件目录是非常重要的 3.记住一句经典的话&#xff1a;在Linux世界里&#xff0c;一切皆文件…

某60区块链安全之整数溢出漏洞实战学习记录

区块链安全 文章目录 区块链安全整数溢出漏洞实战实验目的实验环境实验工具实验原理攻击过程分析合约源代码漏洞EXP利用 整数溢出漏洞实战 实验目的 学会使用python3的web3模块 学会以太坊整数溢出漏洞分析及利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理…

如何查看 class 文件的编译器版本

文章目录 原理分析解决方案其它解决方案javap 命令行工具 在平时的 Java 开发中&#xff0c;有时候我们需要知道某个 class 文件是由哪个版本的 Java 编译器编译生成的 原理分析 class 文件&#xff0c;即字节码文件&#xff0c;它有特定的二进制格式&#xff0c;这种格式是由…

十三、Linux文件目录指令

pwd 指令 基本语法&#xff1a;pwd &#xff08;功能描述&#xff1a;显示当前工作目录的绝对路径&#xff09; 应用实例&#xff1a;案例&#xff1a;显示当前工作目录的绝对路径 ls 指令 基本语法&#xff1a;ls 【选项】【目录或是文件】 常用选项 -a &#xff1a;显示当…

趣学python编程 (三、计算机基础知识)

如果不了解些计算机的基础知识上来就编程&#xff0c;往往容易“不识庐山真面目&#xff0c;只缘身在此山中”。因此对于计算机的一些基础知识&#xff0c;在开始编程前&#xff0c;需要理解和掌握。 计算机软件系统 计算机软件是控制计算机实现用户需求的计算机操作以及管理计…

[Linux] PXE批量装机

一、PXE批量装机简介 1.1 常见的三种系统安装方式 u启动安装&#xff1a;在U盘中下载相关的安装系统及镜像文件&#xff0c;u盘插机安装 光驱安装&#xff1a;将带有所需系统的光盘放进电脑服务器中&#xff0c;按照官方引导装机 网络下载安装&#xff1a;在网上下载相关镜…