zoukankan      html  css  js  c++  java
  • Git

    我们知道在工作中git是做项目必须掌握的,那么今天我给大家介绍一下吧!!!

    首先先做个简单介绍:

     Git是Linux之父Linus的第二个伟大的作品,它最早是在Linux上开发的,被用来管理Linux核心的源代码。后来慢慢地有人将其移植到了Unix、Windows、Max OS等操作系统中。它是一个开源的分布式版本控制系统,它也是目前世界上最先进的分布式版本控制系统,没有之一用于敏捷高效地处理任何或小或大的项目。Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。Git是分布式的、Git把内容按元数据方式存储。

     

    Git工作流程:

    1、git clone 克隆远程资源到本地目录,作为工作目录;

    2、然后在本地的克隆目录上添加或修改文件;

    3、如果远程修改了,需要同步远程的内容,直接git pull就可以更新本地的文件;

    4、本地在修改之后,可以通过git status 查看修改的文件。然后使用git add 添加修改的文件暂到缓冲区;

    5、在添加之后,可以使用git commit添加到当前的工作区;

    6、git push将本地的修改推送到远程的git服务器。

     

    Git工作区、暂存区和版本库:

    工作区:就是你在电脑里能看到的目录。

    暂存区:一般存放在'.git目录下的index文件中',所以也叫索引。

    版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

     

    git三种状态:

    1、已提交(committed):该文件已被安全地保存在本地数据库。

    2、已修改(modified):已修改了某个文件,尚未提交保存。

    3、已暂存(staged):把已修改的文件,放在下次提交时要保存的清单中。

     

    安装git:

    一、在Mac OS X上安装git

    1、安装homebrew,然后通过homebrew安装Git,

    2、第二种方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了

    二、在window安装git

         可以从Git官网直接下载安装程序 (https://git-scm.com/downloads

     

    git的配置:

      git config  专门用来配置或读取相应的工作环境变量。

      用户信息:首先 git config --global user.name '你的名字或昵称'  git config --global user.email 作用告诉git你是谁  2 、git config        user.name  git config user.email' 使用下面命令是否配置成功。

      查看配置信息:git config --list

     

    获取帮助:

    1、git help <verb>

    2、git <verb> --help

    3、man git-<verb>

     

    创建Git仓库:

    1、mkdir learnight 

    2 cd learnight 

    3 pwd (显示当前目录)

     

    git init:

    Git使用git init 命令来初始化一个Git仓库,Git的很多命令都需要在Git的仓库中运行,所以git init 是使用Git的第一个命令。在执行完成git init命令后,Git仓库会生成一个.git目录,该目录包含了资源的所有元数据,其他项目目录保持不变。

    .git目录:

    1、hooks(hooks(钩):存放一些shell脚本)

    2、Info:exclude:存放仓库的一些信息

    3、ogs:保存所有更新的引用记录 

    4、objects:存放所有的git对象

    5、refs文件下heads:保存当前最新的一次提交的哈希值

    6、COMMIT_EDITMSG:最新提交的一次Commit Message,git系统不会用到,给用户一个参考

    7、description:仓库的描述信息,主要给gitweb等git托管系统使用

    8、config:git仓库的配置文件

    9、index:暂存区(stage),一个二进制文件

    10、FETCH_HEAD: 是一个版本链接,指向着目前已经从远程仓库取下来的分支的末端版本

    11、HEAD:映射到ref引用,能够找到下一次commit的前一次哈希值(看上面logs的图)

    12、ORIG_HEAD:HEAD指针的前一个状态

    13、 packed-refs:当更新一个引用时,git不会packed-refs,而是会在refs/heads下写入一个新文件。当查找一个引用时,git首先在refs目录下查找,如果未找到则到packed-refs文件中去查找。

     

    git clone:

    如果你想获得一份已经存在了的Git仓库的拷贝,就用git clone

    命令格式:git clone [url] (Git仓库)  如果需要克隆到指定的目录,可以使用一下命令格式:git clone [url]  本地目录

    注意:

    1、http://github.com/CosmosHua/locate new  =  http://github.com/CosmosHua/locate.git new  =            git://github.com/CosmosHua/locate new = github.com/CosmosHua/locate.git new

     2、git clone 时,可以用不同的协议,包括ssh、git、https等,其中最常用的是ssh,因为速度较快,还可以配置公钥输入密码

     

    git add 

    该命令可将改文件添加到缓存

    新项目中,添加所有文件很普遍,我们可以使用git add. 命令来添加当前项目所有文件

     

    git status

    该命令用于查看项目的当前状态,接下来我们执行git add命令,然后在执行git status看到已经提交上去了

     

    git diff

    执行该命令来查看执行git status的结果的详细信息,该命令显示已写入缓存与已修改的改动的区别

    1、尚未缓存的改动:git diff   

    2、查看已缓存的改动 git diff --cached  

    3、查看已缓存的与未缓存的所有改动:git diff HEAD

    4、显示 摘要而非整个diff:git diff --stat

     

    git commit

    使用git commit 将缓存区内容添加到仓库中

    这时候我们在执行git status:会出现(working directory clean:干净的工作目录)。

    如果你没有设置-m选项,Git会尝试为你打开一个编辑以填写提交信息。如果Git在你对它的配置中找不到相关信息,默认会打开vim。

    如果你觉得git  add 提交缓存流程太过繁琐,git 也允许你用 -a选项跳过这一步。git commit -a。

     

    git commit 、git push、git pull、git fetch、git merge的含义与区别:

    git commit :是将本地修改过的文件提交到本地库中

    git push:是将本地库中的最新信息发送给远程库

    git pull :是远程获取最新版本到本地,并自动merge

    git fetch:是从远程获取最新版本到本地,不会自动合并merge

    git  merge 是从指定的commit(s)合并到当前分支,用来合并两个分支  git merge -b 指将 b分支合并到当前分支

     

    git branch:

    创建分支:git branch <name>

    git branch 没有 参数时,会列出你在本地的分支  

    删除分支:git branch -d

     

    git checkout:

    既可以操作分支,也可以操作文件

    切换分支:

    git switch 或  git checkout

    创建并切换分支 :

    git checkout -b   git switch -c     

    回退修改:

    git checkout --fileName 这条命令把fileName从当前HEAD中检出,也就是回退到当前工作区的这个文件的修改

    --可以省略不写。如果需要回退工作区的全部文件修改,可以使用:

    git checkout --hard HEAD

    而不需要对每个文件进行checkout,这样太累

     

    git reset 

    回退版本,git reset HEAD^一个^表示一个版本,可以多个,另外也可以使用git reset HEAD~n这种形式。 也可以回退到指定版本:git reset commit-id

    1、soft参数:git reset --soft HEAD~1意为将版本库软回退1个版本,所谓软回退表示将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到暂存区

    2、默认的mixed参数:git reset HEAD~1 意为将版本库回退1个版本,将本地版本库的头指针全部重置到指定版本,且会重置暂存区,即这次提交之后的所有变更都移动到工作区

    3、hard参数:git reset --hard HEAD~1意为将版本回退1个版本,但是不仅仅是将本地版本库的头指针全部重置到指定版本,也会重叠暂存区,并且会将工作区清空(工作区是clean状态)

    注意:soft参数与默认参数都不会修改工作区代码,只有hard参数才会修改工作区代码

     

    git rm

    git rm -r *:进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录

    git rm --cached<file>:如果把文件从暂存区域移除,但希望保留在当前工作目录,换句话说,仅是从跟踪清单中移除,使用--选项即可

    git rm -f <file> :如果删除之前修改过并且已经放到暂存区的话,则必须要用强制删除选项-f

    git rm <file>:如果只是简单地从工作目录手工删除文件,运行git status时就会在Change not staged for commit的提示,要从Git中移除某个文件,就必须要从以跟踪文件清单中移除,然后提交。

     

    git mv

    git mv README  README.md    ls    README.md

    该命令用于移动或重名一个文件、目录、软连接

     

    git log 

    查看提交的历史记录

    git log --author:如果只想查找指定用户的提交日志可以使用命令

    如果你要指定日期,可以执行几个选项:--since和--before,也可以用 --util和 --after

    git log --graph 查看历史中什么时候出现了分支、合并。以下为相同的命令,开启了拓扑图选项

    git log  --oneline选项查看历史记录的简洁的版本

     

    git tag

    在git 中打标签非常简单,首先,切换到需要打标签的分支上,然后。敲命令git tag v1.0 <name>,可以用git tag  查看所有标签

    发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以标签也是版本库的一个快照。

    如果标签打错了,可以在本地删除:git tag -d v0.1,如果标签已经推送到远程,要删除远程标签就麻烦一些,先从本地删除,然后从远程删除。删除命令也是push git push origin :refs /tags/v0.9,要看是否真的从远程删除了标签,可以登陆GitHub查看

     

    git stash

    所有未提交的修改都保存起来,用于后续恢复当前工作目录

    git stash save "stash_name" 给每个stash加一个message,用于记录版本

    git stash list查看现有所有stash

    在使用git stash pop(apply)命令时可以通过名字指定使用哪个stash,默认使用最近的stash

    git stash drop:移除最新的stash,后面也可以跟指定stash的名字

     

    git reflog

    如果在回退以后又想再次修改回到之前的版本,git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,git log 则不能看已经删除了的commit记录

     

    git revert 

    回退某个修改

    反转提交,撤销一个提交的同时会创建一个新的提交,也就是用一个新提交来消除一个历史提交所做的任何提交

     

     

     

      

     

     

  • 相关阅读:
    JSP | 基础 | 加载类失败:com.mysql.jdbc.Driver
    5.Nginx的session一致性(共享)问题配置方案1
    4.Nginx配置文件Nginx.conf_虚拟主机配置规则
    3.Https服务器的配置
    2.Nginx基本配置
    1.Nginx安装
    DA_06_高级文本处理命令
    7.控制计划任务crontab命令
    6.Shell 计划任务服务程序
    5.Shell 流程控制语句
  • 原文地址:https://www.cnblogs.com/ray123/p/11712112.html
Copyright © 2011-2022 走看看