当前位置:   article > 正文

git 笔记/常见命令/as的fetch,pull ,update project的区别/标签管理

update project

Git概念汇总

头(HEAD)

头(HEAD)HEAD类似一个“指针”,指向当前活动 分支 的 最新版本。

工作区(Workspace)

 就是在电脑里能看到的项目代码库目录,是我们搬砖的地方,

在这里我们可以新增文件、修改文件内容,或删除文件。

此时的项目代码库目录还是红色的(没有与git关联),未被git跟踪

此时的工作区的代码修改是不能直接保存到本地仓库的,

需要通过 git add(暂存)把整个项目工程提交到暂存区,

这时项目工程就变成绿色的了,就被gti跟踪了,

在暂存区修改的代码内容 只有通过git commit才能将暂存区修改的内容提交到Git本地仓库

暂存区(stage或index)

    用于临时存放文件的修改,

 用git add 命令将工作区的项目工程代码保存到暂存区,此时的项目工程就被git跟踪了

在暂存区里未修改的代码文件是绿色的, 修改的代码文件是蓝色的

版本库/仓库 Repository

通过git commit 命令将暂存区的内容正式提交到版本库(本地仓库)。

master 为仓库的默认分支master,HEAD是一个“指针”指向当前分支的最新提交,默认指向最新的master。

 通过git push 将本地仓库推送到远程仓库

通过git  pull  从服务端仓库文件拉取更新到本地仓库

 

 

git常见命令

 

git常见命令

git branch

列出所有本地分支,加参数-v显示详细列表,

git branch -r

列出所有远程分支

 git branch -a

列出所有本地分支和远程分支

git branch -d dev

删除dev分支,-D(大写)强制删除 

git checkout -b dev

从当前分支创建并切换到dev分支

git checkout -b feature1 dev

从本地dev分支代码创建一个 feature1分支,

git switch:

专门只是用来实现分支切换。

git switch dev 

只是切换到dev分支

git reset:

  将已经提交到本地仓库的文件,撤销回退到暂存区(替代checkout的撤销功能。)

                git commit  -m "first commit"

                将暂存区的修改文件提交到本地仓库

               git commit -a

               直接提交工作区的修改内容到本地仓库

              git branch -M "分支名称"

             创建本地分支

            git remote add origin https://github.com/fmf19870210/FMFNote.git

           关联远程git仓库地址

         git push -u origin master

     本地仓库 远程提交主支

git fetch

一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。

git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响。远程代码取回到本地并不会合并到你的本地分支里去。

git fetch <远程主机名>

git fetch origin

默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。

 git fetch <远程主机名> <分支名>

  1. //比如,取回origin主机的master分支。
  2. git fetch origin master

git pull

先拉取git fetch 某个远程分支的代码,然后再git merge 合并到当前本地分支 或指定的某个本地分支

git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。

git pull <远程主机名> <远程分支名>:<本地分支名>

  1. //比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
  2. git pull origin next:master
  3. git pull origin master:master
  4. git pull origin dev:dev

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

  1. git pull origin next
  2. git pull origin master
  3. git pull origin dev

as的fetch,pull ,update project的区别

git fetch 从远程分支上获取最新版本代码 到本地 ,代码不会合并 merge到当前分支

git pull 从远程分支上拉取最新版本代码 到本地并自动合并 merge到当前分支

git pull =git fetch 和 git merge

update project 会更新项目所有module,但是pull只会更新一个。

合并merge&冲突

git merge dev  dev合并到master没有冲突

合并dev到master,注意要先切换到master分支,然后执行git merge dev,master分支上没有修改内容,直接把dev合并到当前分支master。

git merge dev  dev合并到master有冲突

把分支dev 8合并到已经修改过内容的分支master 6 
   有冲突需要人工手动解决 合并到新的分支master 9分支上 
   为最新的master分支

    <<<<<<< HEAD开头的内容就表示是有冲突的部分,需要人工处理,

=======分割线上方是当前分支的内容,下方是被合并分支的变更内容。

标签管理

