美文网首页
git cmd ---记录

git cmd ---记录

作者: 幸宇 | 来源:发表于2019-08-06 10:39 被阅读0次
    发展历程:

    2002年以前,志愿者们通过diff方式发给linus,linus通过手工合并代码
    2002 - 2005 之间,linus用BitKeeper管理代码
    2005年之后 linus花了两周时间用C写了一个分布式版本控制系统,一个月之内 Linux系统的源码由Git管理
    2008年 Github网站上线

    区别:

    CVS、SVN :集中式版本控制体统
    Git:分布式版本控制体统
    收费的集中式版本控制体统:ClearCase 特点:安装比windows还大,运行比蜗牛还慢

    GIt下载

    如果你用Debian或者Ubuntu Linux 安装git:sudo apt-get install git
    老一点的 安装:sudo apt-get install git-core,原因:之前有软件叫GIT(SNU Interactive Tools),所以GIT叫git-core。由于Git名气太大,就把GUn Intreactive Tools 改成gnuit,git-core 正式改为git
    设置

        git config user.name /  user.email     查看本地name&email
        git  config --global user.name "Your  Name"
        git  config --global user.email  "Your  Email"
        原因:Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址
    命令
        pwd  显示当前目录
        git init 将文件夹变成Git可以管理的仓库
        ls  -ah  没有看到.git文件 -- 这个目录默认是隐藏的
        git log   查看日志
        git log --pertty=oneline               查看日志 只输出commit版本号和commit注释
        git log --pertty=oneline --abbrev-commit       查看日志 只输出commit版本号和commit注释的7位ID
        git  reset --hard HEAD^              回退到上一个版本
        git  reset --hard 版本号               回退到某个版本
        git reflog                                      记录每一次命令  回退某个版本号但是不知道版本id的时候可用    记录了你的每一次命令
        git diff HEAD  --  做修改文件   查看工作区和版本库里面最新版本的区别
        git checkout -- 文件名                 让文件回到最近一次add或commit时的状态
        git reset HEAD 文件                   撤销add 撤销暂存区的修改
        rm  文件名                                  删除添加的文件
        git checkout --  文件名               恢复已删除的文件,因为版本库里面还有,只是删除了目录中的文件
        ssh-keygen -t rsa -C "youremail@example.com"   在github创建SSH Key 你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的
        git remote add origin 远端项目地址                               将本地git和远端的仓库进行关联
        git push -u origin master                                                -u:因为远程仓库是空的,所以加上-u参数,git不但会把本地的master分支内容推送到远程新的master分支,还会把本地master和远程master分支关联起来,在以后的推送或者拉取就可以简化命令
        git log --graph                                                                 查看分支的合并图
        git log --graph --pretty=oneline --abbrev-commit     只输出commit版本号和commit注释的分支情况  更一目了然
        git merge --no-ff -m "注释文案"  合并分支                   禁用Fast forword合并,会生成一个新的commit
        
        git stash                         将当前工作现场存储起来,方便去先修改bug
        git stash list       查看
        git stash apply     恢复,但是stash内容并不删除
        git stash drop                 删除stash内容
        git stash pop                 恢复并把stash内容删除
        git  stash apply stash@{0}    恢复指定stash
        
        git branch -d 分支名      删除分支
        git branch -D 分支名  强制删除分支
        
        git remote -v                   origin抓取和推送的地址,如果没有推送权限,看不到push的地址
    标签(tag)
        Git标签虽然是版本库的快照,但其实它就是指向某个commit的指针,创建和删除标签都是瞬间完成的
        git tag                           查看所有标签
        git tag <name>            新建一个标签
        git show <tagname>   查看标签信息
        git tag <tagname>  <commit-id>                                            某次提交需要打tag
        git tag -a <tagname>  -m  "说明文案" <commit-id>              创建带有说明的标签    -a:指定标签名  -m:指定说明文字
        git tag -d <tagname>                                                                删除本地标签
        git push origin --tags                                                                推送全部未推送过的本地标签
        git push origin <tagname>                                                       推送本地标签
    删除远程标签
        git tag -d <tagname>                                先将本地标签删除
        git push origin :refs/tags/<tagname>       删除一个远程标签
    修改远程仓库
        git remote rm origin         删除远程现有仓库
        git  remote add origin 路径   添加仓库
        git  remote -v   查看远程仓库
    协议
        ssh:   git://
        https:https://
        ps:https速度慢,每次推送都需要输入口令
    备注
        HEAD  当前版本
        HEAD^    上一个版本  ....  以此类推
    

    Q:
    如果本地有对应远程分支

    git branch branch_nama
    

    如果本地没有对应远程分支

    git fetch origin
    git checkout -t origin/remote_branch_name
    
    切换分支 git checkout branch_name
    

    Q1:

    Pull is not possible because you have unmerged files.

    解决:

    1.pull会使用git merge导致冲突,需要将冲突的文件resolve掉 git add -u, git commit之后才能成功pull.

    2.如果想放弃本地的文件修改,可以使用git reset --hard FETCH_HEAD,FETCH_HEAD表示上一次成功git pull之后形成的commit点。然后git pull.
    注意:

    git merge会形成MERGE-HEAD(FETCH-HEAD) 。git push会形成HEAD这样的引用。HEAD代表本地最近成功push后形成的引用。

    Q#########################
    拉取远程分支并创建本地分支
    1.git checkout -b 本地分支名x origin/远程分支名x
    使用该方式会在本地新建分支x,并自动切换到该本地分支x。
    采用此种方法建立的本地分支会和远程分支建立映射关系。

    2.git fetch origin 远程分支名x:本地分支名x
    使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。
    采用此种方法建立的本地分支不会和远程分支建立映射关系

    建立映射关系:

       git branch --set-upstream-to=origin/分支名
    

    删除分支:

        git branch -D 分支名
    

    新建分支:

        git checkout -b 分支名
    

    合并分支:

        git merge 分支名
    

    拉取远程项目,新建本地分支并跟踪:
    1、git clone 远程项目地址
    2、新建本地分支并提交:

    git checkout -b dbg_lichen_star
    

    3、把新建的本地分支push到远程服务器,远程分支与本地分支同名(当然可以随意起名):

     git push origin dbg_lichen_star:dbg_lichen_star
    

    4、建立当前分支与远程分支的映射关系:

    git branch --set-upstream-to origin/dbg_lichen_star
    

    得到结果如下:
    Branch dbg_lichen_star set up to track...
    5、查看当前本地分支与远程分支的映射关系结果:

    git branch -vv
    

    相关文章

      网友评论

          本文标题:git cmd ---记录

          本文链接:https://www.haomeiwen.com/subject/seqidctx.html