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的基本命令和操作,会从Git的版本库的初始化,基本操作和独有的常用命令三部分着手,让大家能够开始使用Git。

Git初始化

git clone、git init;

Git通常有两种方式来进行初始化:git clone和git init

1、git clone: 这是较为简单的一种初始化方式,当你已经有一个远程的Git版本库,只需要在本地克隆一份

例如:

[root@node01 ~]# mkdir -p /var/www/html?? //git仓库目录

[root@node01 ~]# git clone git@192.168.10.4:/home/git/project.git /var/www/html/

说明:'git clone git@192.168.10.4:/home/git/project.git ?/var/www/html/'命令就是将' git@192.168.10.4:/home/git/project.git '这个URL地址的远程版本库完全克隆到本地/var/www/html/目录下面。

注:上面命令实际是基于ssh协议的,如果不想通过密码验证,可以使用密钥对方式,需要将自己的公钥传到服务器,这样就可以不输入密码直接git clone。

2、git init和git remote:这种方式稍微复杂一些,当你本地创建了一个工作目录,你可以进入这个目录,使用git init命令进行初始化,Git以后就会对该目录下的文件进行版本控制。这时候如果你需要将它放到远程服务器上,此时你就可以利用 git remote add 命令来增加一个远程服务器端,例如' git remote add test ssh://git@192.168.10.4/home/git/project.git '这条命令就会增加URL地址为' ssh://git@192.168.10.4/home/git/project.git ',名称为test的远程服务器,以后提交代码的时候只需要使用test别名即可。

例如:

[root@node01 ~]# mkdir git_test

[root@node01 ~]# git init ?git_test?? //初始化git,指定git仓库路径,同时也是工作目录。

[root@node01 ~]# cd git_test/

[root@node01 git_test]# git remote add test ssh://git@192.168.10.4/home/git/project.git? //添加远程库

[root@node01 git_test]# git remote -v

Git基本命令

现在我们有了本地和远程的版本库,让我们来试着用用Git的基本命令吧:

git pull:从版本库(既可以是远程的也可以是本地的)将代码拉到本地

例如:'git pull test master'就是将test这个版本库的代码更新到本地的master主枝

[root@node01 ~]# cd git_test/

[root@node01 git_test]# git pull test master

git add:将所有改动的文件(新增和有变动的)放在暂存区,由git进行管理

[root@node01 git_test]# touch 3.html

[root@node01 git_test]# git add .? #这里有个点,表示当前目录下所有改动的文件

[root@node01 git_test]# git status

#git status获取仓库当前的状态;

Untracked files 有未被跟踪的文件

Changes to be committed 有未提交的文件

nothing to commit, working tree clean 没有被修改的文件

git rm:从当前的工作空间中和索引(暂存区)中删除文件

例如

[root@node01 git_test]# git rm -f 4.html

git rm --cached 3.html? //从暂存区删除,不会删除文件

git commit:提交当前工作空间的修改内容到本地仓库

例如:git commit -m "NO.4",告诉Git,把(多个)文件提交到仓库,-m后面输入的是本次提交说明,最好是有意义的

[root@node01 git_test]# echo "NO.3" > 3.html

[root@node01 git_test]# git add 3.html

[root@node01 git_test]# git commit -m "NO.3"

git push:将本地commit的代码更新到远程版本库中,例如'git push origin branchname'就会将本地的代码更新到名为orgin的远程版本库中branchname分支

[root@node01 git_test]# git remote -v

?[root@node01 git_test]# git push test master

git log:查看历史日志

查看历史记录,显示从最近到最远的提交日志,以便确定要回退到哪个版本。

git log --pretty=oneline使每条记录显示在同一行。

git log --pretty=oneline?--abbrev-commit使每条记录显示在同一行且简写。

[root@node01 git_test]# git log --pretty=oneline

分支操作

Git的分支是什么

顾名思义,分支就是从主分支上分离出来进行另外的操作,而又不影响主分支,主分支又可以继续干它的事,最后分支做完事后合并到主分支上而分支的任务完成可以删掉了。使用分支意味着你可以从开发主分支上分离开来,然后在不影响主分支的同时继续工作。

创建一个属于自己的分支,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,既安全又不影响别人工作。Git的分支无论创建、切换和删除,无论版本库大小,都很快,只是修改指针。

