美文网首页
版本控制工具——Git学习

版本控制工具——Git学习

作者: 风一样的我1 | 来源:发表于2022-07-31 12:48 被阅读0次

本文参考资料:廖雪峰的GIT教程
快捷使用导航:

日常使用
廖老师总结的常用命令
github官网

一、什么是Git

Git是分布式版本控制系统,由Linusk开发。其作用可总结为两点:

二、常用操作

1.导入文件

版本库(repository)是git要管理的目录。

  • 创建版本库
mkdir <文件目录>
cd <文件目录>
git init

git init为初始化版本库。

  • 添加文件
    需要在创建的git目录下将文件导入,然后执行下列操作
git add <文件名>
git commit -m "备注"
add.png
commit.png

最终显示1个文件被改动,插入一个,删除一个。

  • 重要概念:工作区和暂存区


    工作区和暂存区

    工作区:存放文件的目录
    暂存区:文件add后到这里
    master:分支,commit后暂存区的内容提交到分支
    可以多次add,一次commit。修改之后,只有add到暂存区再commit才会生效。

2.修改查询

  • git diff 查看修改的内容。 git diff HEAD -- <文件名>查看当前提交的和目录下文件的区别。
  • git status 查看目前工作区的状态
    修改上述的java文件,在add之前,执行git status命令,结果如下


    status

    使用git diff 查看修改了什么,如下图,结果告诉我们从红色改成了绿色。


    diff

3.版本回退

  • 查看提交历史:git log。回退到过去:log+reset。
  • 版本回退:git reset --hard <commit_id> 或者git reset --hard HEAD标识。
  • 查看命令历史:git reflog。穿梭到未来:reflog+ reset。
    首先通过git log查看提交的历史,结果显示出三个提交历史,并显示了commit时的备注(要好好写备注)。其中head指向的是当前的版本。


    log

    要回退版本,有两个方式:(1)使用版本号(commit_id),即log信息里显示的一大串编码。(2)使用HEAD标识,HEAD^标识上个版本,HEAD~N表示往上N个版本。
    使用git reset --hard HEAD^操作,并使用cat <文件名>查看当前文件内容。确实回退回来了。


    reset
    如果后悔回退,可以使用git reflog看一下自己的命令历史,然后找到此前的版本号。
    回退到备注为"commit"时的版本。
    回到未来.png

4.撤销修改

  • git checkout -- <文件名>
    撤销修改分为以下几种情况:
  • 工作区修改,未add,撤销后和现存版本库的一样
  • 提交到暂存区后修改,未commit,撤销后和提交到暂存区后一样
  • 工作区修改后提交到暂存区想撤销工作区的修改:分两步走
    step1:先git reset HEAD <文件名>撤销add操作
    step2:git chechkout -- <文件名>撤销修改操作
  • 已经commit到分支,撤销修改使用版本回退操作

5.删除文件

删除和创建文件的流程相似,先手动删除目录中的文件,再使用命令行

  • git rm
  • git commit -m "备注"
    如果误删,可以使用git checkout -- <文件名>撤销删除操作。

三、github远程仓库

为github账户添加key,可以从本地电脑推送文件到github仓库。
添加key的操作见:
https://www.liaoxuefeng.com/wiki/896043488029600/896954117292416

1.关联github和推送

  • git remote add origin git@<github用户名>:path/repo-name.git
  • git push -u origin master第一次推送master分支的所有内容;将本地的master和远程的master关联上
  • 此后每次修改,git push origin master推送最新修改;
    推送Git.java到我的github:


    github

2.从github克隆

  • git clone 地址,地址可以在github的clone选项中找到
    Git支持多种协议,包括https,但ssh协议速度最快。

四、分支操作

1.分支概述

分支可以实现多人协作,每个人在自己的分支上干活,最后进行合并。
其中,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;干活在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。


多人协作
分支
分支合并

HEAD指向当前分支

