GIT

  • SSH 配置
  • 初始化仓库
  • GIT四个区域
  • GIT的四种状态
  • git命令
    • 查看仓库状态
    • 把一个文件从本地工作目录移交到暂存区
    • 把暂存区的内容在回滚到工作目录
    • git add 撤销操作 也就是将暂存的数据删掉
    • git restore 放弃工作目录中的更改
    • git restore --staged…取消存储
    • git deleted状态怎么处理
    • 删除工作目录文件c
    • 同时把本地目录和暂存区里面内容删除
    • 提交本地仓库
    • 直接对工作目录和暂存区的文件重命名
    • 查看文件改变了什么内容 进行对比
    • 当前历史git log 历史操作所有id 每次的commit的id git reflog
    • 改变了工作目录 暂存区和本地仓库没有改变
    • 现在是工作目录和暂存区改变一致了 但是错误 我用本地仓库回退,覆盖暂存区和工作目录
    • 我要回退某一次 commit
  • 分支
    • 创建分支
    • 查看分支
  • 删除分支
    • 提交数据
    • 合并 谁合并谁
  • 基本操作
    • 设置用户名和邮箱
    • 查看配置
    • 创建 SSH Key
    • 创建本地仓库,进行基本源代码管理
    • 忽略 SSL 证书错误
    • 储藏
    • 撤消操作
    • 版本回退
    • 分支
    • 标签
    • 提交
    • git pull 与 git pull --rebase 的区别
    • git merge 与 git rebase 的区别
  • 全部删除,你改的也没有了

SSH 配置

git安装克隆提示Cloninginto项目
git clone git@gitee.com:yyds123/ll.git
创建用户
git config --global user.name “名称”
git config --global user.email “邮箱”
git 生成秘钥 并连接 码云
1, ssh-keygen -t rsa -C “xxxxx@xxxxx.com” 注册码云的邮箱
按三次回车,不用添加任何东西
2, cat ~/.ssh/id_rsa.pub
查看秘钥 并复制 到 码云上
3, ssh -T git@gitee.com
出现 (Welcome to Git@OSC, yourname!) 证明链接成功

初始化仓库


GIT四个区域

最底层工作目录

第三层面、第一次暂存文件,是会在.git的目录下生产index文件

第二层面 本地仓库

第一层面 远程仓库

如果代码提交到本地仓库,在对文件做任何的增删改查操作都会对
操作进行记录

GIT的四种状态

未跟踪文件:只是存在工作目录(区域) Untracked files:

未被修改:已经存在本地仓库了,但是我没有对文件修改(都在工作,暂存区,本地仓库都有一份)

被修改状态:在本地仓库进行了修改

由于git是分布式版本控制工具,存在着本地仓库和远程仓库,所以我们在本地工作副本进行的编辑,要先提交到本地仓库,再从本地仓库推送到远程仓库。

git命令

查看仓库状态

git status

在master分支下 ,初始化commit ,没有任何事情commit

把一个文件从本地工作目录移交到暂存区

使文件状态从Untracked 变成Staged状态

 git add a

把所有文件提交到暂存区


暂存区是在.index

把暂存区的内容在回滚到工作目录

git rm --cached c

git add 撤销操作 也就是将暂存的数据删掉

git reset HEAD projectApp/vhall_backend_frame/app/vendor/vhall-component/room/src/services/InavService.php

git restore 放弃工作目录中的更改

git restore projectApp/vhall_backend_frame/app/vendor/vhall-component/room/src/services/InavService.php

git restore --staged…取消存储

git restore --staged vendor/vhall-component/roo.room.sql

git deleted状态怎么处理

一种是 git rm --cached "文件路径",不删除物理文件,仅将该文件从缓存中删除;一种是 git rm --f "文件路径",不仅将该文件从缓存中删除,还会将物理文件删除(不会回收到垃圾桶)然后再推送到仓库

删除工作目录文件c

同时把本地目录和暂存区里面内容删除

删除c文件

git rm -f b

提交本地仓库

git commit -m "commit a"

直接对工作目录和暂存区的文件重命名

b.txt 改成 a

git mv b.txt a

查看文件改变了什么内容 进行对比

对比的是本地目录和暂存区

git diff a



本地目录提交到 暂存区

这样本地目录提交到 暂存区是一致的了文件内容

暂存区和本地仓库进行对比

git diff --cached a

当前历史git log 历史操作所有id 每次的commit的id git reflog

git log
git log --oneline --decorate

改变了工作目录 暂存区和本地仓库没有改变

用暂存去覆盖了工作目录

git checkout -- a

现在是工作目录和暂存区改变一致了 但是错误 我用本地仓库回退,覆盖暂存区和工作目录


