• git 常用命令


    本博客是本人亲身测试,得出的结果在学习中参考了如下博客,非常感谢各位博主的分享

    http://blog.csdn.net/hudashi/article/details/7668798 git   分支合并与撤销

    http://zengrong.net/post/1746.htm    Git查看、删除、重命名远程分支和tag

    https://git-scm.com/book/zh/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E8%A1%8D%E5%90%88      分支的衍合(只是了解并未测试,他与merge类似,原理不一样)

    http://www.cnblogs.com/sawyerzhu/p/3578268.html   常用命令汇总 

    简易的命令行入门教程:
    git --version 查看当前版本状态
    git --clone https://github.com/zce/weapp-demo 这是复制一份到当前文件夹,新文件的名字就是默认的在网络上项目的名
    Git 全局设置:
    //用户
    git config --global user.name "lizhanqi"
    //用户邮箱
    git config --global user.email "lizhanqihd@163.com"
    //查看所有设置
    git config --list
    //设置的帮助
    git config --hlep
    克隆仓库 – git clone复制一份项目到本地
    git  --clone https://github.com/zce/weapp-demo xxxx --depth 1  这个是在复制一份xxx是自己规定下载的文件名,depth是版本历史记录,可以追溯版本历史记录,depth 1是最近一次的提交.
    创建 git 仓库:
    mkdir nine  创建文件夹
    cd nine  进入文件夹
    git init   初始化一个本地的版本库
    touch README.md  创建了一个 README.md文件
    git add README.md  跟踪改动过的指定文件,如果跟踪所有文件, 使用 git add . 
    git commit -m "first commit" 提交本地版本库,以及备注提交原因
    git remote add origin https://git.oschina.net/xxx.git
    (//连接远程项目重点如果这里执行完报错,
    提示出错信息:fatal: remote origin already exists.
    就是说明你之前已经指定过了该项目的远程位置,如果不知道该位置,可以移除之前的远程位置, 
        解决办法如下:
        1、先输入$ git remote rm origin
        2、再输入$ git remote add origin git@github.com:djqiang/gitdemo.git 就不会报错了!
        3、如果输入$ git remote rm origin 还是报错的话,error: Could not remove config section 'remote.origin'. 我们需要修改gitconfig文件的内容
        4、找到你的github的安装路径,我的是C:UsersASUSAppDataLocalGitHubPortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8etc
        5、找到一个名为gitconfig的文件,打开它把里面的[remote "origin"]那一行删掉就好了!
    上传到服务器
    git push -u origin master  推送到指定远程分支(这里可以是分支如果分支不存在自动创建)//将本地版本库更新到网络版本库
    从服务器上拉取代码
    git pull origin master 拉到指定远程分支(这里可以是分支如果分支不存在自动创建)//将本地版本库更新到网络版本库
    查看提交到本地版本库历史
    日志
    git log  查看提交历史
    git log -p <filename> 查看指定文件提交历史
    git  blame <filename> 以类表形式查看指定文件提交历史
    git log --pretty=format:"%h %s" --graph 查看日志显示提交备注
    分支:
    git  branch -a 查看所有分支包括远程端的
    git branch 查看所有本地分支
    git branch -r 查看服务器端分支情况
    git branch <branchName> 创建一个名为branchName的新分支
    git branch -d <branchName> 删除一个名为branchName的本地分支
    git branch -m <oldBranchName> <newBranchName> 将名为oldBranchName的分支名称修改为newBranchName
    git branch -m <newBranchName> 将正在工作分支名称修改为newBranchName
    git checkout <branch/tagname> 切换到指定分支或者标签
    git checkout <localBranchName> 切换到名为localBranchName的本地分支上
    git checkout <remoteBranchName> 切换到名为remoteBranchName的远程分支上,此时未新建分支,而是处于一个名为no branch的临时分支上,还需要使用git branch -b 来创建一个新分支并将该临时分支挂接到新分支上
    git checkout -b <branchName> 创建一个名为branchName的新分支,并切换到该分支上
    git merge <branchName> 将名为branchName的分支合并到当前所处在的分支上
    git push --delete origin <branchName> 删除远程分支
    标签:
    git tag  查看所有本地标签
    git tag <tagname> 基于最新提交创建标签
    git tag -d <tagname> 删除指定的标签
    合并命命令
    git merge命令示例:
    $ git merge branchname  这个命令把分支"branchname"合并到了当前分支里面。
    撤销操作
    git reset 是常用的版本回退,版本回退到之前版本,版本轨迹里会擦除后面的提交
    git revert 也是版本回退,但是是你的仓库内容回退到了之前版本内容,但是版本号没有减,还是增加了一个版本,这个版本就是你回退的操作。
    例如:你提交了  v1--->v2--->v3, 现在想回退的v2版本
    如果git reset  则版本轨迹变为  v1--->v2
    如果git revert  则版本轨迹变为 v1--->v2--->v3--->v4  (v4版本内容和v2完全相同)
    reset命令有3种方式:
    1:git reset --mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息(这里说的commit就是提交后的版本号和日志,而index是add 后的标记),使用这种方式需要从新使用 add . 后在commit
    2:git reset --soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
    3:git reset --hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
    撤销上次的合并
     git reset --hard HEAD
    或者其他的也可以回退 
    首先得到你要回退到的版本号:(查看所有提交版本的索引),这里也可以使用 git log 查看提交日志中的版本号全部,或者使用开头一部分,git自己会去寻找(4或5位就差不多,如果有重复的提交失败,可多些几位数)
    git reflog   (这个是获取每次操作的记录) 这里的操作记录版本号是commit 的版本号一部分
    执行回退
    git reset --hard yourCommitNum
     
     
     
     
     测试中问题:

    1.  打了新分支,新分支中修改了内容,

      没有commit就切换到其他分支或者主分支,

         那么切换的分支中也有上次的内容,

      解决方案:

      这就需要我们,修改完分支内容之后commit完了再切换分支,这样分支之间就有了区别

    2.远程删除分支后,本地的Git分支-a依然能看到的解决办法。(这个标题点击后进入原文)

    解决方案:
    使用命令git remote show origin,可以查看远程地址,远程分支,还有本地分支与之相对应关系等信息。
    此时我们可以看到那些远程仓库已经不存在的分支,根据提示,使用git remote prune origin命令:
    好了到此再次查询就ok了
     
    解决后记:一下仅供了解

    烟花易冷心易碎 2016/10/17 星期一 15:45:53
    @Ed  我看其他的地方说的,prune是删除没有对应的版本分支,fetch 是获取分支的最新版本,与pull类似,只是一个会merge一个不会,我目前看到的结果是这样的不知道对不对,有错误希望指正

    E 2016/10/17 星期一 15:48:18
    @烟花易冷心易碎 哦我说的不是这个。之前的 git fetch origin 没有效果,有点奇怪。看过文档 git fetch --prune origin 应该和 git remote prune origin 达到一样的效果,因为 git fetch 缺省是指增加不删除
    E 2016/10/17 星期一 15:48:36
    你说的那个是fetch 和 pull的区别,是没有错的
     

    Git fetch和git pull的区别

    血刺青衣庤佺 | 浏览 8738 次  2014-12-30 13:46
    2014-12-30 13:51 最佳答案
     
    Git中从远程的分支获取最新的版本到本地有这样2个命令:
    1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge

    git fetch origin master
    git log -p master..origin/master
    git merge origin/master
    以上命令的含义:
    首先从远程的origin的master主分支下载最新的版本到origin/master分支上
    然后比较本地的master分支和origin/master分支的差别
    最后进行合并
    上述过程其实可以用以下更清晰的方式来进行:

    git fetch origin master:tmp
    git diff tmp
    git merge tmp

    从远程获取最新的版本到本地的test分支上
    之后再进行比较合并
    2. git pull:相当于是从远程获取最新版本并merge到本地

    git pull origin master

    上述命令其实相当于git fetch 和 git merge
    在实际使用中,git fetch更安全一些
    因为在merge前,我们可以查看更新情况,然后再决定是否合并
    结束
     
  • 相关阅读:
    CF666E. Forensic Examination
    bzoj1396 识别子串
    bzoj2839 集合计数
    unknown
    Hibernate中一级缓存和二级缓存
    亲, 我们来再重申一遍"=="和"equals的区别
    BigDecimal类
    序列化详解
    利用简单的参数传递来实现单条查询的easyui-datagrid
    Oracl 动态执行表不可访问,本会话的自动统计被禁止
  • 原文地址:https://www.cnblogs.com/lizhanqi/p/5963131.html
Copyright © 2020-2023  润新知