2.分支操作

  • 查看分支:git branch
  • 创建分支:git branch <name>
  • 切换分支:git checkout <name>或者git switch <name>
  • 创建+切换分支:git checkout -b <name>或者git switch -c <name>
  • 合并某分支到当前分支:git merge <name>
  • 删除分支:git branch -d <name>
  • 强行删除分支:如果分支没有被合并过,需要删除,使用git branch -D <name>
    创建一个分支dev,对文件进行修改后提交。切换为maste分支,发现内容并未改动。


    创建分支

    将主分支和dev分支融合,再查看内容,发现内容已改变。


    分支融合
    如果分支修改的内容不一致,需要手动解决冲突。

3.冲突解决

  • 在master分支上创建一个新的practice.txt文件
  • 创建一个新的分支feature1,并在该分支下修改practice文件(增加一列内容:It is Saturday.)提交。
  • 切换分支到master,可以看到在master分支显示的还是未修改时的文件内容(即没有“It is Saturday.”)。在master分支下新增最后一行为“It is Sunday.”提交。
  • 尝试融合feature1和master两个


    合并显示有冲突

    打开practice.txt文件,可以看到git帮助我们标记出了两个分支的不同

This is a practice text.
Created by Pengu
Aug.21st, 2022.
<<<<<<< HEAD
It is Sunday.
=======
It is Saturday.
>>>>>>> feature1

在practice.txt文件后更改“It is Sunday, not Saturday.”手动解决冲突,然后提交

  • 通过git log --graph --pretty=oneline --abbrev-commit命令查看分支合并情况
    显示如下:


    分支合并情况
  • 删除分支feature1

4.bug分支和feature分支

  • bug分支,如果要修复bug,要新建bug分支,然后合并,删除bug分支。
  • feature分支,开发一个新功能,最好新建一个分支,合并到dev分支上。

四、多人协作

1、各自推送到远程

  • git push origin <branch-name>

2、解决冲突

  • git pull
    先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送。如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。

五、github操作

  • 任意Fork开源仓库到自己的github
  • 更改别人的代码后可以pull requests来请求更改别人库里的代码

相关文章

  • git(1)初体验

    一直都想学习git,用于版本控制工具,之前用的是svn集中式的版本控制工具,听说git是一种分布式的版本控制工具,...

  • Git入门

    Git入门 Git简而言之就是个版本控制工具,用于跟踪和管理代码的工具。 版本控制 本地版本控制 就是我们自己本地...

  • 版本控制工具——Git学习

    本文参考资料:廖雪峰的GIT教程[https://www.liaoxuefeng.com/wiki/8960434...

  • Day16-课堂笔记-Git和MySQL

    1.Git Git:版本控制工具cvssvnlinux出现,林纳斯脱袜子,使用版本控制工具更新Linux,bitk...

  • Git 的使用教程

    Git是什么? Git 是用于 Linux内核开发的版本控制工具。版本控制工具就是用于记录开发过程的每个版本 Gi...

  • 2018-09-30 Day31 - 学习Git

    Git是一个版本控制工具 -- 分布式的版本控制系统Mercury - python开发的版本控制软件 Git操作...

  • 源代码管理工具

    1 SVN 集中式版本控制工具: 2 git 开源的分布式版本控制工具,git提交时可以在本地提交 svn和git...

  • GIT

    GIT GIT简单介绍 GIT:是一款开源的分布式版本控制工具 在所有的分布式的版本控制工具中,git是最快、最简...

  • java开发用到的开发工具-附下载链接

    版本控制工具:git https://git-scm.com/downloads[https:...

  • SVN使用知识总结

    一. SVN和Git区别 SVN : 集中式的版本控制工具Git : 分布式的版本控制工具 二. SVN介绍 SV...

网友评论

      本文标题:版本控制工具——Git学习

      本文链接:https://www.haomeiwen.com/subject/nychwrtx.html