说明 git diff a 说吗本地目录不一致了

我要回退某一次 commit

回退哪个commit 的id

git reset --hard (回退哪个commit 的id)

每一次的commit 的id 的历史记录

git reflog


分支

分支就是指向快照的一个指针

分支总是落在最后一个提交 HEAD(当前分支)

git log --online --decorate

创建分支

git branch testing
git branch

查看分支

查看本地分支 git branch
查看远程分支 git branch -r
查看本地和远程分支 git branch -a
清理本地无效分支(远程已删除本地没删除的分支): git fetch -p
如果分支太多,还可以用此命令进行分支模糊查找: git branch | grep 'branchName'

删除分支

删除本地分支 git branch -d 本地分支名删除本地已合并的分支: git branch -d [branchname]
某些情况下可以用 git branch -D [branchName] (使用时应注意是否已合并)删除远程分支 git push origin --delete 远程分支名[branchname]
推送空分支到远程(删除远程分支另一种实现)git push origin :远程分支名

提交数据

合并 谁合并谁

把testing命令合并的master上 ,当前是master

git merge testing

基本操作

设置用户名和邮箱

$ git config --global user.name "用户名"
$ git config --global user.email "邮箱"
  1. 其中,–global 是全局设置,如果想对特定项目使用不同配置,可取消该参数
  2. git config 还可以设置其他选项,因为平时不怎么用,所以详细可以参考 git config --help

查看配置

$ git config --list# 查看 Git 的某一项配置
$ git config user.name

创建 SSH Key

$ ssh-keygen -t rsa -C "邮箱"# 然后会在用户主目录下,发现 .ssh 目录,其中包含 id_rsa 和 id_rsa.pub 两个文件
# id_rsa.pub 是 SSH Key 公钥,将其添加到 github 的 SSH keys 中,就可

创建本地仓库,进行基本源代码管理

# 克隆
$ git clone 仓库地址# 远程仓库
$ git remote# 分支
$ git branch 分支名    // 创建
$ git checkout 分支名  // 切换# 合并
$ git merge 分支名# 拉取更新
$ git fetch 主机名 分支名    // 不合并
$ git pull 主机名 分支名    // 合并# 推送
$ git push 主机名 分支名# 打标签
$ git tag -a 版本号 -m "版本说明"

忽略 SSL 证书错误

通过 HTTPS 访问 Git 远程仓库时,如果服务器的 SSL 证书未经过第三方机构签署,那么 Git 就会阻止这一操作

$ env GIT_SSL_NO_VERIFY=true git clone 仓库地址
$ cd 仓库名称
$ git config http.sslVerify "false"- 使用 env 命令保证了忽略证书错误只应用于此次克隆

储藏

当有未提交的修改,执行 切换分支 或 拉取更新 需要仓库状态保持 clean 的一些操作时,可以使用 git stash 将目前的修改临时储藏起来

# 储藏
$ git stash# 查看储藏
$ git stash list# 应用最近储藏并删除
$ git stash pop# 应用指定储藏不删除
$ git stash apply [储藏名]# 移除储藏
$ git stash drop 储藏名

撤消操作

对于 工作区 和 暂存区 的修改,我们不能保证上次操作是完美的,git 就是这么强大,提供了很多 反悔 的操作

# 丢弃暂存区的文件,放回工作区
$ git reset HEAD 文件# 丢弃工作区的修改
$ git checkout -- 文件- 修改后没添加到暂存区,则撤销到 git commit 时的状态
- 修改后添加到暂存区,则撤销到 git add 时的状态# 覆盖上次提交
$ git commit --amend [-m "本次提交说明"]

版本回退

# 回退到之前的某次提交
$ git reset --hard commit_id- HEAD 指向当前版本
- git log 可以查看提交历史,以便确定要回退到哪个版本
- git reflog 可以查看命令历史,以便确定要回到未来的哪个版本# 撤销一个已经提交
$ git revert commit_id- 并没有从项目历史中移除这个 commit, 而是生成一个新的 commit

分支

Git 有很多优点,其中 分支使用方便 就是很显著的一条,创建仓库的时候,master 是默认的分支,一般,我们会创建其他的分支在上面进行开发,完后再将它们合并到主分支上来

# 创建开发分支
$ git branch dev# 创建并切换到开发分支
$ git checkout -b dev# 切换回主分支
$ git checkout master# 快速检出上一个分支
$ git checkout -# 查看所有分支
$ git branch -a# 查看合并到当前分支的分支列表
$ git branch --merged# 查看还没合并到当前分支的分支列表
$ git branch --no-merged# 删掉临时分支
$ git branch -d fix# 将开发分支推送到远程仓库
$ git push origin dev# 重命名分支
$ git branch -m dev develop# 删除远程分支
- $ git push origin --delete 分支名
- $ git push origin :分支名

