一篇文章让你全方位掌握git版本控制管理
注:侵权请联系作者删除
目录
1.引入:
2.Git 的工作区域和流程
3.stash区域
4.git基本操作
A.git add
B.git commit
c.git pull
D.git fetch
E.git branch
F.git init
5.在项目中实际运用案例:
A.在github上创建一个新仓库
B.复制刚创建的项目git地址
C. git init初始化
D. git remote -v
E.git remote add origin git地址
F.git add .
G.git commit -am "注释"
H.git branch
I.git pull origin master(这个是分支名)
J.git push -u origin master(这个是分支名)
1.引入:
以前听过一个段子,说的是有一个程序员在工作第一天因为不会使用git拉取代码被炒鱿鱼,虽然这种情况很少见,但是我们还是需要来详细了解一下git的具体用法
2.Git 的工作区域和流程
先来看一下git工作流程图:
Workspace:也就是工作区,就是我们平时在电脑上编辑代码的地方,各种代码编辑软件
Index:暂存区,当执行 git add
的命令后,工作区的文件就会被移入暂存区,暂存区标记了当前工作区中那些内容是被 Git 管理的,当完成某个需求或者功能后需要提交代码,第一步就是通过 git add
先提交到暂存区。
Repository:本地仓库,位于自己的电脑上,通过 git commit
提交暂存区的内容,会进入本地仓库。
Remote:远程仓库,用来托管代码的服务器,远程仓库的内容能够被分布在多个地点的处于协作关系的本地仓库修改,本地仓库修改完代码后通过 git push
命令同步代码到远程仓库。
简单来说,git的工作流程可以分为以下几步:
1.在工作区开发,添加,修改文件。
2.将修改后的文件放入暂存区。
3.将暂存区域的文件提交到本地仓库。
4.将本地仓库的修改推送到远程仓库。
3.stash区域
除了上面这些区域之外,还有一个特殊的区域,那就是本地的 git 储存区,它是用来干嘛的呢?一般来说你可能在某些场景下会用到它,我们有的时候本地改了代码,但是突然有个人过来问你另一个分支的问题,同时这个时候你在实现某个功能,实现一半,又不想提交到 Git 仓库中,那么你就可以考虑使用 git stash save "临时存一下"
,这个时候它就会帮你存到这个储存区,你去其他分支做完事情回来,再 git stash pop
就好了。
但笔者还是不是很建议使用这个功能,因为哪天你切走了再切回来,忘记了这个存储,又写了点其他的,这个时候你到时候被坑一把就哭吧。当然了,这个功能还是很有用的,但是的确需要细心点用。
stash区域用法:
常用命令如下:
git stash save 'xxx'
: 储存变更git stash list
: 查看储存区所有提交列表git stash pop
: 弹出并应用最近的一次储存区的代码提交git stash drop stash@{n}
: 删除某次储存记录git stash clear
: 清楚所有 stash 信息
它的数据将被存在你仓库 .git 文件下的 refs/stash 里。
4.git基本操作
A.git add
添加文件到暂存区
添加某个文件到暂存区,后面可以跟多个文件,以空格区分 git add xxx
添加当前更改的所有文件到暂存区。 git add .
B.git commit
提交暂存的更改,会新开编辑器进行编辑
git commit
提交暂存的更改,并记录下备注
git commit -m "you message"
等同于 git add . && git commit -m
git commit -am
对最近一次的提交的信息进行修改,此操作会修改commit的hash值
git commit --amend
c.git pull
从远程仓库拉取代码并合并到本地,可简写为 git pull 等同于 git fetch && git merge
git pull <远程主机名> <远程分支名>:<本地分支名>
使用rebase的模式进行合并
git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
D.git fetch
了解完上面描述的 git pull
,命令之后,其实这个命令也很好理解了,特定时候,可能我们只是想把远端仓库对应分支的变更拉到本地而已,并不想自动合并到我的工作区(你当前正在进行代码变更的工作区),等晚些时候我写完了某部分的代码之后再考虑合并,那么你就可以先使用 git fetch
。
获取远程仓库特定分支的更新
git fetch <远程主机名> <分支名>
获取远程仓库所有分支的更新
git fetch --all
E.git branch
新建本地分支,但不切换
git branch <branch-name>
查看本地分支
git branch
查看远程分支
git branch -r
查看本地和远程分支
git branch -a删除本地分支
git branch -D <branch-nane>
重新命名分支
git branch -m <old-branch-name> <new-branch-name>
F.git init
除了我们从远端建仓库,有的时候我们自己本地也是可以自己初始化一个 Git 仓库来操作的,这个时候我们就直接使用 git init 就能轻松为当前目录创建一个 git 仓库,也就能开始对当前目录的改动纳入版本管理库了。
不过本地 init 的仓库没法和远端进行交互,所以我们还是需要去 github/gitlab 创建一个远端仓库,然后关联一下,也就是 git remote
命令了。
5.在项目中实际运用案例:
A.在github上创建一个新仓库
B.复制刚创建的项目git地址
C. git init初始化
在自己要存放代码的文件夹当中进行init初始化
D. git remote -v
查看远程仓库的信息
E.git remote add origin git地址
在本地项目的根目录下输入,这个是将本地项目与远程的git仓库关联起来
F.git add .
将本地文件添加到文件缓冲区
G.git commit -am "注释"
引号里面的注释是你这次提交的什么内容做个注释,方便以后方便看
H.git branch
查看本地分支
I.git pull origin master(这个是分支名)
拉取远程master分支代码
J.git push -u origin master(这个是分支名)
将本地缓存仓库的文件推送到远程,也就是网上
最后在Github上边看到的效果
本人的另一篇文章也有另一种上传项目的方法,大家可以点击查看该博客
上传代码到github的另一种方法
一篇文章让你全方位掌握git版本控制管理相关推荐
- 《Git版本控制管理(第2版)》——4.3 Git在工作时的概念
本节书摘来自异步社区<Git版本控制管理(第2版)>一书中的第4章,第4.3节,作者:[美]Jon Loeliger , Matthew McCullough著,更多章节内容可以访问云栖社 ...
- 【Git版本控制管理】Gitee(码云)和GitHub的使用
远程仓库的使用 文章目录 远程仓库的使用 使用码云(Gitee) 使用GitHub 远程仓库是指托管在因特网或其他网络中的你的项目的版本库. 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读 ...
- java中git版本控制,git版本控制管理是什么?git如何实现版本控制?
大家好,今天要跟大家讲的是关于git版本控制管理的一点小知识,git相信程序员小伙伴们都已经很熟悉了,很多项目开发都需要git,所以,git版本控制管理到底是干嘛的呢?Git又如何实现版本控制呢?下面 ...
- Git版本控制管理——远程版本库
之前提到的Git的所有操作都是在本地完成的,而实际项目开发并不是一个人就可以搞定的,通常需要团队的协作,而这些协作可能又不是在同一个地区的,这就涉及到Git的分布式特性了. Git的分布式特定会涉及到 ...
- Git 版本控制管理(一)
Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git -- The stupid content tracker(傻瓜式的内容跟踪器) 关于 Git 的 ...
- Git版本控制管理——简介
说明 在大型项目开发或者多人协作开发时,都希望可以对软件代码进行管理和追踪,以便确认开发的进度和方便问题追溯.这就需要使用到版本控制系统(VCS),比如Git就是一款很优秀的版本控制工具.如今很多项目 ...
- 3.git版本控制-管理修改、撤销、删除
管理修改 第一次修改 -> git add -> 第二次修改 -> git commit,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交, ...
- Git版本控制管理——分支
实际开发中,会在当前开发线路上拉出另外的开发线进行开发,比如软件功能已经比较稳定的话,在后续功能的开发过程中,就很可能会拉出独立的支线进行开发,待功能开发完毕后,再将该直线合入稳定的主线中. 当然实际 ...
- Git版本控制管理——补丁
Git实现了自己的传输协议用于版本库间交换数据.出于效率方面的考虑(为了节约时间和空间),Git传输协议会进行握手,以确定原版本库中的哪些提交不在目标版本库中,最终传输提交的二进制压缩形式.接收的版本 ...
最新文章
- 会话技术CookieSession
- 检测对抗样本_对抗T恤以逃避ML人检测器
- mysql 复杂的sql_mysql 一个复杂的sql
- 基于Bootstrap的网站后台模板Metronic
- 百科园c语言题库第八章南信大,C语言上机题库百科园第3章!南信大!.doc
- 天津大学计算机考试题库,天津大学在线考试题库及答案[开放英语专]
- 安全出口指示灯警报、如何解除呢
- 计算n位二进制的所有情况
- image target behaviour 和image target的关系_图片分析软件Image-Pro Plus的基础操作
- 服务器配置tomcat,使用浏览器访问服务器资源
- APP一键登录测试点
- 软件开发项目流程 - 立项
- 集中器与本地通信模块的交互流程
- 万娟 白话大数据和机械学习_《白话大数据与机器学习》.pdf
- 美学心得(第二百四十一集) 罗国正
- 基于opencv和pillow实现人脸识别系统(附demo)
- 晶振(crystal)与晶振(oscillator)的区别
- 基于LSTM的上证指数预测
- 震撼!世界从10亿光年到0.1飞米!
- ubuntu18.04分辨率只有1024*768,解决方案和踩坑梳理(应该适用其他ubuntu版本)