美文网首页
Git常用操作和命令

Git常用操作和命令

作者: 番茄tomato | 来源:发表于2019-10-28 11:41 被阅读0次

    本篇结构:工作流+单独命令
    以使用频率排序

    一.工作流

    1.pull代码,开新分支,开发完成,push代码

    添加远程URL
    git remote add origin url
    git clone url 一样的效果 克隆远端仓库代码)
    拉取最新的dev代码
    git pull origin dev
    开启并切换到feature分支
    git checkout -b feature
    在feature 分支完成开发后
    将修改的代码添加到暂存区
    git add .
    查看修改 刚刚修改的文件是否被追踪到
    git status
    将暂存区的代码提交到本地仓库 写入信息
    git commit -m "this is a commit message"
    将本地仓库的代码push到远程
    git push origin feature

    最后可以在远程管理页面中加入pull request

    2.commit的合并

    https://www.jianshu.com/p/29bbZZ983ec48a
    //查看提交日志
    git log

    image.png

    //比如我们需要合并前3个commit
    git rebase -i HEAD~3

    1572235007(1).jpg
    (进入vi模式 输入i进入编辑模式 esc退出编辑模式 输入wq保存退出 或者q!不保存退出 或者ZZ保存退出)
    在不需要的commit之前 把pick改为squash或者s
    然后Esc+ZZ保存退出
    git会自动合并并且弹出合并信息
    此时我们可以选择是否要保留message 不保留的话则在message之前加#号 注释起信息
    image.png
    完成注释后:
    Esc+ZZ
    合并完commit后
    强制push
    git push -u origin frature -f

    3.衍合分支 rebase

    比如我要将YIT-3872分支合dev进行衍合
    (YIT-3872是从dev开出来的 但是后来 dev的代码又发生了改变 所有此时如果直接push YIT-3872时 需要将最新的dev代码衍合进来 否则会失败)
    第一步:
    在衍合之前要将YIT-3872的代码 commit 并且 push 到远端库 我里commit给是message是 “qqq”
    因为rebase 是一个相对来说比较危险的操作 很容易出错 所以在push代码作为一个备份

    当前分支YIT-3872
    git rebase dev
    执行过程中可能会有代码冲突 依据YIT-3872的commit一个个对比
    比如我这里:

    image.png
    BackupPhotoPresent.kt这个文件中出现了代码冲突 需要我手动取解决
    打开IDE android studio 找到这个文件 看冲突的地方:
    image.png
    这里我们可以看到最新的dev代码HEAD和我们本地commit的代码有冲突
    我们依据实际情况选择保留哪个
    dev代码是等号上方
    qqq本地代码是等号下方
    也可能是所有都要保留

    解决完成所有冲突后
    git add .
    将刚刚的修改加入缓冲区
    git status
    查看修改的文件是否被追踪到
    然后
    git rebase --continue
    继续YIT-3872的下一个commit和 dev HEAD进行对比
    如果没有冲突 则会返回以下结果
    Applying: qqq
    此时表示衍合完成
    衍合完成最后一步:
    强制push
    git push origin YIT-3872:YIT-3872 -f

    4.暂时隐藏修改

    git stash 将原本的分支修改保存隐藏起来
    然后切换分支修改其他小bug
    要回来继续最开始的分支时:
    git stash list 查看所有存储的修改
    git stash apply stash@{0} 恢复显示list中的第一个修改
    git stash drop stash@{0} 删除list中的存储的第一个数据

    5.添加忽略文件

    1.将.idea目录加入ignore清单:
    echo '.idea' >> .gitignore 2.从git中删除idea: git rm -r --cached .idea
    3.将.gitignore文件加入git:
    git add .gitignore 4.提交.gitignore文件,将.idea从源代码仓库中删除: git commit -m '忽略.idea'
    5.Push到Git服务器:
    $ git push

    6.将本地项目上传到github库

    cd "E:\Study\Project\TomatoStudy"进入项目文件地址
    git init初始化git
    git add .添加缓冲区
    git status查看文件追踪情况
    git commit -m"my first commit finish TomatoStudy"将文件添加到本地仓库
    添加远程仓库地址
    git remote add origin https://github.com/yuqiaodan/TomatoStudy.git
    保存到远程仓库
    git push -u origin master

    二.单独命令

    git reset --hard放弃本地修改
    git branch 查看所有分支
    git branch -d dev删除指定分支dev
    git clone -b dev URLclone指定分支
    git checkout -b dev origin/dev不是从原分支切出dev,而是从远程仓库拉下dev分支并切换

    git commit --amend修改commit信息 修改完成后强制push

    git push -u origin dev -f强制push

    大写I进入编辑模式
    编辑模式按ESC+大写的两下Z就可以保存并退出

    三.不常用命令 作记录

    基本命令 https://www.cnblogs.com/ldj3/p/9172804.html
    分支详解 https://www.cnblogs.com/matengfei123/p/8252128.html
    创建版本库:
    git init (初始化本地版本库)
    git clone <url> e/myproject (克隆远程版本库 到指定位置)
    将文件从工作区添加到暂存区:
    git add 目录 /file.name: 添加整个目录下的文件或添加一个文件

    将暂存区的文件commit到本地仓库:
    git commit -m"First commit": 将暂存区的文件commit到本地仓库。
    (-m “message” 信息参数用于说明)
    配置远程origin的一些命令:
    git remote add origin url (添加远程origin)
    git remote -v:查看当前的origin是什么
    git remote rm origin:删除远程origin

    将本地仓库的代码push到远程仓库(慎重慎重):

    git push -u origin master(第一次push的时候要- u)
    git push origin master

    获取代码:
    git pull origin master (获取代码并快速整合)
    git fetch origin (从远端库获取代码)

    合并与衍合:
    git merge <branch> # 合并指定分支到当前分支
    git merge --abort # 取消当前合并,重建合并前状态
    git merge dev -Xtheirs # 以合并dev分支到当前分支,有冲突则以dev分支为准给i他
    git rebase <branch> # 衍合指定分支到当前分支

    git branch -d dev 删除指定分支

    git branch 查看所有分支

    commit和push的区别:
    commit操作的是本地库
    push操作远程库
    git clone顾名思义就是将其他仓库克隆到本地
    git pull是拉取远程分支更新到本地仓库的操作
    git pull = git fetch + git merge

    四.Git小知识

    4.1 开发过程中master发生重要修改时该怎么办

    遇到的问题:我在我的分支dev上进行开发,但开发过程中,master分支产生了非常非常重要的修改,需要将修改内容合并到我的dev分支,再继续开发。
    解决办法:首先明确一点,我们不能操作master,但是可以在master现有的基础上开启一个新的分支future,然后将future分支合并到dev,这时可能会有冲突需要解决,解决完成后,可以删除掉future分支,直接继续在dev进行开发就行。

    相关文章

      网友评论

          本文标题:Git常用操作和命令

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