标签

软件要发布一个新的版本的时候,我们通常给它打个 tag

# 打标签
$ git tag [-a] 标签名 [-m 附注信息 某次提交的id]# 推送标签到远程仓库
$ git push origin 标签名
$ git push origin --tags    // 推送所有标签# 删除本地标签
$ git tag -d 标签名# 删除远程标签
$ git push origin --delete 标签名
$ git push origin :refs/tags/标签名

提交

# 花式查看提交
$ git log --pretty=oneline  // 只显示一行
$ git log --abbrev-commit   // 只显示 SHA-1 的前几个字符
$ git log --graph           // 显示 ASCII 图形表示的分支合并历史
$ git log --relative-date   // 使用较短的相对时间显示
$ git log --name-only       // 仅在提交信息后显示已修改的文件清单
$ git log -n                      // 显示最近的 n 条提交
$ git log --author=fengshangwuqi  // 仅显示指定作者相关的提交
$ git log --grep                  // 仅显示含指定关键字的提交# 没有任何改动的提交
git commit -m "a no chnage commit" --allow-empty主要用于一下情形:
- 标记新的工作或一个新功能的开始
- 记录对项目的跟代码无关的改动
- 跟使用你仓库的其他人交流
- 作为仓库的第一次提交,因为第一次提交后不能被 rebase

git pull 与 git pull --rebase 的区别

$ git pull = git fetch + git merge
$ git pull --rebase = git fetch + git rebase

git merge 与 git rebase 的区别

# 相同点
整合的最终结果所指向的快照是一样的# 不同点
## 提交历史不同
- merge 会生成一个新的 commit 节点,提交历史忠实地记录了实际发生过什么
- rebase 不会产生额外的 commit 节点,提交历史反映了项目过程中发生了什么
## 冲突处理策略不同
- merge 遇见冲突后会直接停止,等待手动解决冲突并重新提交后,才能再次 merge
- rebase 遇见冲突后会暂停当前操作,开发者可以选择手动解决冲突,然后 git rebase --continue 继续,或 --skip 跳过,或 --abort 停止# 注意事项
## 推荐 git merge 结合 --no-ff 一起使用
- git merge 默认是 fast forward(快速合并),适用于分支 B 从分支 A 从 checkout 出来后,分支 A 没有 commit
- 如果分支 B 被 checkout 出来后,分支 A 也有修改,那么就没法快速前进合并,会额外建立一个 merge commit,对分支 A 和分支 B 做一个合并操作,即 --no-ff,它的好处是保持了分支的结构
#1/ 工作区代码(文件被修改了,但未执行git add操作)
git checkout <filename>
#或
git checkout .#2/ 文件执行了git add到缓存区,并未commit提交
# 取消暂存
git reset HEAD <filename>
# 撤销修改
git checkout <filename> #3/ git commit到本地,没有git push到远端
git reset --soft HEAD~1 撤回最近一次的commit(撤销commit,不撤销git add)git reset --mixed HEAD~1 撤回最近一次的commit(撤销commit,撤销git add)git reset --hard HEAD~1 撤回最近一次的commit(撤销commit,撤销git add,还原改动的代码)#4/ git push提交到远端
#删除最后一次远程提交
#使用revert 会有新的 commit 记录
git revert HEAD
git push origin master
#使用reset 不会产生新的 commit 记录
git reset --hard HEAD^
git push origin master -f#回滚某次提交
git log
git revert <commit_id>#其他补充,冲突解决
#merge 冲突
git checkout test
git merge b1
git status
git add .
git commit -m 'conflict fixed'#本地提交冲突
git stash #暂存
git stash list #查看暂存列表
git pull #拉取
git stash pop stash@{0} #还原暂存的内容
git status #冲突文件
vim readme.txt #解决冲突<<< === >>>
git stash drop stash@{0} #删除暂存
git stash clear #清理所以暂存git add readme.txt
git commit -m "conflict fixed"

全部删除,你改的也没有了

git fetch --all && git reset --hard origin/分之名字

git 拉取远程代码
Git拉取远程代码
git 从远程拉取代码、推代码的步骤
Git 分支合并代码
Git恢复之前版本的两种方法reset、revert(图文详解)
git所划分成几个区域,各区域的作用以及各区域之间的联系
真的解决了我的问题!!!git配置ssh时报错:Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
git教程

