zoukankan      html  css  js  c++  java
  • git笔记

    #)git和svn的区别:

    ①git是分布式的版本管理工具。

    安装了git的电脑,相当于在自己电脑上有一个版本管理服务端。

    自己写的代码,通过add,commit之后,已经在自己电脑端的git服务器上有版本记录了。

    push之后,才到远程服务端。

    因此,相当于每个电脑都是一个微服务端,然后又都和远程服务端关联。因此是分布式的版本管理。

    优点:断网情况下,也可以进行版本管理。

    但本地的版本信息都在版本库的.git文件中存储,这个文件一旦损坏丢失,本地的版本信息也就丢失了。

    但push到远程服务端的版本信息,只要服务器没问题,就不会丢。

    ②指针

    svn的分支是copy文件创建的,因此速度较慢。git的分支是使用指针实现的,创建分支只需要移动指针,因此速度很快。

    #)git的区和文件的状态

    **)我自己认为,git的区可以分为3个,工作区、版本库、远程库。

    工作区:在本地写代码的区域

    版本库:add和commit之后代码所在的区域

    远程库:push之后代码所在的区域

    廖雪峰网站上的这个图,对我很有启发,感谢廖雪峰老师!

    **)git中文件所处的状态

    我认为有4种状态:工作区未stage的、stage区的(待commit)、commit区的(待push)、远程库的(已push)。

    根据这4种状态,做不同的操作。

    工作区未stage的:做stage操作。通过add命令,或者sourcetree工具的stage操作。

            工作区未stage,但此文件已经在远程库上的,做revert操作,将文件回归到远程库的,丢弃工作区的更改。

    stage区的:做commit操作,可以提交文件。做unstage操作,可以将文件撤销回工作区,回到未stage的状态。

    commit区的:做push操作。

    push区的:供其他人pull。

    #)git工具

    git常用的服务平台有:

    GitHub、

    Gitee(码云),中文版的GitHub

    GitLab:适合公司搭建自己的git服务平台

    bitbucket

    git常用的操作客户端有:

    IDEA:自带git插件,操作菜单可以满足日常工作需要。terminal的命令行,和git客户端的功能一样。

    git客户端:git bash:彩色的界面,强大的命令功能。是操作git的首选。通过它,没有解决不了的问题。

    git客户端:git GUI:git自带的GUI,功能虽全,但易用性不是特别高。个人认为比较鸡肋。

    sourceTree:第三方的GUI。易用性很高,小白也可以通过简单易用的界面,较快的熟悉使用方法。并且脱离开发环境,适合非开发人员使用,用来下载、更新文件。

    TortoiseGit:小乌龟的git系列。

    ##)sourcetree中,“拉取”pull和“获取”的区别:

     和上图的道理类似,“拉取”是,把指针指向某个位置,并且把工作区的文件更新到这个位置。

              “获取”是,把指针指向某个位置,但并没有把工作区的文件更新过去。所以在GUI的操作中,获取之后,还要做merge操作,才可以实现“拉取”的效果。否则,“获取”之后,在自己电脑上,是看不到代码变化的。

    *)git推送代码到远程仓库时,产生自动分支合并的问题:

    参考以下:

    https://www.cnblogs.com/Sinte-Beuve/p/9195018.html

    https://blog.csdn.net/xiaosi_xiaosi/article/details/81336077 

    简言之:

    当本地已经commit,并且和远程仓库无法直接融合代码时,本地分支和远程分支是2个不同分支,无法直接融合,所以会有一个分支合并的过程。

    要避免这个分支合并(个人感觉,为了提交日志好看,这样做没啥必要),可以有以下方法:

    当本地代码和远程仓库代码可能冲突时,

    方法1:先pull,(可能会冲突,需要解决冲突)再add、commit本地代码,再push。

    方法2:先add、commit本地代码,再fetch,然后手动rebase,(可能会冲突,需要解决冲突)再push。(这个是从网上看的,需要实际测试验证一下步骤)

    *)git常用命令

    除了git init,git add <file>,git commit -m "xxx",git pull,git push,这些常用命令以外,还有以下较常用命令:

    git status  查看仓库中文件的状态

    git diff 查看文件和版本库中的不同

    git add --help :git的任意命令,后面加上--help,可以在浏览器中打开帮助文档。

    git log :查看提交历史记录(包括版本号)

    git reflog :查看代码回到之后某个版本之后,进行的每次的命令操作。

    git reset HEAD <file>  :reset到版本库版本(git的命令会提示,是回到unstage状态)

    git checkout --<file> :丢弃工作区某个文件的修改

              如果没有--,这个命令就表示切换到另一个git分支了。

    git rm <file> :删除文件(之后再进行commit、push等操作)

    git remote add origin git@github.com:账号/本地仓库名.git

    git push -u origin master:当远程仓库是空仓库时,把本地分支master推送到远程master分支,并把本地master和远程master关联起来。

                -u 的作用:是记住本地仓库和远程仓库的关联,下次不需要再写为git push origin master,直接写git push即可。

  • 相关阅读:
    LabVIEW(数据库连接)
    单片机之静态局部变量static
    LabVIEW(数据库自动编号)
    为什么大电容滤低频,小电容滤高频 ?(转载)
    电容、频率的一点小关系(项目有关)
    深入理解计算机系统 第三部分程序间的交互和通信
    深入理解计算机系统chapter9
    深入理解计算机系统chapter8
    深入理解计算机系统chapter7
    深入理解计算机系统chapter6
  • 原文地址:https://www.cnblogs.com/mySummer/p/12104323.html
Copyright © 2011-2022 走看看