分支管理

我们可以用命令git branch来查看我们的git仓库有几个分支,而我们目前工作处于那个分支,前面有个*号的就为我们目前所处的分支。

我们可以通过命令git branch name来创建分支,而这个分支的指针就指向最新的commit对象,也就和HEAD指向同一对象。

我们可以通过命令git checkout name来切换到目的分支,我们默认的主分支为master。分支的创建和切换,其实只是简单的创建指针和找指针而已,而根据找到的指针找到所指向的commit对象,然后将工作空间恢复成该commit对象所指的文件快照让我们来工作。当提交一次,指针就重新指向这个最新提交的对象,特别的简单。

每次提交,Git都把它们串成一条时间线,master分支都会向前移动一步。这条时间线是主分支,即master分支,master指向最新提交,HEAD此时指向master。(HEAD指向当前分支,master指向提交点)

当我们建立分支test之前,只有master一个主分支,如图一,我们所有的开发都是在这个分支上,而且HEAD是指向最近一次提交的commit对象c3,c3以前还有两次提交c1和c2,这时我们通过git branch test创建test分支,如图二,这时HEAD还是指向master分支最近一次提交的c3,当git checkout test切换到test分支后,HEAD就指向test分支的最近一次提交c3,这个时候其实在.git里面都是指向同样一份数据c3。

这个时候,当我们在test分支上进行了几次开发提交了c4和c5两个版本后,那么test和HEAD都指向test分支的最近一次提交c5,如图三,而master此时还没有变化,任然指向的是c3,如果这个时候将test分支合并到master分支,那么git根本不用做什么,只要将master移动,指向c5就可以了,这个过程称之为Fast-forward快进。如果此时test的任务完成,我们就可以通过git branch -d test将它删除掉,继续在主分支master上进行开发。

那么如果此时master分支上又进行另外的开发,提交了两个版本c6和c7,那么此时的master和HEAD指针都指向的是c7,如图四,可以看出在哪个分支上开发,那么HEAD就指向的是哪个分支上的commit,这个时候合并两个分支的话,就如下。

如图五,我们先切换到master分支,然后通过git merge test将test分支合并到master分支,这个时候,git就不是简单的移动指针了,因为两边都有开发,所以git就要对于两个分支的最新提交c5和c7还有两个分支共同的祖先commit对象c3来进行一次简单的三方合并,产生新的文件快照并用新的commit对象c8记录,这个合并的过程不需要太在意,如果产生了冲突,也就是两个分支对同一个文件进行了修改,那么git就会停下合并操作,让你处理好冲突后,再提交(c8),然后再进行合并。这时master和HEAD都指向c8,但是test是没有移动的,此时还可以在test上继续开发,再合并到master,如果test已经没有利用价值了就可以删掉了。

创建和合并分支:

查看分支

[root@node01 ~]# cd /git_test/???? #进入git仓库目录

[root@node01 git_test]# git branch???? #查看分支情况,当前分支前有*号

创建分支

# git branch <branch name>??? //创建分支,<branch name>表示要创建的分支名

例如创建一个名为test的分支:

[root@node01 git_test]# git branch test

[root@node01 git_test]# git branch

切换分支

[root@node01 git_test]# git checkout test? //切换到test分支

[root@node01 git_test]# git branch

[root@node01 git_test]# echo "NO.4" > 4.html????? //在当前分支上操作

[root@node01 git_test]# git add 4.html

[root@node01 git_test]# git commit -m "NO.4"

[root@node01 git_test]# echo "NO.5" > 5.html

[root@node01 git_test]# git add 5.html

[root@node01 git_test]# git commit -m "NO.5"

?git checkout -b <branch name>????????? //创建并切换到分支

重命名分支

重命名分支:git branch -m <old name> <new name>

[root@node01 git_test]# git branch -m test test_dev

[root@node01 git_test]# git branch

合并分支

合并前必须保证在master主分支上

[root@node01 git_test]# git checkout master ??//切换到master分支

[root@node01 git_test]# git merge test_dev?? //将test_dev分支合并到master

删除分区

git branch -d <branch name>

git branch -D <branch name>?????? //强制删除分支

?

  开发工具 最新文章
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常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 23:10:55  更:2022-07-04 23:12:50 
 
开发: 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年5日历 -2024/5/18 14:40:29-

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