标签(Tags)指的是某个分支某个特定时间点的状态,是对某一个提交记录的的固定“指针”引用。一经创建,不可移动,存储在工作区根目录下.git\refs\tags。可以理解为某一次提交(编号)的别名,常用来标记版本。所以发布时,一般都会打一个版本标签,作为该版本的快照,指向对应提交commit。

当项目达到一个关键节点,希望永远记住那个特别的提交快照,你可以使用 git tag给它打上标签。比如我们今天终于完成了V1.1版本的开发、测试,并成功上线了,那就可给今天最后这个提交打一个标签“V1.1”,便于版本管理。

git tag 查看标签列表

git show [tagname] 查看标签信息

git tag [tagname] 创建一个标签

git tag -a v5.1 -m'v5.1版本'

创建标签v5.1.1039,-a指定标签名,-m指定说明文字

git tag -d [tagname]    删除本地标签

git push origin [tagname]   推送某个标签tagname到远程

git push origin --tags 一次性推送全部标签到远程

后悔药-怎么撤销变更?

发现写错了要回退怎么办?看看下面几种后悔指令吧!

 还没本地提交的怎么撤销?

修改的内容还没提交到工作区、暂存区,不想要了 

使用reset 本地回滚撤销

已提交到本地但没有push到远程的如何撤销?

修改的内容已经提交到工作区、暂存区,不想要了 

使用reset、revert本地回滚撤销

已push到远程的如何撤销?

先使用reset、revert本地回滚撤销

然后强制推送git push origin -f

后悔指令

 

checkout指令

git checkout / git checkout [file] 

撤销/清除工作区中 所有的修改内容(该修改内容未添加到暂存区),用暂存区替换当前的工作区。

git checkout HEAD / git checkout HEAD [file] 

撤销/清除工作区、暂存区的修改内容(已经通过git add  将工作区暂存到了暂存区)

用HEAD指向的当前分支最新版本替换工作区、暂存区的版本

reset回退版本指令

reset是专门用来撤销修改、回退版本的指令,支持的场景比较多,多种撤销姿势,所以参数组合也比较多。简单理解就是移动master分支、HEAD的“指针”地址,理解这一点就基本掌握reset了。

reset有三种模式,对应三种参数:mixed(默认模式)、soft、hard。三种参数的主要区别就是对工作区、暂存区的操作不同。

  • mixed为默认模式,参数可以省略。

  • 只有hard模式会重置工作区、暂存区,一般用这个模式会多一点。

 

git reset/git reset HEAD/git reset HEAD [file] 

撤销暂存区状态,不影响工作区

git reset [commit]

回退到指定版本,清空暂存区,不影响工作区。

git reset/git reset HEAD/git reset HEAD [file] (HEAD可省略)

撤销暂存区状态,不影响工作区

git reset [commit]

回退到指定版本,清空暂存区,不影响工作区。工作区需要手动git checkout签出

git reset --soft [commit]

移动分支master、HEAD到指定的版本,不影响暂存区、工作区,需手动git checkout签出更新

git reset --hard HEAD

撤销工作区、暂存区的修改,用当前最新版

git reset --hard HEAD~

回退到上一个版本,并重置工作区、暂存区内容。

git reset --hard [commit]

git reset --hard 5f8b961

回退到指定版本,并重置工作区、暂存区内容。

reset案例

git reset --hard v4 或 git reset --hard HEAD~2

回退到版本v4  master、HEAD指针移动到v4。v5、v6就被废弃了。

 

git reset --hard v6

也可以重新恢复到v6版本  移动master、HEAD的“指针”地址到V6

 

revert提交撤销某个版本的指令

安全的撤销某一个提交记录,基本原理就是生产一个新的提交,用原提交的逆向操作来完成撤销操作。注意,这不同于reset,reset是回退版本,revert只是用于撤销某一次历史提交,操作是比较安全的。

git revert[commit]

撤销之前的一个提交,

会生成一个新的提交     来完成    撤销之前的一个提交  操作,

案例

git revert v4    -m'撤销对***的修改'
 

 这个提交的指令就是撤销v4版本 v4版本就不存在了

同时更新maser、HEAD“指针”位置,以及工作区内容。

“-m”附加说明”

 

感谢

我看谁还不懂 Git !(万字长文)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/733005
推荐阅读
相关标签
  

闽ICP备14008679号