zoukankan      html  css  js  c++  java
  • git实战经验(很实用)

    推荐学习git很好的网站
    https://www.breakyizhan.com/git/216.html

    以下内容,虽然编排不行,但是请认真的读下去,都是自己平时请自操作的,放心使用.

    这是个人的github,喜欢请支持一下,欢迎star

    https://github.com/haibiscuit

    个人qq:614718165         (加我时请标明添加原因)             

    一:一般操作
        (1).如果是第一次操作(需求一)
        git init                                                    #初始化本地仓库
        git remote add origin https://username:password@github.com/huzhicheng/test__11.git           #本地仓库与远程仓库建立联系
        git pull #先拉取远程仓库内容,即版本更新(很重要)
        //或者

        git fetch --all && git reset --hard origin/master && git pull    #在修改前远程强制覆盖本地代码(注意本地内容会被覆盖,在执行此命令前本地不要有内容)
        git status #查看本地仓库状态
        git add README.md                                        #将README.md文件添加到暂存区
        git commit -m "first commit"                                     #将暂存区内容保存到本地
        git push -u origin master                                      #推送本地修改到远程master分区

    二:参与已有项目
        需求说明:远程仓库已经存在,并且仓库中已有文件
        具体操作:
    (1).方式一
    git clone https://username:password@github.com/haibiscuit/AioSocket.git #此时不会覆盖本地新增的内容
    cd AioSocket                                       #直接进入项目目录便可以操作
                   (2).方式二
                   git init #新建仓库
    git remote add origin https://username:password@github.com/huzhicheng/test__11.git  #本地与远程仓库建立关联
    git fetch --all && git reset --hard origin/master && git pull                           #强制覆盖本地仓库,即可操作
                   
    三:远程代码强制覆盖本地代码(可以解决本地与远程版本的冲突)
        需求说明:用于远程与本地版本的同步
        具体操作:
                   (1).方式一
                        git强制覆盖:
        git fetch --all                        #从远程获取最新版本到本地,不会自动merge
        git reset --hard origin/master         #回退到远程的版本,不执行这一步本地看不到拉取的内容
        git pull                               #这一步非常重要,从远程获取最新版本并merge到本地(弥补fetch的缺点)

                   (2).方式二
                        git强制覆盖本地命令(单条执行):
                git fetch --all && git reset --hard origin/master && git pull

    四:本地仓库与远程仓库的回退技巧
    (1).git reset
              适用场景:恢复到之前提交的版本,且那个版本之后的提交都不要了
            
    标准格式:
    git reset --soft|--mixed|--hard <commit_id> #一般选择--hard参数,源码会回退到某个版本,commit和index 都会回退到某个版本

    示例:
    git reset --hard HEAD^      #本地回退到上一个版本
    git push -f #强制推送,使远程版本回退(不推荐)
                    
    (2).git revert
    原理:通过反做在当前版本的下面再创建新的版本
            需求说明:想要恢复之前的版本,又想保留目标版本之后的版本

    标准格式:
         git revert <commit_id>

    示例:
    git revert HEAD               #回退到上一个版本(用着很不爽,不过很推荐使用)
                    git commit -m "版本号"   
    git push

              补充:
    git revert HEAD #撤销前一次提交
    git revert HEAD^ #撤销前前一次提交
    git revert HEAD~n #撤回前n+1次提交

    五:本地仓库与远程仓库创建关联和移除关联
    (1).本地仓库与远程仓库创建关联
    git remote add origin https://username:password@github.com/huzhicheng/test__11.git

            (2).本地仓库与远程仓库取消关联
            git remote remove origin


    六:本地仓库与远程仓库的版本信息查看(在修改本地仓库时先查看版本信息)
    (1).本地仓库的版本信息查看
                git log #简便的方式
                git reflog #打印更加详细

            (2).远程仓库的版本信息查看
                git log origin/master -n 3    #打印三条版本的日志


    七:撤销暂存区修改
    1.如果未放入暂存区(即未使用git add命令)
    git checkout --filename
    //或是放弃所有的修改
    git checkout


    2.已经放入暂存区,从暂存区移除
    git reset HEAD filename
    //或是撤销所有的暂存区的内容
    git rm --cached file

    (接着使用第一步的git checkout --filename)


    八:分支操作
    (1).创建分支 :不同分支上的操作互不影响 (master只是git为你默认创建的一个分支,和自己创建的一样,只是名字不同)

    git branch <branch-name> //创建分支

    (2).推送到远程服务器(即,使本地主机上的指针推送到远程主机)
    git push origin <branch-name>


    (3). 查看不同的分支

    git branch -a //查看本地和远程的所有分支
    git branch -r //查看远程分支
    git branch -l //查看本地分支
    git branch -v //查看每一个分支的最后一次提交
    git branch --merged //查看哪些分支已经合并到当前分支 --no


    (4).查看各个分支当前所指对象

    git log --oneline --decorate

    (5). 切换分支

    git checkout <branch-name>


    git checkout -b <branch-name> //相当于两条命令,一条创建,一条切换
    git checkout -b issue53 //创建 issue53分支并切换

    (6). 合并分支

    git merge <branch-name> //将当前所在的分支和 <branch-name>合并 ,简单将指针向前推进(fast-forward)
    ★合并有冲突的分支:按上面所述命令合并后,有冲突的文件会以未合并状态(unmerged)标识出来,使用git status 查看,然后手动解决,解决后用git add标示已解决
    git status
    git add

    (7).删除分支

    git branch -d hotfix //对于已合并的分支,删除分支hotfix
    git banch -D hotfix // 对于未合并的分支 ,强行删除分支

    (8). 推送 :将代码推送到远程服务器上

    git push <remote-name> <branch-name>
    git push origin master //推送到远程的origin服务器的master分支上
    git push origin <local branch-name>:<remote branch-name> //本地和服务器上的分支名不同
    git push origin servefix:remote-server //将本地的serverfix推送到远程的origin的remote-server上

    (9). 拉取

    git pull //相当于git fetch 然后 git merge


    (10).跟踪分支

    ★从远程服务器上检出本地分支会自动创建一个跟踪分支(上游分支),git pull就是根据跟踪分支来向那个分支抓取

    ★检出并创建分支和其快捷方式

    git checkout -b <local branch-name> <remote-name>/<branch-name>

    git checkout --track <remote-name>/<branch-name> //创建并检出分支的快捷方式
    i.e

    git checkout --track origin/develop


    (11). 删除远程分支

    git push origin --delete serverfix //删除远程分支serverfix

    九:经验总结
          (1).在使用git push -u origin master时本地版本需要和远程仓库的版本一致,否则不能提交信息

  • 相关阅读:
    活久见!Jmeter也能实现文件传输和发送邮件啦
    震惊!资深测试开发已经不用postman测试接口了!
    app测试日志如何获取,logcat值得拥有
    TestNG学会了,Java单元测试你就掌握了一半
    超实用:精准衡量接口测试覆盖率
    Reviewboard用户指南(1.3)—— Getting Started: General Workflow
    Reviewboard用户指南(1.2)—— Getting Started: What is Code Review?
    Reviewboard用户指南(1.4)—— Getting Started: Account Settings
    Reviewboard管理员指南(4.1)—— Overview of the Administration UI
    Reviewboard用户指南(6.4)——Issue Tracking
  • 原文地址:https://www.cnblogs.com/haibiscuit/p/haibiscuit.html
Copyright © 2011-2022 走看看