zoukankan      html  css  js  c++  java
  • git使用总结

    基本操作

      git init 初始化git仓库,当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,同时自动创建的第一个分支master,以及指向master的一个指针叫HEAD

      git add . 添加到暂存区,有.gitignore时会忽略相关gitignore文件

      git commit -m '提交说明' 把暂存区的所有内容提交到当前分支

      git checkout -- file可以丢弃工作区的修改

      git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区

      git rm <file>删除文件

      git log 查看提交历史

      git reflog 查看所有历史提交

      git remote add origin git@github.com:michaelliao/learngit.git 关联远程仓库,其中origin是远程仓库的名字,可以自己定义,关联后,使用命令git push -u origin master第一次推送master分支的所有内容。此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

      git clone git@github.com:michaelliao/gitskills.git(SSL方式,也可以为https方式) 克隆一个本地库

      git status 查看工作区状态

      git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交

      git checkout -b branch-name origin/branch-name 在本地创建和远程分支对应的分支

      git branch --set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联

      git config --global alias.st status 给命令设置别名

    版本回退

      本地版本回退

        git reset --hard HEAD^ 回退到上一版本

        git reset --hard d5d1657f3dd928c0e 回退到指定commit

      远程版本回退

        通过git log 获取当前commitid a  

        先回退本地版本

        git reset --mixed a HEAD重新指向最新commitid

        git push origin master

      reset的三种方式

        --hard:重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区

        --soft:重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。

        --mixed(默认):重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中  

    分支管理

      master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点,当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上,从此时开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变。

      git branch dev 创建分支

      git checkout dev切换分支

      git checkout -b dev 创建并切换到dev分支

      git branch -a 查看本地所有分支

      git branch -d dev 删除本地分支

      git branch | grep -v 'master' | xargs git branch -D 删除除master以外所有的本地分支

      git merge命令用于合并指定分支到当前分支

      冲突解决 修改冲突文件,add 、commit

    bug修复

      git stash 临时保存工作区变更

      git stash list 查看临时保存的信息

      git stash pop 恢复临时保存的变更并删除stash

      git cherry-pick <commitid> 复制一个特定的提交到当前分支 ,当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场,在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动

      tag标签

      git tag <tagname> [<commitid>]用于新建一个标签,默认为HEAD,也可以指定一个commit id

      git tag -a <tagname> -m "blablabla..."可以指定标签信息

      git tag可以查看所有标签

      git show <tagname>可以看到说明文字

      git push origin <tagname>可以推送一个本地标签

      git push origin --tags可以推送全部未推送过的本地标签

      git tag -d <tagname>可以删除一个本地标签

      git push origin :refs/tags/<tagname>可以删除一个远程标签

    忽略特殊文件

      在项目根目录下生成.gitignore文件,在IDE中都可以快速生成,或者参考https://github.com/github/gitignore复制一份,再加上自定义的忽略文件即可,通常.gitignore也会纳入版本控制。没有加入版本控制的文件,状态为untracked,如果不小心把本应忽略的文件加入了版本控制,再将该文件加入到.gitignore文件是不起作用的,此时需执行git rm -r -f --cache . 删除所有track文件(文件数量较少时可以git rm -r -f --cache <文件名> 将指定文件踢出版本控制),然后配置.gitignore文件,执行add、commit等后续操作。

       详细使用可以参考:https://www.liaoxuefeng.com/wiki/896043488029600

      

  • 相关阅读:
    maven settings.xml 文件
    Ajax配合后端实现Excel的导出
    线性表的链式存储--单链表
    微软最新开源工具PowerToys,让你的win10更加好用!!
    二叉树合集(三):线索二叉树(图文详解)
    二叉树合集(二):霍夫曼树(图文详解)
    二叉树合集(一):二叉树基础(含四种遍历,图文详解)
    二叉树合集(六):高度平衡的二叉搜索树简介(图文解析)
    二叉树合集(五):二叉搜索树(图片详解,含基本操作)
    【LeetCode】108.将有序数组转换为平衡二叉树(中序遍历三种方法,java实现)
  • 原文地址:https://www.cnblogs.com/hhhshct/p/11672463.html
Copyright © 2011-2022 走看看