设为首页 - 加入收藏 双鸭山大姐大灵语报 (http://www.0469zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 功能 安卓 全球 创业
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

最常见的 Git 问题和操作清单汇总

发布时间:2019-09-01 12:26 所属栏目:[优化] 来源:前端瓶子君
导读:引言 本文整理自工作多年以来遇到的所有 Git 问题汇总,之前都是遗忘的时候去看一遍操作,这次重新整理了一下,发出来方便大家收藏以及需要的时候查找答案。 一、必备知识点 仓库 Remote: 远程主仓库; Repository: 本地仓库; Index: Git追踪树,暂存区; w

引言

本文整理自工作多年以来遇到的所有 Git 问题汇总,之前都是遗忘的时候去看一遍操作,这次重新整理了一下,发出来方便大家收藏以及需要的时候查找答案。

一、必备知识点


最常见的 Git 问题和操作清单汇总

仓库

  1. Remote: 远程主仓库;
  2. Repository: 本地仓库;
  3. Index: Git追踪树,暂存区;
  4. workspace: 本地工作区(即你编辑器的代码)

二、git add 提交到暂存区,出错怎么办

一般代码提交流程为:工作区 -> git status 查看状态 -> git add . 将所有修改加入暂存区-> git commit -m "提交描述" 将代码提交到 本地仓库 -> git push 将本地仓库代码更新到 远程仓库

场景1:工作区

当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

  1. //?丢弃工作区的修改?
  2. git?checkout?--?<文件名>?

场景2:暂存区

当你不但改乱了工作区某个文件的内容,还 git add 添加到了暂存区时,想丢弃修改,分两步,第一步用命令 git reset HEAD ,就回到了场景1,第二步按场景1操作。

  1. //?把暂存区的修改撤销掉(unstage),重新放回工作区。?
  2. git?reset?HEAD?<文件名>??

三、git commit 提交到本地仓库,出错怎么办?

1. 提交信息出错

更改 commit 信息

  1. git?commit?--amend?-m“新提交消息”?

2. 漏提交

commit 时,遗漏提交部分更新,有两种解决方案:

方案一:再次 commit

  1. git?commit?-m“提交消息“

此时,git 上会出现两次 commit

方案二:遗漏文件提交到之前 commit 上

  1. git?add?missed-file?//?missed-file?为遗漏提交文件?
  2. git?commit?--amend?--no-edit?

--no-edit 表示提交消息不会更改,在 git 上仅为一次提交

3. 提交错误文件,回退到上一个 commit 版本,再 commit

git reset

删除指定的 commit

  1. //?修改版本库,保留暂存区,保留工作区?
  2. //?将版本库软回退1个版本,软回退表示将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到暂存区。?
  3. git?reset?--soft?HEAD~1?
  4. ?
  5. //?修改版本库,修改暂存区,修改工作区?
  6. //将版本库回退1个版本,不仅仅是将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将工作区代码也回退到这个版本?
  7. git?reset?--hard?HEAD~1?
  8. //?git版本回退,回退到特定的commit_id版本,可以通过git?log查看提交历史,以便确定要回退到哪个版本(commit?之后的即为ID);?
  9. git?reset?--hard?commit_id??

git revert

撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销

作为一次最新的提交

  1. //?撤销前一次?commit?
  2. git?revert?HEAD?
  3. //?撤销前前一次?commit?
  4. git?revert?HEAD^?
  5. //?(比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。?
  6. git?revert?commit?

git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容

git revert 和 git reset 的区别

  • git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
  • 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
  • git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。

四、常用命令

1. 初始开发 git 操作流程

  • 克隆最新主分支项目代码 git clone 地址
  • 创建本地分支 git branch 分支名
  • 查看本地分支 git branch
  • 查看远程分支 git branch -a

切换分支 git checkout 分支名 (一般修改未提交则无法切换,大小写问题经常会有,可强制切换 git checkout 分支名 -f 非必须慎用)

将本地分支推送到远程分支 git push <远程仓库> <本地分支>:<远程分支>

2. git fetch

将某个远程主机的更新,全部/分支 取回本地(此时之更新了Repository)它取回的代码对你本地的开发代码没有影响,如需彻底更新需合并或使用git pull

3. git pull

拉取远程主机某分支的更新,再与本地的指定分支合并(相当与fetch加上了合并分支功能的操作)

4. git push

将本地分支的更新,推送到远程主机,其命令格式与git pull相似

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章