zoukankan      html  css  js  c++  java
  • 拾遗:Git 常用操作回顾

    温故而知新,可以为师矣。

    Git 布局

    • 工作区---->暂存区---->本地仓库---->远程仓库

    Create Repository

    • git init PATH
    • git add PATH
    • git commit -m CONTENTS

    一次性 pull/push 所有分支

    • git pull/push origin '*:*'

    Revoke

    • HEAD 表示当近一次 commit 版本,HEAD^ 或 HEAD~1 表示上一次提交,HEAD^^ HEAD~2(波浪线) 表示上上次提交...依次类推;也可以用 HEAD@{N}  或 哈希值等形式直接定位(根据 reflog 显示的历史 HEAD 记录)
    • git status
    • git diff [--staged/--cached] [COMMIT] [-- PATH]:默认是比较工作区与 HEAD 之间的差异,添加 --staged 或 --cached 则是默认比较暂存区与 HEAD 之间的差异,两种情况均可以指定要比较的 commit hash,可以用 -- filename 的形式指定要比较的具体文件
    • git diff [BRANCH_0] [BRANCH_1] —— 比较个分支最新提交之间的差异
    • git reset [--hard] COMMIT [PATH] —— 根据 git log 或 git reflog 查到的 SHA1 值,在版本之间进行全局文件或指定文件的状态回退,reset 的作用是将仓库中的文件恢复至暂存区(--soft,默认值)或工作区(--hard)
    • git reflog —— 暂时记录最近的每一条 git 操作记录内容及其 HASH,即 HEAD 的变动记录,该记录不会永久保存
    • git checkout [COMMIT] -- PATH —— 撤销工作区中单个文件的修改,恢复到上一个最新状态(可能是暂存区或本地仓库中的状态,以时间戳为准),必须添加 '--',否则会被理解为切换分支,可以指定从哪个次提交状态恢复
    • git reset 与 git checkout 的区别:reset 只能恢复已经 commit 到版本库中的状态,checkout 可以恢复到暂存区中的状态是,reset 会同时将 git log 中对应的记录删除
    • git rm [PATH] —— 同时删暂存区及工作区中的文件,添加 --cached 选项仅删除暂存区中的文件
    • git mv [PATH] [PATH] —— 重命名,同时作用于暂存区及工作区
    • git  revert COMMIT —— 从远程仓库撤销已 push 的提交
    • git commit --amend -m "CONTENTS" —— 修改最近一次提交的备注内容
    • git rebase BRANCH —— 重新选定本分支的起点,同时不丢失历史提交记录

    Remote Repository

    • git remote add TAG git@github.com:USERNAME/PROJECTNAME.git —— 其中 TAG 指为远程仓库打的标签,以此标识每个仓库
    • git push [-u] [REPOSITORY_TAG] [BRANCH] —— 将本地仓库文件推送至远程,初次推送时添加 -u 选项将本地仓库分支与远程仓库分支关联
    • git fetch —— 下载远程仓库代码但不合并,人工检查无误后 git merge
    • git pull —— 下载同时合并
    • git pull --rebase —— 拉取远程代码的同时,更新本地仓库起点

    Branch Management

    • git branch BRANCH_NAME [BASE_BRANCH] —— 基于 BASE_BRANCH 创建新分支,默认基于当前所在分支
    • git checkout BRANCH_NAME —— 切换分支
    • git checkout -b BRANCH_NAME —— 创建一个分支同时切换过去
    • git merge [--no-ff] BRANCH_NAME —— 合并目录分支到当前分支,git 默认是 fast forward 合并模式,此模式下合并后,被合并的分支上原先的操作计录都将消失,添加 --no-ff 选项表示不使用 fast forward 模式,分支的相关记录得以保留
    • git branch -d BRANCH_NAME —— 删除已经被合并过的分支
    • git branch -D BRANCH_NAME —— 删除没有被合并过的分支
    • git stash —— 将当前工作区中已被 git add 但未提交的文件隔离保存(不是放到暂存区),并处于不可见状态,即 git status 不会提示更改未提交
    • git stash list —— 显示被隔离保存起来的状态列表
    • git stash apply [STASH] —— 恢复隔离区的指定 stash
    • git stash pop [STASH] —— 同 apply,但会同时从 stash 列表删除该条目
    • git stash drop [STASH] —— 手动删除某个 stash 条目,默认都是针对最新的 stash
    • git stash clear —— 清除所有stash 条目
    • git remote [-v] —— 显示远程仓库信息,-v 显示详细信息,如仓库地址等
    • git branch BRANCH_NAME UPSTEAM —— 建立分支的同时关联到远程分支
    • git branch -r —— 显示远程分支
    • git branch -a —— 同时显示远程与本地分支
    • git branch --set-upstream-to=origin/develop develop —— 建立与连程分支的关联,若不指定分支名称,则关联当前所在分支到远程(如:origin/master 等)

    Tags(助记符,方便人类记忆,毕竟 hash 值不好分辩)

    • git tag TAGNAME [-a -m CONTENTS] [COMMIT_HASH] —— 默认是给最近一次提交打标签,可以指定目标 commit 的 hash 值,还可以添加标签说明(-a -m "...")
    • git tag —— 显示所有标签列表
    • git show TAGNAME —— 可显示与指定标签关联的 commit 相关信息
    • git tag -d TAGNAME —— 删除本地标签
    • git push REMOTE_REPOSITORY TAGNAME —— 将标签关信息推送至远程仓库
    • git push REMOTE_REPOSITORY --tags —— 推送所有标签信息推送至远程仓库
    • git push REMOTE_REPOSITORY :refs/tags/TAGNAME —— 用于删除远程标签,先要 git tag -d 删除本地标签,然后执行此操作删除远程标签

    Alias(设置 git 命令别名)

    • 示例: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"

    删除与重命名远程分支:

    • git push --delete origin dev  //删除远程分支
    • git push --delete origin tag TagName  //删除远程标签
    • git remote prune origin //清除本地显示的,但远程仓库中已不存在的僵死分支
    • git fetch -p  //效果同上
    • git branch -m dev develop  //将本地分支 dev 分支重命名为 develop
  • 相关阅读:
    2020.10.23 19级training 补题报告
    2020.10.17 天梯赛练习 补题报告
    2020.10.16 19级training 补题报告
    2020.10.9 19级training 补题报告
    2020.10.10 天梯赛练习 补题报告
    2020.10.3 天梯赛练习 补题报告
    2020.10.2 19级training 补题报告
    第十届山东省ACM省赛复现补题报告
    VVDI Key Tool Plus Adds VW Passat 2015 Key via OBD
    Xhorse VVDI Prog Software V5.0.3 Adds Many MCUs
  • 原文地址:https://www.cnblogs.com/hadex/p/6615463.html
Copyright © 2011-2022 走看看