IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> git的基础使用 -> 正文阅读

[开发工具]git的基础使用

在学会使用git之前,首先要知道git是什么呢?

????????Git是一个开源分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

相对于SVN来说:

  • Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

  • Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

  • Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

  • Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

  • Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

其实在我认为简单来说,Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。?

Git工作原理

Git工作流程可以分一下步骤:

  • 克隆 Git 资源作为工作目录;
  • 在克隆的资源上添加或修改文件;
  • 如果其他人修改了,你可以更新资源;
  • 在提交前查看修改。提交修改;
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交;

?

Git 工作区、暂存区和版本库:

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫stage, 或index。一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

?

?Git 安装配置

在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。

网址Git - Downloads

常见操作

全局配置用户信息

git config --global user.name "smyhvae"

git config --global user.email "smyhvae@163.com"

Git 创建仓库

????????我将为大家简单的介绍如何创建一个 Git 仓库

git init命令

????????Git 使用?git init?命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以?git init?是使用 Git 的第一个命令。

git init

????????该命令执行完后会在当前目录生成一个 .git 目录。

????????初始化后,会在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。

????????如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:

$ git add *.c
$ git add README
$ git commit -m '初始化项目版本'

????????以上命令将目录下以 .c 结尾及 README 文件提交到仓库中。

这里有一点需要注意的:

在 Linux 系统中,commit 信息使用单引号?',Windows 系统,commit 信息使用双引号?"。所以在 git bash 中?git commit -m '提交说明'?这样是可以的,在 Windows 命令行中就要使用双引号?git commit -m "提交说明"

克隆git clone命令

????????我们使用?git clone?从现有 Git 仓库中拷贝项目(类似?svn checkout)。

????????如果我们需要克隆到指定的目录,可以使用以下命令格式:

git clone <repo> <directory>
  • repo:Git 仓库。
  • directory:本地目录。

?Git基本操作命令

1. git init?创建项目命令,在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做,完全是本地化的。在目录中执行 git init,就可以创建一个 Git 仓库。

git init

2.?git clone?使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。?

$ git clone git://github.com/test/test.git

3.?git?push?其作用是将本地分支的更新推送到远程主机

$ git push <远程主机名> <本地分支名>:<远程分支名>

4.?git?pull?其作用是将远程主机更新到本地分支

$ git pull <远程主机名> <本地分支名>:<远程分支名>

5.?git add?git add 命令可将该文件添加到缓存,如我们添加以下两个文件:

$ touch README
$ touch hello.php
$ ls
README      hello.php
$ git status -s
?? README
?? hello.php
$ 

6.?git status?命令用于查看项目的当前状态

$ git add README hello.php 

$ git status -s
A  README
A  hello.php
$ 

7.?git diff??命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景: 尚未缓存的改动:git diff 查看已缓存的改动: git diff --cached 查看已缓存的与未缓存的所有改动:git diff HEAD 显示摘要而非整个 diff:git diff --stat

$ git status -s
A  README
AM hello.php
$ git diff
diff --git a/hello.php b/hello.php

8.?git commit 命令使用 git add 命令将想要快照的内容写入了缓存, 而执行 git commit 记录缓存区的快照。Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址。

$ git config --global user.name 'admin'
$ git config --global user.email admin@qq.com

$ git add hello.php
$ git status -s
A  README
A  hello.php
$ git commit -m 'test comment from test.cn'
[master (root-commit) 85fc7e7] test comment from test.cn
 2 files changed, 4 insertions(+)
 create mode 100644 README
 create mode 100644 hello.php
$ git status
# On branch master
nothing to commit (working directory clean)

9.?git log?查看历史提交记录

$ git log
commit 971378f64eec7b6e9734ddf77b98f3bb966e3f36 (HEAD -> master, origin/master)
Author: admin
Date:   Thu Oct 14 16:34:57 2021 +0800

    first

commit f1562a95464937a90778cce178977c8ba419bb1c
Author: admin
Date:   Wed Oct 13 10:32:18 2021 +0800

    second

10. git tag?可以使用 git tag 给打上标签

? ? ? git reset HEAD?命令用于取消缓存已缓存的内容。

$ git status -s
M README
M hello.php
$ git add .
$ git status -s
M  README
M  hello.pp
$ git reset HEAD -- hello.php 
Unstaged changes after reset:
M hello.php
$ git status -s
M  README
M hello.php

11. git rm?将文件从缓存区中移除。

$ git rm hello.php 
rm 'hello.php'
$ ls
README

12.?git mv?命令做得所有事情就是 git rm --cached, 重命名磁盘上的文件,然后再执行 git add 把新文件添加到缓存区。因此,虽然有 git mv 命令,但它有点多余 。

Git 分支管理

????????几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

????????有人把 Git 的分支模型称为必杀技特性,而正是因为它,将?Git?从版本控制系统家族里区分出来。

创建分支命令:

git branch (branchname)

切换分支命令:

git checkout (branchname)

当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。

合并分支命令:

git merge 

列出分支:

列出分支基本命令:

git branch

没有参数时,git branch?会列出你在本地的分支。

$ git branch
* master

此例的意思就是,我们有一个叫做?master?的分支,并且该分支是当前分支。

当你执行?git init?的时候,默认情况下 Git 就会为你创建?master?分支。

如果我们要手动创建一个分支。执行?git branch (branchname)?即可。

$ git branch testing
$ git branch
* master
  testing

删除分支

删除分支命令:

git branch -d (branchname)

例如我们要删除 testing 分支:

$ git branch
* master
  testing
$ git branch -d testing
Deleted branch testing (was 85fc7e7).
$ git branch
* master

分支合并

一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。

Git 会有很多合并策略,其中常见的是 Fast-forward、Recursive 、Ours、Theirs、Octopus。下面分别介绍不同合并策略的原理以及应用场景。默认 Git 会帮你自动挑选合适的合并策略,如果你需要强制指定,使用git merge -s <策略名字>

在不了解任何一个合并策略时也可以直接使用git默认的合并方式,先假设有 master(公共分支) 和 dev 分支?,要将master(公共分支)和dev(分支)合并

你可以使用以下命令:

git checkout master
git merge dev

把两个分支的最新快照以及二者最近的共同提交点进行三方合并,合并的结果是生成一个新的快照(并提交)。?

合并冲突

合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。

$ git branch
* master
$ cat runoob.php

以上就是我总结的git的基本操作

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:58:54  更:2021-10-15 12:00:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:04:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码