Git学习笔记

git相关知识

参考 git基础

分布式版本控制系统

分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
分布式版本控制系统
更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

Git与其他版本控制系统的差异

其他版本控制系统,指CSV,Subversion,perforce,Bazaar等等,他们保存的信息是一组基本文件和每个文件随时间逐步累积的差异。
其他版本控制系统管理文件的方式,每个文件与初始版本的差异
Git保留每个(假设A文件被修改为A1文件,就完整的保存原A文件,新A1文件)文件的快照,然后将索引指向新文件,当需要回滚版本,只需要将索引回指就好了,其他系统需要在A+ Δ A 1 \Delta A1 ΔA1文件中做减 Δ A 1 \Delta A1 ΔA1操作。
可能Git将文件分解成细小单元,当每次更改少部分时,
Git存储所有版本的快照
Git在更新上传时,需要计算校验和。Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。 这是一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串,基于 Git 中文件的内容或目录结构计算出来。 SHA-1 哈希看起来是这样:

24b9da6552252987aa493b52f8696cd6d3b00373

实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。

三种状态

Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。 已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。
Git项目的三个工作区域
基本的 Git 工作流程如下:

  1. 在工作目录中修改文件。
  2. 暂存文件,将文件的快照放入暂存区域。
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

使用Git

参考 菜鸟教程-git教程

创建git仓库

在某目录中使用

git init

或使用

git  init folder

会在当前目录下或指定的folder目录下创建一个.git目录。里面 包含一些git的配置信息。
表明该文件夹已经被初始化为一个git仓库,但不表示目录下的文件被git跟踪。

为目录下文件添加跟踪

git add *.c
git add readme.md
git commit -m

将目录下的.c后缀文件和readme文件添加到跟踪。

克隆仓库

熟悉的clone命令

git clone

使用不同的协议clone

git clone git@github.com:fsliurujie/test.git         --SSH协议
git clone git://github.com/fsliurujie/test.git          --GIT协议
git clone https://github.com/fsliurujie/test.git      --HTTPS协议

使用git项目托管平台-GitHub

注册GitHub
由于本地仓库和远程仓库的交互是通过SSH协议,所以需要配置SSH。
生成SSH Key

ssh-keygen -t rsa -C "youremail@example.com"   #你的GitHub注册邮箱

后面的 your_email@youremail.com 改为你在 Github 上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在 ~/ 下生成 .ssh 文件夹,进去,打开 id_rsa.pub,复制里面的 key。
或者在Windows下,使用Git Gui -->Help --> Show SSH Key -->Generate Key生成密钥。
回到 github 上,进入 Account => Settings(账户配置)。
密钥1
左边选择 SSH and GPG keys,然后点击 New SSH key 按钮,title 设置标题,可以随便填,粘贴在你电脑上生成的 key。
密钥2
为了验证是否成功,输入以下命令:

$ ssh -T git@github.com
Hi GuoPP027! You've successfully authenticated, but GitHub does not provide shell access.

在GitHub创建一个新仓库。

推送本地到远程

将本地仓库的内容推送到远程仓库。(请先确保内容已被git跟踪)

$ git remote add origin git@github.com:GuoPP027/git-test.git
$ git push -u origin master

在远程配置一个origin仓库。
将当前本地仓库的master分支推送到远程的origin仓库。

拉取远程到本地

1、从远程仓库下载新分支与数据:
2、从远端仓库提取数据并尝试合并到当前分支:

git fatch
git merge
  • 执行 git fetch origin master 时,它的意思是从名为 origin 的远程上拉取名为 master 的分支到本地分支origin/master 中。既然是拉取代码,当然需要同时指定远程名与分支名,所以分开写。

  • 执行 git merge origin/master 时,它的意思是合并名为 origin/master 的分支到当前所在分支。既然是分支的合并,当然就与远程名没有直接的关系,所以没有出现远程名。需要指定的是被合并的分支。

  • 执行 git push origin master 时,它的意思是推送本地的 master 分支到远程origin,涉及到远程以及分支,当然也得分开写了。

  • 还可以一次性拉取多个分支的代码:git fetch origin master stable oldstable

  • 也还可以一次性合并多个分支的代码:git merge origin/master hotfix-2275 hotfix-2276 hotfix-2290

为Pycharm配置github

如何在Pycharm中使用GitHub,一文带你深入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值