| |
|
开发:
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>?????? //强制删除分支 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 0:34:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |