拾遗: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
拾遗:Git 常用操作回顾的更多相关文章
- git报错:'fatal:remote origin already exists'怎么处理?附上git常用操作以及说明。
git添加远程库的时候有可能出现如下的错误, 怎么解决? 只要两步: 1.先删除 $ git remote rm origin 2.再次执行添加就可以了. ---------------------- ...
- 版本控制工具——Git常用操作(上)
本文由云+社区发表 作者:工程师小熊 摘要:用了很久的Git和svn,由于总是眼高手低,没能静下心来写这些程序员日常开发最常用的知识点.现在准备开一个专题,专门来总结一下版本控制工具,让我们从git开 ...
- git常用操作 配置用户信息、拉取项目、提交代码、分支操作、版本回退...
git常用操作 配置用户信息.拉取项目.提交代码.分支操作.版本回退... /********git 配置用户信息************/ git config --global user.name ...
- Git常用操作(二)
仓库拉取 git clone XXX 修改仓库链接 $ git config -l # 显示coding列表 $ git config --get remote.origin.url # 返回orig ...
- 版本控制工具——Git常用操作(下)
本文由云+社区发表 作者:工程师小熊 摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码.使用分支.出现代码冲突的解决办法.紧急保存现场和恢复现场的操作.学会以后已经 ...
- (数据科学学习手札141)利用Learn Git Branching轻松学习git常用操作
1 简介 大家好我是费老师,Git作为世界上最流行的版本控制系统,可以说是每一位与程序打交道的朋友最值得学习的软件之一.除了管理自己的项目,如果你对参与开源项目感兴趣,那么Git更是联结Github. ...
- git 常用操作总结
廖雪峰博客的git 教程写得不错, 很详细,但是却总结的不是很好. 这里哥再详细总结一遍吧! Git鼓励大量使用分支: 查看分支:git branch 创建分支:git branch 切换分支:git ...
- Git常用操作汇总(转)
如果一个文件被删除了,可以使用切换版本号进行恢复.恢复方法: 先确定需要恢复的文件要恢复成哪一个历史版本(commit),假设那个版本号是: commit_id,那么 git checkout com ...
- git常用操作记录
之前的多人项目大多使用了SVN作为版本控制,自己只会用eclipse连接GitHub的操作.这次项目采用了git作为版本控制系统,所以学会了很多新操作,这里权当记录,以备后用. git的一些基本操作可 ...
随机推荐
- cs224d 作业 problem set2 (三) 用RNNLM模型实现Language Model,来预测下一个单词的出现
今天将的还是cs224d 的problem set2 的第三部分习题, 原来国外大学的系统难度真的如此之大,相比之下还是默默地再天朝继续搬砖吧 下面讲述一下RNN语言建模的数学公式: 给出一串连续 ...
- 54、salesforce学习笔记(一)
Decimal priceDecimal = -4.50; System.debug('小数的绝对值为:'+priceDecimal.abs()); System.debug('priceDecima ...
- mybatis plus的条件构造器
我们在使用条件构造器的时候要使用QueryWrapper或者UpdateWrapper来充当条件语句来进行构造 QueryWrapper(LambdaQueryWrapper) 和 UpdateWra ...
- Spring事物的传播
spring的事物对于同一个类内部调用是不会生效的. 比如一个ServiceA,里面有个方法x()和y().其中x没有配置事物,而y配置的有实物.如果是一个没有事物的ServiceB调用了Servic ...
- Tomcat_startup
@echo off echo 执行开始时间 date/t time/t echo *********************************************** echo 清除Tomc ...
- 01java基础笔记
计算机组成:运算器,控制器,存储器,输入输出设备(外部设备I/O设备) 机器语言:机器语言,汇编语言,高级语言 人机交互:命令行方式,图形化界面交互方式 JAVA语言平台分为:J2SE,J2ME,J2 ...
- HDU 1875 畅通工程再续 (Prim)
题目链接:HDU 1875 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现 ...
- camunda用户的一些简单操作
act_id_group:存放组信息act_id_membership:存放用户与组的相关信息act_id_user:存放用户act_id_info:存放用户个人信息act_id_tenant:存放租 ...
- Python可以用于客户端Web开发吗?
N00b在Python,但我有大量的PHP经验,并希望扩展我的技能. 我知道Python在服务器端执行方面很出色,只是想知道客户端. 解决方案 你看过skulpt吗? http://www.skulp ...
- CF1173X
CF1173C 由于牌堆只能从最后插牌,所以插牌方法非常显然 首先特判一下牌堆有没有一个合法的后缀,如果有的话再判断一下手中的牌和合法后缀之前的牌的排列顺序能不能有效的继续续下去 然后排除了以上情况就 ...