关于GIT和github:请搜索git下载安装,安装了git才能去github或码云(国内)观察自己上传的代码,github有个桌面版只是基于git的的图形工具,还是需要下载git。

概念:

1.提交、版本、commit,ID,差不多都一个意思,动词和名词的区别

2.远程服务器:码云,github等网站

3.工作区:指项目的实际文件所在位置。

4.暂存区(缓存区):add命令之后的记录所在位置。

5.储藏区:stash后的记录所在位置。

6.版本(ID):commit命令后生成。

7.指针:借用c语言的指针概念,指向某个版本(ID)

8.分支:一个指针如果叫做nima,那么称nima为分支

9.主分支:大家默认,叫master的指针作主分支

10.HEAD指针:借用c语言概念,HEAD为指向指针的指针,始终指向分支,被HEAD指向的分支为当前分支,也可理解为HEAD就是当前分支

11.跟踪:git将留意项目中被git设为跟踪的文件发生的变化

12..gitignore文件:对于状态为untracked files的文件,加入到该文件后不再提示未跟踪,即设置为不跟踪文件

提示:想看每个命令的全部选项,请在每个命令后打-h 。一般形式为-x或--xxxx

命令:

git init 本地初始化一个仓库

git clone [url] #克隆一个仓库到本地(也可添加主机后再fetch)

git clone -b [branch] [url] #克隆制定分支

git fetch [origin] #拉取远程分支origin/*(不指定分支则拉取所有分支)

git pull [远程主机名] #fetch+merge,细则同上

git add [文件] #纳入git管理

git remote add [主机名] [远程地址] #添加远程服务器,主机名不写则默认为"origin"

git remote show [主机名] #显示远程主机超级详细信息

git remote -v #-v为--verbose(啰唆的)缩写,显示详细信息

git remote rename [主机名] [新主机名] #重命名

git remote rm [主机名] #删除远程服务器

git log --oneline --graph --all # 一行、(树)图形化、全部分支,显示提交记录

git log -n #最近的n个提交记录

git merge [branch] #把branch合并到当前分支,并创建一个最终合并的commit

--abort #中止该次合并

--allow-unrelated-histories #允许不同项目的分支meger(pull也可)到本地

注意:一旦出现合并冲突,将进入“合并冲突状态”,该状态下无法使用任何分支切换命令,直到完成合并或终止合并才退出合并冲突状态。合并冲突状态中,需要修改后再次add冲突文件,并且手动进行一次commit,才能完成合并

git rebase [startPoint] [endPoint] #变基到startPoint,endPoint默认为HEAD可省略

git rebase [startPoint] [endPoint] --onto [branch] #把当前分支线上左开右闭区间内的commit变基到指定分支

-i #启用交互

git push [远程主机名] [本地分支名]:[远程分支名] #推送分支(当前分支存在追踪则只需"git push"即可)

git push -u [远程主机名] [本地分支名]:[远程分支名] #推送分支,同时设为追踪分支

git push [远程主机名] []:[远程分支名] #留空本地分支名,用空分支覆盖远程分支。实际为删除操作

git checkout [file] #从暂存区恢复文件

git checkout [branch] #新建或切换到该分支,工作目录文件回到该分支指向的版本(工作目录变)

git checkout [id] [file]#恢复文件到指定commit的状态

git checkout -b [new local branch] [remote branch] #获取远程分支,将本地新建分支指向获取的远程分支,同时加上远程跟踪

git rm [file] #默认工作区+远程仓库都删除文件

git rm [file] --cached #远程删除,本地不删除

git reset HEAD #重置到当前版本

git reset HEAD~2 #重置到两个版本前(HEAD~ 和 HEAD~1 一样意思)

git reset [$id] #重置到指定ID版本(log显示的那一大串或者log --oneline那小串都可以)

--soft #暂存区不变,工作区不变

--mixed #暂存区清空,工作区不变 默认值

--hard #暂存区清空,工作区回退

注意:无论哪个参数,均能移动当前分支。另外与revert区别在于,reset回去旧版本不被当作一个commit

git revert [$id] # 恢复某次提交的状态,恢复动作本身也创建了一次提交对象

git revert HEAD # 恢复最后一次提交的状态

git commit -m [message] #提交,不带参数-m将启用编辑器以编辑注释

git commit -am [message] #自动把受追踪文件进行暂存+提交

git branch #显示本地所有分支

-a #显示包括远程分支(origin/*)的所有分支

-v #详细显示本地所有分支

-vv #更加详细显示本地所有分支,包括了远程跟踪、落后/领先情况

–d [branch] #删除本地分支,但不能删除当前分支(切去其它分支先),不能删除未合并分支

-D [branch] #强制删除

-u [origin/branch] #设置跟踪的远程分支(-u为--set-upstream-to缩写)

--unset-upstream #取消上面设置的追踪

git difftool [id_1] [id_2] #启用对比工具以对照两次提交,也可以换成文件名对比文件

git stash #把暂存区和未添加到暂存区的被追踪文件储藏起来,清空暂存区和工作区记录(然后就能用checkout切换其他分支了)

git stash list #查看现有的储藏

git stash apply stash@{0} #通过list查看名称(如stash@{0}),不指定储藏则应用最近的储藏

git stash drop stash@{1} #删除指定储藏

git stash push #储藏入栈

git stash pop #储藏出栈

取消跟踪文件的问题

1.被add、commit操作后的文件不属于untracked files,不受.gitignore控制,始终被跟踪,除非他们被git rm命令删除或其他等效的命令

2.常见两种情况:

(1)远程仓库中不需要这个文件,但不想在本地中删除。

