• git使用


    Git基本工作流程

    Git使用40个16进制字符的SHA-1 Hash来唯一标识对象

    有四种对象

     1.blob 表示文本文件等

     2.tree 目录

     3.commit 历史提交

     4.tag 某个固定的历史提交

    获取git仓库

     1.git init 目录名(会创建git仓库) git init --bare 目录名(裸仓,不带工作区)

      创建一个文件夹 mkdir git_init_repo

      进入文件夹,再执行 git init 该文件夹就会被git纳管

     2.git clone 需要远程裸仓库的地址 git clone git_bare_repo

    git三个区域

     working directory:工作区,日常编辑代码的地方

     staging area:工作区到历史提交暂存的区域

     history repository:commit指向的树形结构

     

    Git add 添加到暂存区

    Git rm a 同时删除工作区里面的文件a以及暂存区的文件a

    Git reset HEAD a 还原暂存区文件a

    Git checkout a 将暂存区代码检出到工作区

    Git rm - - cached a 只删除暂存区文件a的引用

    Git mv a c git帮我们在工作区你所需要的文件移动或者重命名,在暂存区,把源文件删除,添加新文件引用

    Vim .ignore

    *.[oa]

    *~

    *.pyc

    !test.pyc(不要被忽略)

    Foo/匹配目录,而不是文件

    Git暂存区

    Git本地分支与合并

    1. git branch

    git branch test 创建新分支

    git checkout test 切换到test分支

    1. git tag

    git log --online  --decorate  -- graph --all 查看提交日志,并且可以看到提交的一些hash code

    git tag “v0” a1aba30 基于a1aba30打一个v0的标签,如果后面不跟code,默认用head指向的提交来创建标签

    git tag -a “initial_commit” a1aba30 要求输入tag的一些信息

    git tag 可以查看当前已经创建的tag

    git log --online  --decorate  -- graph --all 查看历史示意图

    git config --global alias.lol “log --oneline --decorate --graph --all” 给该命令起个别名git lol

    git show v0 可以查看v0提交的详细信息

    git checkout v0 还原到v0

    git checkout -b new_branch_name

    git stash save -a “stash1”

    git stash list 查看stash内容

    git stash pop --index stash@{0} 把stash的内容还原到工作区和暂存区,同时删除这个stash

    git stash apply --index stash{0} 把stash的内容还原到工作区和暂存区,不会删除这个stash

    git stash drop stash{0} 手动删除这个stash,不加引用,默认删除栈第一个

    git stash clear 一次性清理stash栈

    git merge test 合并test分支

    git merge --abort 放弃本次合并

    <<<<<<<<<<HEAD

    当前所处分支的内容

    ===========

    Test分支的内容

    >>>>>>>>>>>test

    1. git show HEAD 查看HEAD提交的内容信息
    2. git log 历史commit信息,空格向下翻页

    git log --state差异的统计信息

    git log --oneline 单行信息

    git log --oneline(单行) --decorate(引用信息) --graph(图形信息)--all(所有分支的信息)

    1. git diff 输入查看我们工作区与暂存区中的差异

    git diff --cached 查看暂存区与历史提交的差异

    git diff HEAD~2 -- master.txt 指定查看当前工作区与某个历史提交某个文件的差异

    git diff --cached HEAD~2 -- master.txt 指定查看暂存区与某个历史提交某个文件的差异

    git diff HEAD HEAD~2 比较两个历史提交的差异

    git diff HEAD HEAD~2 --master.txt 比较两个历史提交中某个文件的差异

    撤销修改

    Git checkout --master.txt 用暂存区的内容覆盖工作区的内容

    Git reset master.txt 用历史提交还原暂存区

    Git log

    Git checkout INITIAL_COMMIT --master.txt 从历史提交中还原工作区以及暂存区

    Git checkout HEAD --master.txt

    Git reset INITIAL_COMMIT --master.txt从历史提交中还原暂存区

    1. git clean

    git clean -n 查看将被clean的内容

    gti clean -f 清除

    1. git revert HEAD

    重写历史记录

    1. git commit -amend 产生一个新的提交,用来替换当前所指向的提交
    2. git rebase 历史修改能力,维护一个线性的历史记录,做merge时,可以看到log是线性的,而不会出现一个新的分支

    如果已经有了一个master分支,有一个master.txt文件,执行下面命令:

    Git add master.txt

    Git commit -m ”conflict rebase”

    Git checkout -b test_rebase HEAD~ 基于上一个HEAD创建一个新的分支,修改master文件

    Git add master.txt

    Git commit -m ”initial commit on test_rebase”

    这时候git log可以看到,基于上一个head提交,出现了两个分支,一个是目前的head,一个是test_base分支,如果想合并成一个线性的,就要用到rebase

    执行:

    git rebase master合并master.txt

    有冲突时,可以用git rebase --abort放弃合并

    希望继续的话,修改冲突的文件,vim master.txt,然后执行git add master.txt,将文件添加到暂存区,然后执行git rebase --continue,继续rebase,合并完后,通过git log可以看到,目前的test分支就是从master分支延伸出来的,呈线性结构,而不是产生了一个线性的提交

    1. git reset
    2. git reflog维护了head 引用的一个历史

    git reflog 查看head的引用历史,配合git reset使用,

    git reset --hard(该参数会还原工作区和暂存区) HEAD@{22}   head回退到某一个版本

    git reset --mixed HEAD@{22} 将head的引用指向该commit,只还原暂存区

    git reset --soft HEAD@{22}将head的引用指向该commit,什么都不还原

    git远程操作

    git clone http://XXXX/urg.git git_remote 把远程文件克隆岛git_remote文件夹中

    git fetch 如果远程有新提交时,使用这个命令时,origin/master会指向最新的提交,而本地的master分支还在上一个提交,此时可以调用git merge origin/master来合并分支,可能需要解决冲突

    git pull 从服务器上获取最新内容,更新本地的origin/master(远程跟踪分支),然后再把远程跟踪分支中的内容合并到跟踪分支(master)中去,git pull = git fetch + git merge,一般建议使用这个命令,用法如下:

    1. git fetch origin/master 将远程跟踪分支更新到最新
    2. git diff master origin/master 查看差异

    远程操作中的remote配置

     

  • 相关阅读:
    .net jquery ajax应用(后台)
    .net jquery ajax应用(前端)
    echarts 添加Loading 等待。
    js将数字转换为带有单位的中文表示
    关于Pre-bound JDBC Connection found! HibernateTransactionManager does not 异常小结
    java 并发容器一之ConcurrentHashMap(基于JDK1.8)
    java 并发容器一之BoundedConcurrentHashMap(基于JDK1.8)
    23中java设计模式(1)-- 策略模式
    解决Eclipse自动补全变量名的问题
    Tomcat+Jenkins+SonarQube+SVN+Maven 集成自动化环境搭建(Windows10环境下)
  • 原文地址:https://www.cnblogs.com/dengyulinBlog/p/6531394.html
Copyright © 2020-2023  润新知