GIT 详细命令介绍相关推荐

  1. Git 高频命令、版本回退、分支操作、文件修改删除、撤销、标签、远程仓库推送、拉取

    1. 高频命令 git add 将工作文件修改提交到本地暂存区. git add . 将所有修改过的工作文件提交暂存区(常用). git commit -m "XXX" 为本次修改 ...

  2. Git基础-删除文件 rm/git rm 命令详解

    1.文章概述 本文介绍git中删除文件的操作: 主要涉及命令如下 : 1.rm 2.git rm3.git rm -f4.git rm --cached5.git rm -r : 在删除文件夹的时候, ...

  3. git详细介绍,以及常用的操作,命令

    GIT的介绍 官方中文版通俗易懂文档 git精讲视频 git分支操作 1.Git和svn的区别 Git是分布式版本控制系统 ,即局域网中,只要创建了git版本库的相关信息,该电脑就可以作为git的一个 ...

  4. 版本控制工具Git详细介绍和常用命令

    一.安装Git 在linux系统使用非常方便,只需要打开shell界面,并输入: sudo apt-get install git-core 按下回车后输入密码,即可完成Git的安装.但我们可能更多情 ...

  5. Git详细用法:Git概述 安装 常用命令 分支操作 团队协作 、GitHub、idea集成Git、idea集成GitHub、Gitee 码云、GitLab

    0 课程介绍 说明: 在公司想要使用idea集成git: 首选需要下载安装Git(查看第2章) 之后在中设置用户签名(查看3.1) 然后在idea中集成Git(查看第7章) - 0.1 学习目标 第1 ...

  6. Git基础(常用命令)介绍

    版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种:本地版本控制系统,如rcs:集中化的版本控制系统,如CVS.SVN:分布式版本控制系统,如Git. Gi ...

  7. git 提交命令_工作总结:Git的学习和使用,最详细的Git教程,从入门到精通

    前言 Git简介 实用主义 深入探索 总结 参考资料 前言 Git 是程序员学习和工作都离不开发工具,今天和大家分享 Git 常用命令总结. Git简介 Git 是一种分布式版本控制系统,它可以不受网 ...

  8. git原理浅析及命令介绍

    状态描写叙述 请记住,工作文件夹以下的全部文件都不外乎这两种状态:已跟踪或未跟踪.已跟踪的文件是指本来就被纳入版本号控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新.已 ...

  9. linux中tags文件能删除吗,Git 详细介绍查看、删除、重命名远程分支和tag

    Git 详细介绍查看.删除.重命名远程分支和tag 1. 查看远程 分支加上-a参数可以查看远程分支,远程分支会用红色表示出来: xiaosi@Qunar:~/code/qtown-score$ gi ...

最新文章

  1. linux驱动:音频驱动(四)ASoc之machine设备
  2. 前1000位粉丝的诞生
  3. C++ FAQs 第二版
  4. php mysql 获取错误_php怎样获取mysql错误信息
  5. 【推荐系统】双塔模型中的负采样
  6. 平舌音 Z C S 的正确发音方式
  7. 微信支付带动交易超720万元 核销首日武汉人开启“全城用券”模式
  8. 【Clickhouse】Clckhouse 视图 可以插入 但是查询不到
  9. javascript调用服务端验证控件
  10. python 函数 思维导图
  11. html前端几种加密方式的整理,前端js几种加密/解密方法
  12. Pycharm debug Process finished with exit code 1
  13. JQuery入门级-基础
  14. php nbl2,NBL二年级新军杀入总决赛 虽败犹荣已创造历史
  15. Prometheus实战--Uber背书的存储解决方案M3
  16. 03【Web】基础-JavaScript
  17. Flink入门教程(四)——窗口(二)
  18. OI回忆录——小学、初中
  19. 应用层协议详解 HTTP,DNS,STMP等
  20. 教你如何将PDF转换成其他格式!

热门文章

  1. C语言小游戏之五子棋
  2. 关关于印发北京市廉租住房、经济适用住房家庭收入、住房、资产准入标准的通知 于印发北京市廉租住房、经济适用住房家庭收入、住房、资产准入标准的通知
  3. 中国碳化硅(SiC)行业“十四五”规划和远景目标建议报告2022-2028年
  4. java以下声明变量中 是不合法的_java考试复习题
  5. Dsp28335课程设计
  6. IT运维服务设计的5项原则
  7. simulink+FlightGear飞行器建模仿真
  8. 优达学城机器学习之--决策树(Decision Trees)
  9. 2019计算机一级msoffice真题,【2019年整理】全国计算机一级MSOFFICE练习题带题解.pdf...
  10. html载入3d模型,three.js加载三维模型_郭隆邦技术博客