• Git-学习笔记


    Git学习笔记

    1.版本控制

    Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

    Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。

    分类:

    • 本地版本控制:RCS
    • 集中式版本控制:SVN、CVS、VSS
    • 分布式版本控制:Git
    区别 Git SVN
    是不是分布式的 分布式的 集中式的
    文件存储方式不同 内容按元数据方式存储,使用SHA-1 哈希算法 内容按文件存储
    分支区别 可以在任意一个提交点(commit point)开启分支,并没有创建文件夹 分支是版本库中的另外一个目录。
    是否有全局的版本号 没有
    管理权限不同 没有严格的权限管理控制,只有账号角色划分 相当严格,可以按组、个人针对某个子目录的权限控制
    工作流程不同 开始工作前进行fetch操作,完成开发工作后push操作,有冲突解决冲突。git的提交过程不会被打断,有冲突会标记冲突文件 每次更改文件之前都得update操作,有冲突,会打断提交动作

    2.Git历史

    Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    3.Git环境配置

    各个版本下载之后直接安装,配置环境变量。

    Git一般工作流程如下:

    • 克隆 Git 资源作为工作目录。
    • 在克隆的资源上添加或修改文件。
    • 如果其他人修改了,你可以更新资源。
    • 在提交前查看修改。
    • 提交修改。
    • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

    工作区域划分:

    • 工作区:就是你在电脑里能看到的目录。
    • 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
    • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

    4.Git基本命令

    linux基本命令:
    cd #切换目录
    pwd	#查看路劲
    ls	#查看目录
    clear	#清屏
    等等。
    
    git相关命令:
    git config -l	#查看所有配置
    git config --system --list	#查看系统配置
    git config --global --list	#查看当前用户配置,用户名和邮箱
    设置用户名与邮箱:
    git config --global user.name "Ferryup"
    git config --global user.email "1723265689@qq.com"
    
    git push origin master	# 推到origin仓库的master分支
    git push -u origin master	# 将本地仓库的master与远程仓库进行关联,以后push就不用指定分支了。
    
    git commit:是将本地修改过的文件提交到本地库中;
    git push:是将本地库中的最新信息发送给远程库;
    git pull:是从远程获取最新版本到本地,并自动merge;
    git fetch:是从远程获取最新版本到本地,不会自动merge;
    git merge:是用于从指定的commit(s)合并到当前分支,用来合并两个分支; 
    

    5.Git项目搭建

    创建仓库的两种方式:本地仓库搭建、远程仓库搭建

    本地仓库搭建

    1. 在当前目录右键打开git bash;
    2. 输入命令git init;
    3. 可以看到在目录下多了一个.git隐藏文件夹,关于版本的所有信息都在这个文件夹中。

    远程仓库搭建

    1. 复制远程仓库的url;

    2. 在当前目录打开git bash,输入命令git clone url;

      git clone https://github.com/MarkerHub/eblog.git
      git clone --depth=1 https://github.com/MarkerHub/eblog.git#保留最近的一次commit,克隆速度更快
      
    3. 等待之后即可把远程仓库克隆到本地。

    6.Git常用操作

    Git管理的文件的有四种状态

    1. 未跟踪的(Untracked):文件在文件夹中,但是没有加入到仓库中,不参与版本控制。
    2. 未修改的(Unmodified):
    3. 已修改的(Modified):修改了之后需要重新添加到仓库中。
    4. 已暂存的(Staged):暂存状态。
    git add .	#添加当前项目的所有文件
    git commit	-m "消息" #提交
    -m参数:附带的消息
    git status	#查看所有文件状态,默认是较为详细的显示
    git status -s	#查看所有文件状态,默认是较为简洁的显示
    git status 文件名 #查看指定文件的状态
    
    git diff	# 工作目录和暂存区
    git diff --cached	# 暂存区和本地仓库
    git diff HEAD	# 工作目录和本地仓库
    git diff --stat	# 显示信息摘要
    
    git reset HEAD --file    # 将本地仓库的当前版本恢复到暂存区
    git reset HEAD~1 --file  # 将本地仓库的上个版本恢复到暂存区
    # git rm 用来删除文件、目录。git mv 命令用于移动或重命名一个文件、目录。
    git rm           # 将文件从暂存区和工作目录删除,-f为强制删除
    git rm --cached <path> # 将文件从暂存区中删除
    git mv <old_path> <new_path>
    
    git log		   # 当前分支的log
    git log --oneline  # 简要log
    git log --graph    # 查看各种分支之间的日志
    git reflog 	   # 查看所有分支的所有操作记录(包括 reset)
    
    git tag 		       # 查看所有标签
    git tag -a <tagname> -m "blablabla..."  # 创建一个标签,并附上信息
    git tag -d <tagname>    		       # 删除本地标签
    

    忽略文件

    在代码目录下建立.gitignore文件。

    #为注释
    *.txt	#忽略所有以.txt结尾的文件
    !lib.txt	#但是lib.txt除外
    /temp	#向前忽略,仅忽略项目根目录下的TODO文件,不包括其他目录temp
    build/	#忽略build/目录下的所有文件
    doc/*.txt	#忽略doc/notes.txt,但不包括doc/server/arch.txt
    
    
    *.class
    *.log
    *.lock
    ### Package Files ###
    *.jar
    *.war
    *.ear
    target/
    tmp/
    
    ### idea ###
    .idea/
    *.iml
    *.ipr
    *.iws
    .classpath
    .project
    .settings/
    bin/
    
    *velocity.log*
    
    ### STS ###
    .apt_generated
    .factorypath
    .springBean
    
    ### rebel ###
    *rebel.xml*
    

    使用SSH免密登录

    1. 进入C:Usersqd.ssh 目录中,打开git bash窗口,输入命令 ssh-keygen
    2. 可以生成两个文件id_rsa.pub和id_rsa,将公钥id_rsa.pub里面的内容粘贴到网站上对应位置即可。

    7.IDEA中集成Git

    1. 新建项目,绑定Git;
    • 将远程的git文件目录拷贝到项目中即可。
    1. 修改文件,使用IDEA操作Git;
    • 添加文件到暂存区。
    • commit提交到本地。
    • push到远程仓库。
    1. 提交测试。

    8.Git分支

    git branch	#查看本地分支
    git branch	-r	#查看远程分支
    
    git branch	dev	#新建一个分支dev,但是依然停留在当前分支
    git checkout -b dev	#新建一个分支dev,并切换到dev分支
    
    git branch -b dev	#切换到dev分支
    
    git merge dev	#合并dev分支到当前分支
    
    git branch -d dev	#删除dev分支
    
    git push origin --delete dev	#删除远程dev分支
    git branch -dr dev	#删除远程dev分支
    
    # 分支合并的三种方式
    git merge fast-forword:当条件允许时,git 直接把 HEAD 指针指向合并分支的头(默认)
    git merge --no-ff:不适用 fast-forward 方式合并,保留分支的 commit 历史
    git merge --squash:使用 squash 方式合并,将多次分支的 commit 历史记录压缩为一次
    
  • 相关阅读:
    C# WinForm开发系列 Socket/WCF/Rometing/Web Services
    .net(c#) 简单的软件注册功能的实现:
    来自xici网友的Ubuntu和windows xp的Super PI性能测试
    最新的Linpack测试指南-基于woodcrest机器
    CFX x86_64 version issues 无法找到可执行文件
    如何检查一个mvapich的版本?
    Intel Tools Training Notes Intel Compiler, MKLs
    Infiniband IPoIB Debug FAQ
    让CFX的license server在开机的时候就自动启动
    FFTW 3.1.2 和 2.1.5编译
  • 原文地址:https://www.cnblogs.com/smalldong/p/15084474.html
Copyright © 2020-2023  润新知