Git的正确使用姿势 | 青训营笔记

111 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天


什么是git?

Git is a free and open source distributed versioncontrol system designed to handle everything from small to very large projects with speed and efficiency.

前言

版本管理在开发中是非常重要并且必不可少的部分,进行版本控制可以记录一个或多个文件内容的变化,并且方便将来查阅特定版本以及对版本进行系统的修订,进行合适的版本管理能够有效提高项目开发进度。

在git之前,出现了SVN

相对来说SVN更加简洁,所有同时掌握 Git 和 SVN 的开发者都必须承认,Git 的命令实在太多了,日常工作需要掌握add,commit,status,fetch,push,rebase等,若要熟练掌握,还必须掌握rebasemerge的区别,fetchpull的区别等,除此之外,还有cherry-picksubmodulestash等功能,仅是这些名词听着都很绕。

在易用性这方面,SVN 会好得多,简单易上手,对新手很友好。但是从另外一方面看,Git 命令多意味着功能多,若我们能掌握大部分 Git 的功能,体会到其中的奥妙,会发现再也回不去 SVN 的时代了。

目前主要是使用Github和Gitlab,其中可以在自己的服务器上搭建Gitlab,更适合团队内部使用,Gitee相对来说主要是国内。

主要区别

  • 1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
  • 2、Git 把内容按元数据方式存储,而 SVN 是按文件: 所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
  • 3、Git 分支和 SVN 的分支不同: 分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
  • 4、Git 没有一个全局的版本号,而 SVN 有: 目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
  • 5、Git 的内容完整性要优于 SVN: Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

一、本地Git配置

1.1配置用户信息

  • Git bash here $ git config --global user.name "boom1999" $ git config --global user.email "lingzhicheng@zjut.edu.cn" $ git config --list

UserInfo

1.2生成SSH Key

  • Git bash here $ ssh-keygen -t rsa -C "lingzhicheng@zjut.edu.cn"

SSHKey

  • 添加SSH Key

    将提示位置(/c/Users/xxx/.ssh/id_rsa)的公钥(id_rsa.pub)内容复制粘贴至github > setting > SSH and GPG keys> key 注意不要弄混公钥和私钥 若只在某一个Repo中使用,可在此Repo中setting > Deploy Keys中添加公钥

DeployKeys

二、从本地上传Repositories

:memo:本地创建Repo

  • 新建目录/选择目录
  • Git bash here 进入命令行操作

    新建文件 $ mkdir 文件名 进入文件夹 $ cd 文件名

  • 初始化git仓库 $ git init
  • 查看文件内容检查是否配置成功 $ ls -la

至此git仓库初始化结束,默认叫master分支


  • 新建测试(dev)分支 $ git checkout -b dev
  • 检查git状态 $ git status

GitInit

  • 使用编辑器在文件夹中编辑内容,测试和执行
  • 提交文件至缓存区(用git add .提交目录下所有文件) $ git add index.md

GitAdd

  • 撤销缓存内容 $ git rm --cached index.md

GitRm

  • 发布版本 $ git commit -m 'This is a commit.'
  • 查看版本日志(--graph) $ git log

GitCommit

  • 将测试分支合并到主分支

    切换回主分支 $ git checkout master 执行合并操作 $ git merge dev 删除dev分支 $ git branch -d dev

GitMerge

Repo上传

  • 在Github上新建项目,复制生成项目对应的SSH地址

GitDemo

$ git remote add origin git@github.com:boom1999/gitdemo.git

GitDemoUpload

  • 第一次推送本地分支(+u将本地和远程分支关联) $ git push -u origin master
  • 以后推送本地分支 $ git push origin master
  • 推送其他分支(如dev) $ git push origin dev

GitRemote

若有提示👇,请参照上文配置SSH Keys

ERROR: Permission to boom1999/gitdemo.git denied to deploy key
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

三、从远程clone Repositories到本地

  • 这是第二种方式,即现在GitHub上创建项目,或从已有的项目clone到另一台机器。
  • 在Github上新建项目,复制生成项目对应的SSH地址 $ git clone git@github.com:boom1999/gitdemo.git $ cd gitdemo $ ls -la