美文网首页
【代码管理,从小抓起】(一)

【代码管理,从小抓起】(一)

作者: 陈有朴 | 来源:发表于2022-06-27 13:47 被阅读0次

熟练使用Git & Github,方便实验室共用分析脚本。
本篇文章整理了自己的一些Git笔记。

什么是Git?

一个免费和开源的分布式版本控制系统,旨在快速 & 高效地处理从小型项目到大型项目地所有项目。

功能概述:

  • 记录不同时间点的文档状态
  • 还原对应版本的文档(将编辑过的文档复原到以前的状态)& 显示编辑前后的内容差异

一些基本概念

数据库(Repository)

概述:记录文件或目录状态的地方,存储着内容修改的历史记录。可以分为:远程数据库,本地数据库(个人使用)

数据库将文件和目录修改的历史记录放在对应的目录下。

暂存区和工作区

暂缓区,位于.git/下,为git add文件添加修改的目的地,被称为index或stage。

git commit是将暂缓区中的所有内容提交到当前分支。

工作区,为.git文件夹存放的位置。

初始配置

Git属于分布式版本控制系统,因此每一个用户都需要自报家门:Github ID和Github注册时所使用的邮箱,

使用--global参数,代表此机器上的所有Git仓库均使用该配置。

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

仓库初始化基本操作

1、初始化仓库

功能概述:将当前目录变为Git可以管理的仓库,并在当前文件夹下生成一个.git文件夹

使用命令:git init

一些注意事项,

  • Git只能跟踪文本文件的改动(e.g. .md文件、.txt文件。不能修改Word是因为其为二进制文件)
  • Git能报告文本文件改动的准确信息(e.g. 第n行进行了修改),但对于图片其只能报告改变的大小
  • 不建议使用Windows自带的记事本编辑任何文本文件 —— 自动在文件开头添加0xefbbbf的字符

本地仓库管理操作

1、添加文件到暂缓去

使用命令:gti add <filename>

# 示例代码
echo "git is great" > readme.txt
git add readme.txt

2、提交文件到仓库(将add选定文件添加到仓库)

使用命令:git commit <message>

一些参数,

-m      # 后接本次提交的说明语句
        # e.g. git commit -m "wrote a readme file"

一些注意事项,

  • git commit执行成功后,会显示文件的改动信息,例如:1 file changed2 insertions(插入了2行内容)等

3、查看仓库动态

使用命令:git status

4、查看文件动态

使用命令:git diff <filename>

5、查看仓库历史

使用命令:git log

一些参数,

--pretty=oneline    # 单行显示

6、回退文件

使用命令:git reset <filename>

一些参数,

--hard   # 后接版本号。
         # e.g. HEAD代表上一个版本,HEAD^代表上上个版本,HEAD~100代表上一百个版本

一些注意事项,

  • 不需要输入全部的版本号,开头几位即可

7、撤销修改

使用命令:git restore <filename>

8、删除文件

使用命令:git rm <filename>,即将版本库中的对应文件给删除。

远程仓库管理操作

Github —— 全球最大的同性交友网站,用于充当24小时都开机的服务器,存放原始仓库。

克隆和推送自己的仓库,需要先配置SSH密匙 —— 为了确保是本人对仓库进行操作。

1、建立本地仓库与远程仓库的连接

使用命令:

git remote add origin git@github.com:username/reponame.git

2、将本地仓库内容推送至远程库上

使用命令:git push

一些参数,

-u | --set-upstream   # 

示例代码,

git push -u origin master   # 将本地的master分支推送到远程的origin分支,并将本地和远程的master分支进行关联

3、删除远程库

使用命令:git remove rm

示例代码,

# 推荐在删除之前先查看下远程库信息
git remote -v
git remote rm origin

4、克隆远程仓库

使用命令:git clone <reponame.git>

一些注意事项

  • 关联远程库的时候,需给其指定一个名字。默认/习惯使用origin
  • 在第一次使用git push -u origin master之后,此后只使用git push origin master即可(已完成了关联)

示例

1、提交文件到仓库 & 回退文件至初始状态

# 提交第一个版本的文件
echo "git is great" > readme.txt
git add readme.txt
git commit -m "og"


# 提交第二个版本的文件
echo "git is very great" > readme.txt
git add readme.txt
git commit -m "second"


# 查看两个文件之间的区别
git log
# Author: 
# Date:   Sun Jun 26 16:32:20 2022 +0800
# 
#     second
# 
# commit bb9ed7df4f625d65f7cedbb6c19d4bba8b94a26a
# Author: 
# Date:   Sun Jun 26 16:30:55 2022 +0800
# 
#     og
git log --pretty=oneline # 单行显示版本


# 文件版本回退
git reset --hard HEAD^

一些说明,

  • 使用git log得到的commit信息为Git创建的提交信息(版本号)

2、理解“Git只管理修改”

cat readme.txt
# git is great

# 第一次修改文件内容
echo "git is very great" >> readme.txt
# 添加文件到暂存区
git add readme.txt
# 第二次修改文件内容
echo "git is very very great" >> readme.txt
# 添加文件到仓库
git commit -m "understand how changes work"

# 查看仓库动态
git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git restore <file>..." to discard changes in working directory)
#         modified:   readme.txt
# 
# no changes added to commit (use "git add" and/or "git commit -a")

git status中,得到的结论是 —— 第二次的修改没有被提交。原理如下:

第一次addreadme.txt添加到暂存区,虽然进行了第二次修改,但是最后提交的是已放入暂存区中的、第一次修改过的文件,而非第二次修改的文件(因其未被添加到暂存区)。

3、从本地仓库中删除文件

# 删除文件
rm -rf readme.txt

# 查看文件状态
git status
# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git restore <file>..." to discard changes in working directory)
#         deleted:    readme.txt
# 
# no changes added to commit (use "git add" and/or "git commit -a")

# 将版本库中的文件也删除
git rm readme.txt

# 将删除文件复原(版本库中存放了原始文件)
git restore readme.txt

4、上传本地仓库到Github

git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:username/reponame.git
git push -u origin main

相关文章

  • 【代码管理,从小抓起】(一)

    熟练使用Git & Github,方便实验室共用分析脚本。本篇文章整理了自己的一些Git笔记。 什么是Git? 一...

  • 【代码管理,从小抓起】(二)

    什么是分支? 廖雪峰老师[https://www.liaoxuefeng.com/wiki/89604348802...

  • 教育从小抓起

    大宝一早跟我说喉咙痛,还打喷嚏,我马上担心他还能不能跟我去旅游。 他看到早餐有博撑吃又想吃,我跟他说喉咙痛不能吃,...

  • 圈子,从小抓起。

    家里的小朋友最近开始唱流行歌曲,谈论这个明星那个明星,像极了我青春的样子,同时也感觉到了危机感,关注明星就意味着从...

  • 品质从小抓起(24)

    格格 : 亲亲 我们橙宝慢慢长成形了,离成熟说远也远,说近也很快。 这个时候,你要密切关注我们的长势,品质要从娃娃...

  • 教育得从小抓起

    最近和孩子们打交道比较多,见到了各种各样的孩子,我是比较喜欢孩子的,但是有的孩子真的是让人头大。 有的孩子乖巧,有...

  • 从小抓起的“红”

  • 性教育从小抓起

    性侵,不再是一个新鲜的词汇,丧心病狂的爷爷性侵七岁孙女,那么,我们该如何给孩子做好性教育工作呢? 从中国人含蓄的角...

  • 好习惯,从小抓起

    今晚陪女儿写作业时,发现孩子很多题会,但是因为粗心而失了好多分。对于这种情况,我很是苦恼。因为作为一名老师,在平时...

  • 财商思维从小抓起

    小朋友的暑假不只有补课,更有好玩的财商桌游!期待已久的现金流游戏亲子版终于拉开帷幕啦…… 小孩们都很聪明,一开始也...

网友评论

      本文标题:【代码管理,从小抓起】(一)

      本文链接:https://www.haomeiwen.com/subject/ffonvrtx.html