美文网首页
git基础命令.md

git基础命令.md

作者: brother阿张 | 来源:发表于2017-04-16 23:16 被阅读0次

    [toc]

    1 基础起步

    1.1 ubuntu的安装

    安装

    apt-get install git
    https://github.com/magicmonty/bash-git-prompt  # 显示更好
    

    初始设置用户基本信息

    git config --global user.email "jinzhang_hotline@163.com"
    git config --global user.name "zhangjin"
    git config --global 
    

    1.2 建立空仓库

    1 mkdir Workspace
    2 cd Workspace
    3 git init
    

    1.3 添加文件

    • 1 用命令git add告诉Git,把文件添加到仓库:
    git add readme.txt
    git add *
    # 进阶
    git add -A   # 保存所有的修改
    git add .     # 保存新的添加和修改,但是不包括删除
    git add -u   # 保存修改和删除,但是不包括新建文件。
    
    • 2 用命令git commit告诉Git,把文件提交到仓库:
    git commit -m "wrote a readme file"   # 因为commit可以一次提交很多文件
    git  commit  -am 'wrote a readme file'     add所有修改和commit一起
    

    1.4 查看信息

    • 1 查看提交信息:
    git log --oneline
    
    • 2 查看提交历史
    git reflog
    
    • 3 查看修改文件的状态
    git status -s
    # 第一个字母为版本库和缓存区的区别
    # 第二字母为缓存区和工作区的区别
    
    • 4 查看分支
    git branch
    
    • 5 查看远程仓库信息
    git branch -a
    git remote -v #基本信息
    git remote show  origin# 详细信息
    
    • 6 一些修改的信息
      比较整个工程的内容不同


    1.5 撤销和版本回退

    • 原理是从旧的存在中,复制出来替换
    git reset -- filename 删除暂存区的add (add逆向操作)
    git checkout  -- filename 撤回工作区内容 (从暂存区的最近一次add,复制出来)
    git checkout  . 撤回所有工作区内容* *
    
    默认的方式
    git reset --mixed HEAD^ # 退回上一个的版本(当前编辑的还在)
    git reset --mixed 3628164 # 退回制定版本
    
    git reset --soft HEAD^ # 退回上一个的版本 (当前编辑的还在,add到了index中)
    git reset --soft 3628164 # 退回制定版本
    
    git reset --hard HEAD^ # 退回上一个的版本(当前编辑的不在,都是原先的版本)
    git reset --hard 3628164 # 退回制定版本
    
    git reset --keep HEAD^ # 退回上一个的版本(当前编辑的不在,都是原先的版本)
    git reset --keep 3628164 # 退回制定版本
    
    

    后悔药

    git reflog 
    
    • 两次合并成一次
    git checkout HEAD -- files  直接回退两步
    
    git commit --amend 修改最近一次提交的-m的信息
    
    

    1.6 标签

    # 本地
    git tag -a v1.4 -m 'my version 1.4'  # 添加标签
    git tag -d v0.1.2 # 删除标签
    git tag  # 查看标签
    git show v1.2  # 查看标签的信息
    git tag -a v1.2 9fceb02  # 后期打标签
    git checkout -b branch_name tag_name #从tags创建一个分支
    # 远程
    git push origin v1.0.0  #推送远程分支
    git push origin --delete  v1.0.0 #删除远程分支
    git log --oneline -5
    

    2 远程和分支

    2.1 远程仓库

    • 1 生成秘钥
    ssh-keygen -t rsa -C "youremail@example.com"
    #/home/jin/.ssh/id_rsa 生成的位置
    
    • 2 推送
    ## 首次
    git remote add origin git@github.com:michaelliao/learngit.git 
    #添加远程仓库 git remote add <仓库> <地址>
    git add *
    git commit  -m  "wrote a readme file"
    git push --set-upstream  origin master  #首次推送master分支空仓库
    git push -u  origin maste
    git push --set-upstream origin feature/jin   #首次推送远端没用的分支
    git branch --set-upstream-to=origin/master  #首次推送关联有内容的仓库
    git push origin master #推送 可简化为 git push
    ## 日常
    git push # 默认推到当前分支
    git push origin master
    
    • 3 拉取
    ##首次
    git clone git@github.com:michaelliao/gitskills.git # 克隆远程的仓库
    git checkout --track origin/serverfix    # 首次拉取远程分支,本地没有
    git checkout -b dev origin/develop   #将远程仓库分支重名
    git remote show origin # 查看远程仓库的分支详细信息
    git remote -v  #查看远程仓库的信息
     ##日常拉取
    git fetch origin master
    git fetch origin master:tmp
    git diff tmp
    git merge temp
    git pull origin master
    

    2.2 分枝操作

    git branch  -a # 查看分支 如果看不到pull一下
    git branch <name> # 创建分支
    git checkout <name> # 切换分支
    git checkout -b <name> # 创建+切换分支
    git merge <name> # 合并某分支到当前分支
    git branch -d <name> # 删除本地分支
    git push origin --delete  develop_h  # 删除远程分支
    git branch -d -r origin/develop_h  # 删除远程分支
    git branch -m oldname newname #重命名分支
    git branch --track debug origin/debug # 本地关联远程分枝
    

    合并分支

    • 压缩合并(squashed commits)
      将一条分支上的若干个提交条目压合成一个提交条目,提交到另一条分支的末梢。
      把dev分支上的所有提交压合成主分支上的一个提交,即压合提交:
    git checkout master
    git merge --squash dev
    # 此时,dev上的所有提交已经合并到当前工作区并暂存,但还没有作为一个提交,可以像其他提交一样,把这个改动提交到版本库中:
    git commit –m “something from dev”
    # 即,使用--squash参数,这样提交的commit只有一个parent,即原来的分支,
    
    • 冲突合并
    git merge dev -no-ff -m'asasdfas'
    #xxx.md 出现冲突 修改文件内容
    git -a commit "xxx.md" #重新提交
    

    git stash

    git stash # 暂时分支修改的内容,切换分支时不会把修改内容带过去
    git stash pop # 回复封存内容
    git stash list # 查看封存信息
    git stash stash@{0} # 回复特定版本的代码
    

    3 git 的设置

    版本查看

    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
    

    4 一些问题

    detached head

    git checkout fef4501
    

    游离头的问题,切换分支会消失

    git branch temp fef4501 # 以这个头新建一个临时分支
    git checkout master
    git merge temp
    git branch -d temp
    

    参考文献

    http://marklodato.github.io/visual-git-guide/index-en.html
    https://git-scm.com/book/zh/v2

    相关文章

      网友评论

          本文标题:git基础命令.md

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