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 官网icon-default.png?t=L9C2http://git-scm.com/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的基本操作
————————————————
版权声明:本文为CSDN博主「JingG459」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/JINGinC/article/details/120769811

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值