美文网首页
git 的常用命令

git 的常用命令

作者: 徐而思齐 | 来源:发表于2020-05-17 19:12 被阅读0次

git的使用

获取项目仓库

  • git init 初始化新仓库
  • git clone 克隆现有仓库

记录更新到仓库

  • git add 添加到暂存区
  • git status 查看工作去和暂存区的状态
  • git diff --cached 同 git diff --staged

查看暂存区内容

  • git rm 删除原文件并暂存
  • git rm --cached 移除跟踪但不删除原文件
  • git rm log/\*.log ‘\’表示递归
  • git mv file_from file_to 改名并暂存

查看提交历史

  • git log -p -2 显示最近2次提交的内容,和git show -2等效
  • git log --pretty=oneline 单行展示
  • git log --pretty=format:"%h - %an, %ar : %s" 定制显示的格式
  • git log --author=xcq 只看该作者的提交
  • git log --name-only 显示提交修改的文件
  • git log --stat 显示提交的文件和增减的行数

撤销操作

  • git reset [--soft | --mixed | --hard] [<commit>]
    • git reset --hard <commit> 工作区的内容变得和暂存区一致,也和HEAD所指向的提交内容相同
    • git reset --soft <commit> 只撤销提交信息,不改变暂存区和工作区
    • git reset --mixed <commit> 回退提交和暂存区,保留工作区
    • git reset HEAD 取消暂存,还原工作区的修改
  • git checkout 撤销工作区的修改,危险操作

远程仓库使用

  • git remote -v 查看所有远程仓库
    • 本地添加远程仓库git remote add [short_name] url
    • kernel 通过这种方式可以添加多个远程仓库
  • git remote show remote_name 显示远程仓库信息
  • git remote rename old new 更改本地的远程仓库名
  • git remote rm 移除本地的远程仓库

远程分支

  • git checkout -b serverfix origin/serverfix 基于远程分支创建本地分支
  • git fetch 只更新远程仓库,不更新本地文件
  • git pull --rebase 避免pull代码时出现merge的情况

提交

  • git commit -s 会加上signed-off-by字段
  • gerrit 提交代码格式
    • git push master HEAD:refs/for/remote_branch

    其中的HEAD代表本地分支,也可以用本地分支名替代,refs/for/是用gerrit管理需要加的前缀。

  • 追加提交
    • git add
    • git commit --amend
    • Ctrl+O->Enter->Ctrl+x
  • 没用gerrit管理的代码提交格式
    • git push remote HEAD:remote_branch xxx表示远程分支
    • git push <远程主机名> <本地分支名>:<远程分支名>
  • git commit后没有Change-Id生成,一般是因为不在源工程目录下同步的仓库,丢失了hook导致的,或者从gerrit上同步代码时没有同步hook
    • 到gerrit上搜索对应的Projects
    • 点击Clone with commit-msg hook,复制克隆命令
    • 到所在目录粘贴,去掉前面的git clone和后面的目录前缀,确保scp新的hooks到.git中
    • 在其他目录克隆某个仓库,一定要记得带上hooks,后面就不会出现提交没有Change-Id的问题

生成补丁

  • git format-patch
    • git format-patch -M master 当前分支所有超前master的提交
    • git format-patch -s 4e16 某次提交以后的所有提交
    • git format-patch -3 最近的3个提交
    • git format-patch –n 07fe4 某次提交(含)之前的n次提交
    • git am *.patch 打补丁
    • git am --abort 清除
  • git diff
    • git diff branch_a branch_b dir/ 对比2个分支指定目录的差异
    • git diff branch1 branch2 --stat 显示所有差异文件列表
    • git diff/show --patch-with-stat 显示列表

合并分支

当前在dev分支,还有一个master住分支,dev是从master某个分支切分出来的,dev和master分支各自向前推进

  • git merge master 将master后面的更新合并到当前dev分支
  • git rebase master,这个命令会把你的dev分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到”.git/rebase“目录中),然后把dev分支更新 到最新的master分支,最后把保存的这些补丁应用到dev分支上

  • git revert commit_ID 回退某一个特定的提交
  • git cherry-pick <commit id>
  • git clean -d -fx 删除当前添加的文件

相关文章

网友评论

      本文标题:git 的常用命令

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