git命令

作者: 花白少年梦 | 来源:发表于2021-10-09 15:59 被阅读0次

    一: 分支策略
    在实际开发中,我们应该按照几个基本原则进行分支管理:
    首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
    那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
    你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了

    1. Git鼓励大量使用分支:
      查看分支:git branch
      查看远程分支: git branch -a
      创建分支:git branch <name>
      切换分支:git checkout <name>
      创建+切换分支:git checkout -b <name>
      合并某分支到当前分支:git merge <name>
      合并分支代码的内容查看:git merge --no-ff -m '合并ysdev的H5中的跳转' ysdev
      删除分支:git branch -d <name>
      删除远程不存在的本地分支:git fetch -p
      合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并

    2. 用git log --graph命令可以看到分支合并图
      带参数: git log --graph --pretty=oneline --abbrev-commit
      向前查看log日志: git ref-log

    3. git checkout -b 本地分支名 origin/远程分支名 从远程指定分支拉取到当前新建分支

    4. git add -A 提交所有变化
      git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
      git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

    5. 推送本地分支 local_dev 到远程分支 dev 并建立关联关系
      ①远程已有 dev 分支并且已经关联本地分支local_dev且本地已经切换到local_dev
      git push
      ②远程已有 dev 分支但未关联本地分支local_dev且本地已经切换到local_dev
      git push -u origin/dev
      ③远程没有有 dev 分支, 并本地已经切换到local_dev
      git push origin local_dev:dev

    6. 修改分支名称
      git branch -m oldName newName

    7. 别名
      git config --global alias.co checkout
      //自定义打印log
      git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -
      %C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

    8.强制性推动代码
    错误信息如下:error: src refspec development does not match any.
    error: failed to push some refs to 'https://gitee.com/liuchengding/YiBangAppiOS.git'
    解决方案:git push origin HEAD:[branch]
    9.提交一个空的文件路径,其他人拉代码时没有该文件目录,
    解决方案:在终端,cd 文件路径,然后执行 find . -type d -empty -exec touch {}/.gitignore ;
    10.删除远程不存在的本地分支:
    git remote prune origin

    11.回到制定提交的commit上
    git reset --hard commitID

    1. 版本回退
      问题描述: 当正在开发新功能时, 发现上一个发布的版本有bug,需要修复上线.此时要回退发布的版本去修改.

    特别注意:
    如果这个时候你立马投入与bug的战斗,修改后发版本,那么你就犯了严重的错误,因为你修改后的代码是无法与正在开发的版
    本合并哒,也就是说你的修改并不能加入现有的代码。所以:
    通过标签回退版本后,要马上拉一个分支,然后当前主干分支要立即回到原来的位置,否则正在开发的代码可能白干了,接着
    在刚拉的分支上修改bug,修改完毕合并到主干上
    步骤: 1. 回退版本后,立即拉取分支,这里取名bugfix分支
    2. 主干分支立即回到原来的位置
    3. 切换到bugfix分支,修改bug
    4. 修改后合并到主干上
    5. 解决冲突, 打标签, 推送远程

    1. 丢弃本地修改
      git checkout xxx(表示文件路径)

    二.应对的问题

    1. 出现fatal: refusing to merge unrelated histories
      需要允许合并 git pull --allow-unrelated-histories

    2. 出现git branch --set-upstream-to=origin/<branch> master
      则需要远程和本地仓库关联: git branch --set-upstream-to=origin/远程仓库 本地仓库

    3. Git关于忽略Xcode工程中UserInterfaceState.xcuserstate文件
      在忽略文件中加入:
      project.xcworkspace
      xcuserdata
      UserInterfaceState.xcuserstate
      project.xcworkspace/
      xcuserdata/
      UserInterface.xcuserstate
      然后:
      git rm --cached [YourProjectName].xcodeproj/project.xcworkspace/xcuserdata/
      [ YourUsername].xcuserdatad/UserInterfaceState.xcuserstate
      提交: git commit -m "Removed file that shouldn't be tracked"

    //git命令链接地址
    https://gitee.com/all-about-git

    六、标签

    列出所有tag

    $ git tag

    新建一个tag在指定commit

     git tag V1.6.0 9d4b6557f67a0c43155cd665a5fdeec60d17a9d4
    

    $

    提交所有tag

    $ git push [remote] --tags

    七。强制推送本地代码到git仓库
    进到项目本地
    然后

    1. git init
    2. git add .
    3. git commit -am “###” ——-以上3步只是本地提交
      4.git remote add origin git@xx.xx.xx.xx:repos/xxx/xxx/xxx.git
      5.git push origin 本 地分支:远程分支
      6 git push -u origin master -f 强制push

    八:提交git 超过100MB问题。解决如下:
    终端执行命令:git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch 超过100MB的文件名称' --tag-name-filter cat -- --all

    相关文章

      网友评论

          本文标题:git命令

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