美文网首页
Git 常用命令

Git 常用命令

作者: 7cf6c01a5633 | 来源:发表于2018-12-07 14:34 被阅读0次

    撤销

    1. 查看log git log找到要撤销的commit id
    2. 撤销后并还原文件git reset --hard commit id 这里的commit id是要撤销的id的前一个,就是要撤销到哪一个commit
    3. 撤销后可以再次提交 git reset commit id 这里的id同 2
    4. 撤销任意一个commit git revert commit id

    撤销远程的

    1. 如果是最近的一个commit,先本地撤销后,然后强制推送git push origin master --force就可以了
    2. 如果是任意一个commit,这个除了新建分支使用cherry-pick来解决之外,最简单的方式是git rebase。rebase命令可是使用对commit进行编排(删除,修改),具体的可以参考这篇文章

    忽略某个文件

    1. 临时的忽略一个文件,比如在vue项目中生成的index.html文件每次都会有变动,但是并不是每次都想提交,如果不想再提交的时候看到这个文件,我们可以使用update-index命令
      a. git update-index --assume-unchanged <file>
      b. git update-index --no-assume-unchanged <file>

    避免pull出现Merge branch 'master' of xxx, 有3种方法

    1. git pull --rebase 这个会先撤销本地的所有commit, pull最新的代码,然后在新的代码上应用所有的本地commit,如果出现conflict,你可以手动merge,然后执行git rebase --continue
    2. 在.git/config中配置每次pull都rebase
    [branch "master"]
      rebase = true
    

    cli配置 git config branch.master.rebase true

    1. 全局配置
    [branch]
      autosetuprebase = always
    

    cli配置git config --global branch.autosetuprebase always

    创建本地中心仓库/裸仓库bare

    git init --bare project.git
    

    一般用来做远端中心仓库或者本地演示git命令

    tag

    1. 添加 git tag -a 0.1.3 <SHA值> -m “Release version 0.1.3
    2. 删除 git tag -d 0.1.3
    3. 推送到仓库 git push origin --tags
    4. 删除仓库 git push origin :refs/tags/0.1.3
    5. 搜索标签 git tag -l 1.*.* *星号匹配对于的位置

    清除多余的文件

    git clean -n         # 查看将要被删除的文件,不做真正的删除
    git clean -f         # 执行删除
    git clean -f -d      # 删除目录
    git clean -f -X      # 删除ignored文件
    

    merge

    git merge --squash branch # 合并只生成一个commit
    

    删除分支

    git push -d origin branch1                               # 删除远程分支
    git branch --delete --remotes origin branch1             # 删除远程分支的本地跟踪
    git branch -dr origin branch1                            # 上面的缩写
    git branch -D branch1                                    # 删除本地分支
    

    输出history

    具体format参数参考这里

    git log --format="%H %B"  => 872acd6b45102a36b06ac9c7e8b4977b84025205 修改
    git log --oneline => 0751fe6 fixbug
    git log --pretty=format:"%h - %an, %ar : %s"
    => d309e46 - auther, 3 days ago : fixbug
    

    获取当前分支

    git symbolic-ref --short -q HEAD
    

    合并多个commit

    git rebase -i commitid #需要合并的commitid 起始位置
    
    在rebase界面把需要合并的commit改成s或者square,但是需要保留一个起始位置
    

    编辑第一个commit

    git rebase -i --root
    

    实际问题

    1. 在配合其他IC(比如jenkins)使用webhook时,有时为了测试需要触发push event。
    1. git commit --amend --no-edit  # 修改最后一次提交,但是不做修改
    2. git push -f                   # 强制推送就能在不新增commit的情况下出发push
    
    1. git在win下是默认不区分大小的,如果你的代码需要在linux环境下编译。最好修改这个设置,让git区分大小写。
    git config core.ignorecase false
    

    遇到的问题

    1. git unknown option: -encodedCommand 在power shell使用git stash drop stash@{0}报错,换用git bash就ok了。
    2. HEAD detached at c8f55e2 使用 git checkout master可以回到master分支
    3. 调试jenkins的时候想触发push事件,但是又不想修改提交内容,可以使用git commit --amend --no-edit产生新的hash提交就行。

    相关文章

      网友评论

          本文标题:Git 常用命令

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