删除时加上--cached参数,然后把文件加入.gitignore即可。

(2)远程仓库需要setting.json这个配置文件,但不想暴露其中的个人私密配置信息,想要他只出现在第一次的提交中(没有密码信息),但后续更改不要去追踪变化(有密码信息)。

这个没办法的,将就吧。把setting.json加入到.gitignore,同时复制一份改名为setting.json.example,告知其他人setting.json.example是设置的模板文件,自行更改文件名。关于其讨论,转:git忽略已经被提交的文件

rebase变基操作

基本上必带参数-i,不然容易混乱。

-i参数交互模式,其实就是让你的默认编辑器打开一个临时生成的文件,里面是各种详细信息,通过编辑这个临时文件,就能完成交互,里面大量的#开头的东西,都是注释,主要是让你看下可以怎么改,不用再去百度有什么选项之类的。当你保存并关闭编辑器(vim中wq退出或vscode中关闭编辑窗口等),git进行分析并继续rebase。

当你选择合并若干commit时,git再次启动默认编辑器打开临时文件,让你自由决定如何控制commit提交信息等。

变基冲突时,是逐个commit进行的。如变基3个commit到某个分支,那么冲突等效于这3个commit依次merge到目标分支,也就是可能需要完成3次类似于merge冲突的操作。

类似于merge,你可以在任何时候使用git rebase --abort终止变基恢复原状。

类似于merge,在冲突解决后使用git add [file]暂存该冲突文件。不同在于无需马上提交,而是git rebase --continue以继续

vscode 取消拉去变基_GIT快速回忆相关推荐

  1. vscode 取消拉去变基_git大礼包:学完出师

    说明 基于 demo 讲解 git 的使用方法,从头到尾敲一遍,保证可以应对日常工作中 git 的使用. 设置 设置姓名和 Email git config --global user.name 'Y ...

  2. vscode 取消拉去变基_开发工具之 Git 篇

    人生是一场难得的修行,不要轻易交白卷    ---胡歌 前言 计划 7.6 要完成 Git 篇,7.7 完成 VsCode 篇.昨天玩了一天,

  3. git 查询提交明细_Git [提交记录查看、提交、变基](I)

    查看提交记录 终端命令 git log:列出历史提交记录; 记录查看 git log --oneline:查看历史记录的简洁的版本; 简洁记录查看 提交 提交规范 feat: 新功能 fix: 修复问 ...

  4. GIT学习笔记(5):变基

    GIT学习笔记(5):变基rebase 变基 引入变基 在Git中整合来自不同分支的修改主要有两种方法:merge以及rebase. 整合分支最容易的方法是merge,他会把两个分支的最新快照以及两者 ...

  5. 两条命令让你的git轻松自动变基,学到了!

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 作者:张京 链接:https://segmentfault.com/a/1190000040 ...

  6. ClearCase洋文翻译-rebase(变基)

    英文:地址 扩展阅读文档:地址 rebase(变基) Changes the configuration of a stream(修改流的配置) Description(描述) The rebase ...

  7. Git之深入解析Git的杀手级特性·分支管理与分支变基的开发工作流以及远程分支的跟踪

    一.Git 分支简介 几乎所有的版本控制系统都以某种形式支持分支,使用分支意味着可以把工作从开发主线上分离开来,以免影响开发主线.在很多版本控制系统中,这是一个略微低效的过程,常常需要完全创建一个源代 ...

  8. Git合并和变基简介:它们是什么,以及如何使用它们

    by Vali Shah 通过瓦利沙阿 Git合并和Git变基简介:它们做什么以及何时使用它们 (An Introduction to Git Merge and Git Rebase: What T ...

  9. git使用变基方式同步远程和本地副本的代码同步方式

    一.确保你父分支的本地副本与项目主仓库中最新的提交同步 git pull --rebase 若有必要, 请显式指定参数.在使用 pull 命令更新一个分支的本地副本时,参数中远程连接和远程分支的名称通 ...

最新文章

  1. WebAssembly:面向Web的通用二进制和文本格式
  2. es dsl java api_求帮助将dsl翻译为java的API
  3. Java EE——Mybatis 框架学习
  4. 打印100-200之间的素数
  5. 面试题: 找出二叉树上任意两个结点的最近共同父结点。
  6. 偷梁换柱 | 无备份情况下的数据恢复实践
  7. jemalloc优化MySQL、Nginx内存管理
  8. Matlab计算空间权重矩阵(地理距离和经济地理距离)
  9. 水电远程预付费管理系统
  10. FishC笔记—15 讲 字符串:格式化
  11. 秩为1的矩阵的性质总结
  12. 中控H10考勤机管理员密码破解
  13. 赵海平与张宏波谈编程语言
  14. 《横向领导力》-简述
  15. ping 不通百度问题的解决
  16. 条形码录入测试软件,条码管理:商品条码录入
  17. --k和k--的区别
  18. 手写Sping(2) :手写IOP与DI(依赖注入)
  19. 以数字化视角看世界杯,我预测荷兰夺冠
  20. 三维可视化技术的应用现状及发展前景

热门文章

  1. Eclipse的Mockito模板
  2. 何时以及如何使用ThreadLocal
  3. Java文件合并变得语义化
  4. 在Eclipse中有效使用JUnit
  5. Apache Mahout:入门
  6. ToString:身份哈希码的十六进制表示形式
  7. Windows 使用命令执行 sql 脚本文件
  8. future java 多线程_Java多线程之Future与FutureTask
  9. python写接口测试代码_python写运单接口测试(增改查)完整代码
  10. 安装Pytorch如何选择CUDA的版本