美文网首页
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