美文网首页
git 命令的简单使用

git 命令的简单使用

作者: 涛涛123759 | 来源:发表于2019-07-16 15:15 被阅读0次

    1、 git 拉项目

    #在自己的工作区,通过git bash
    1、git clone url(gitlab上项目的url) 从gitlab上clone下项目
    #进入该项目clone的目录
    2、git branch -a (查看当前项目)  所有的分支
    

    2、 git 回滚项目

    #打印日志
    1、git log
    #回滚到指定的版本(e377f60e28c8b84158 回滚到的版本)
    2、git reset --hard e377f60e28c8b84158
    #或
         git revert HEAD(e377f60e28c8b84158)
    #强制提交
    3、git push -f origin master
    #或 
    git push --set-upstream origin test_branch
    

    3、 git 提交到分支

    git push origin pu_branch(分支名)
    

    4、 git 切换分支

    git checkout 具体的branch名字    切换到对应的分支
    

    5、合并分支

    #查看各个分支情况
    git log --oneline --decorate --graph --all
    git log --oneline --decorate
    

    将分支 test_branch 的代码合并到 pu_branch

    #切换分支
    1、git checkout pu_branch
    #合并代码
    2、git merge test_branch
    # --commit参数使得合并后产生一个合并结果的commit节点。该参数可以覆盖--no-commit。
    # --no-commit参数使得合并后,为了防止合并失败并不自动提交,能够给使用者一个机会在提交前审视和修改合并结果。
    # --edit和-e用于在成功合并、提交前调用编辑器来进一步编辑自动生成的合并信息。因此使用者能够进一步解释和判断合并的结果。
    # --no-edit参数能够用于接受自动合并的信息(通常情况下并不鼓励这样做)。
    git merge --no-edit test_branch
    

    6、git rebase

    rebase 实际上就是取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去,采用rebase的方式进行分支合并,整个master分支并没有多出一个新的commit。

    #切换到bugFix分支
    1、git checkout bugFix
    #提交一次(提交在bugFix分支上)
    2、git commit - m "标志"
    #使用git rebase把 bugFix 分支里的工作直接移到 master 分支上(移动以后会使得两个分支
    #的功能看起来像是按顺序开发,但实际上它们是并行开发的。
    3、git rebase master
    #注意:提交记录 C3 依然存在(树上那个半透明的节点),而 C3是我们 Rebase 到 master 分支上的 C3 的副本。
    #切换到master分支上(为了进行更新master的操作)
    4、git checkout master
    #把master的 rebase 到 bugFix 分支上(由于 bugFix 继承自 master,所以 git 只是简单的把 
    #master 分支的引用向前移动了一下而已。)
    5、git merge bugFix
    
    git checkout master
    git pull
    git checkout local
    git rebase -i HEAD~2  //合并提交 --- 2表示合并两个
    git rebase master---->解决冲突--->git rebase --continue
    git checkout master
    git merge local
    git push
    
    • git merge 操作合并分支会让两个分支的每一次提交都按照提交时间(并不是push时间)排序,并且会将两个分支的最新一次commit点进行合并成一个新的commit,最终的分支树呈现非整条线性直线的形式
    • git rebase 操作实际上是将当前执行rebase分支的所有基于原分支提交点之后的commit打散成一个一个的patch,并重新生成一个新的commit hash值,再次基于原分支目前最新的commit点上进行提交,并不根据两个分支上实际的每次提交的时间点排序,rebase完成后,切到基分支进行合并另一个分支时也不会生成一个新的commit点,可以保持整个分支树的完美线性
    常用指令

    git rebase -I dev 可以将dev分支合并到当前分支
    这里的”-i“是指交互模式。就是说你可以干预rebase这个事务的过程,包括设置commit message,暂停commit等等。
    git rebase –abort 放弃一次合并
    合并多次commit操作:
    1 git rebase -i dev
    2 修改最后几次commit记录中的pick 为squash
    3 保存退出,弹出修改文件,修改commit记录再次保存退出(删除多余的change-id 只保留一个)
    4 git add .
    5 git rebase --continue

    7、误删之后恢复

    1、git log --oneline --decorate --graph --all
    #当我们是丢掉了我们第二次的提交,没有办法找回来了。但是 reflog 就是用来解决这个问
    #题的。简单的说,它会记录所有HEAD的历史,也就是说当你做 reset,checkout等操作的
    #时候,这些操作会被记录在reflog中
    2、git reflog
    #所以,我们要找回我们第二commit,只需要做如下操作:
    3、git reset --hard 98abc5a
    

    8、删除具体某个提交commit的方法

    git revert b7231c0
    或者
    git revert b7231c0 -m 1
    或者
    git rebase -i 38d60623
    
    • 将#2这一行前面的pick改为drop,然后按"shift" + ":", 在输入“wq”保存退出
      至此已经删除了指定的commit,可以使用git log查看下
    • git push origin HEAD --force 然后推送到远程仓库
      此时 commit_B 就被干掉了,没有影响后面的提交

    9、查看/修改自己的用户名和邮箱地址

    #查看
    $ git config user.name
    $ git config user.email
    #修改
    $ git config --global user.name "xxx"
    $ git config --global user.email "xxx"
    

    8、查看配置命令

    #查看系统config
    git config --system --list
    #查看当前用户(global)配置
    git config --global  --list
    #查看当前仓库配置信息
    git config --local  --list
    

    9、同步和删除远程分支

    • 同步:
    git fetch -p
    
    • git 删除本地分支
    git branch -D br
    
    • git 删除远程分支
    git push origin :br  (origin 后面有空格)
    

    10、提示

    # 显示每次修改的文件列表及修改状态
    git log --name-status 
    # 显示每次修改的文件列表
    git log --name-only 
    # 显示每次修改的文件列表及文件修改的统计
    git log --stat 
    # 显示每次修改的文件列表
    git whatchanged 
    # 显示每次修改的文件列表及统计信息
    git whatchanged --stat
    # 显示最后一次的文件改变的具体内容
    git show
    

    参看文章:

    git合并分支git Merge细节部分

    这个是重点要说的内容,过程比本地回滚要复杂
    应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布
    原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支

    操作步骤:

    1、git checkout the_branch
    2、git pull
    3、git branch the_branch_backup //备份一下这个分支当前的情况
    4、git reset --hard the_commit_id //把the_branch本地回滚到the_commit_id
    5、git push origin :the_branch //删除远程 the_branch
    6、git push origin the_branch //用回滚后的本地分支重新建立远程分支
    7、git push origin :the_branch_backup //如果前面都成功了,删除这个备份分支
    

    相关文章

      网友评论

          本文标题:git 命令的简单使用

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