Git基本使用 使用Git管理IDEA项目
目录Gitee的注册和代码提交(附有下载链接)Git的基本原理如何查看配置创建一个本地仓库 并用git管理它新建本地库git initadd添加到暂存区commit提交到本地库修改了文件 如何再次commit查看历史版本回退历史版本克隆远程仓库Gitee的项目到本地查看文件状态.gitignore忽略文件拉取远程仓库的项目到IDEA将本地IDEA独立项目和远程仓库项目关联获取远程仓库的最新代码(pull)如何查看操作记录如何删除一个文件Git分支管理介绍Git分支指令(创建分支实例)IDEA创建新的分支一个问题:IDEA本地看不见分支IDEA切换分支IDEA合并分支-无冲突有冲突-接受某一方有冲突-手动修改删除分支总结Gitee的注册和代码提交(附有下载链接)参考博客Git的基本原理分布式版本控制Git工作流程1.在工作目录中添加、修改文件(workspace)2.将需要进行版本管理的文件放入暂存区域(add)3.将暂存区域的文件提交到本地仓库(commit)4.把本地仓库的文件代码push到远程仓库(比如Gitee GitHub…)因此,git 管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)Git 本地有三个工作区域1.工作目录(Working Directory):就是希望Git帮助你管理的文件夹 可以是项目的目录2.暂存区(Stage/Index):它只是一个文件 保存即将提交的文件列表信息(临时存放做的改动)3.资源库(Repository或Git Directory 也叫本地仓库):安全存放数据的位置 这里面有你提交的所有版本的数据其中HEAD指向最新放入仓库的版本4.再加上远程的git仓库(Remote Directory) 托管代码的服务器(比如Github/Gitee) 就可以分为四个工作区域文件在这四个区域之间的转换关系如下注意:Remote直接pull到工作区 也会影响本地仓库如何查看配置安装Git后 首先要设置你的用户名称和e-mail地址, 因为每次提交都会使用该信息git config --global user.name “XXX”git config --global user.email “XXXxx.com”指令成功执行 会生成 C:\Users\Administrator.gitconfig查看所有配置git config -l查看系统配置git config --system --list查看当前用户配置git config --global --list(该指令显示的就是 C:\Users\Administrator.gitconfig 内容)创建一个本地仓库 并用git管理它新建本地库git init创建一个本地库:就是Git用来存 “文件历史、版本记录” 的文件夹1.先建一个文件夹比如叫Git-Test用命令进入这个文件夹cd /d/Git-Test2.输入初始化命令git init可以新增文件 熟悉一些指令 红色就代表文件未被追踪add添加到暂存区add 添加到暂存区(Stage/Index)万一你不小心把 “不想提交的文件” 加进了暂存区用这个命令 “移除”git rm --cached test.txt再敲git status文件又会变回红色 “未追踪”commit提交到本地库commit把add过的文件 提交到资源库(Repository或Git Directory 也叫本地仓库)add到暂存区的文件还不算 “正式保存” 万一电脑坏了暂存区的内容会丢commit提交到本地库后 文件会被写入.git文件夹 还会生成一个 “版本号” 以后想回退到这个版本都能找到这里是本地库 所以没有push到远程仓库的操作修改了文件 如何再次commit如果修改了已经add 已经commit的文件 怎么再次commit?需要再次add再commit修改文件后必须重新git add因为 Git 只认 “暂存区的内容”不直接认工作区的修改。假设已经修改了前面的.txt文件1.敲git status会看到红色提示 “modified: hello.txt”文件被修改了 且是未追踪状态2.敲git add test.txt把修改后的文件重新放进暂存区3.敲git commit -m “xxx” test.txt正式提交修改。查看历史版本改了好几次文件想看看 “之前有哪些版本、版本号是啥”用两个命令git reflog看 “简洁版历史”常用git log看 “详细版历史”回退历史版本如果你发现 “修改后的test.txt有 bug想回到第一次提交的版本”用git reset --hard 版本号1.先从git reflog里找到第一次提交的版本号比如22d41192.git reset --hard 22d41193.打开test.txt看看 已经回退了克隆远程仓库Gitee的项目到本地目标:把这个仓库克隆到本地来说明:克隆远程代码仓库 就是将远程服务器上的仓库完全镜像一份至本地克隆一个代码仓库和它的整个代码历史(版本信息)$ git clone [url] # url 就是远程 git 项目的地址执行 git clone [url]查看文件状态文件四种状态: 版本控制就是对文件的版本控制 在Git管理中 文件被统一管理 有四个状态1.Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到 git 库, 不参与版本控制 通过git add 状态变为 Staged2.Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种处理方式, 如果它被修改, 变为Modified. 如果使用 git rm 移出版本库,则成为 Untracked3.Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这种文件有两个去处,通过 git add 可进入暂存 staged 状态, 使用 git checkout 则丢弃修改过, 返回到 unmodify 状态, 这个 git checkout 即从库中取出文件, 覆盖当前修改(原来是A 修改成B了 但是本地库里还是A 我checkout就把本地库的A覆盖回来了)4.Staged: 暂存状态. 执行 git commit 则将修改同步到远程库中, 这时本地库中的文件和workspace中的文件又变为一致, 文件为 Unmodify 状态. 执行 git reset HEAD filename 取消暂存, 文件状态为Modified查看指定文件状态git status [filename]先在 D:\hspgit2\lunar-javascript , 创建一个测试文件 ABC.txt查看所有文件状态git status添加所有文件到暂存区git add .提交暂存区中的内容到本地仓库git commit -m “消息内容”推送分支到远程仓库 git push --all.gitignore忽略文件.gitignore文件语法和常见写法就看这篇就行了_.gitignore !**表示什么_石头wang的博客-CSDN博客下面这个列子就表示忽略 忽略文件所在目录 以及他的子目录下 所有.log后缀的文件拉取远程仓库的项目到IDEA需求:比如在Gitee上托管有一个项目1.入职第一天 项目经理就会把那个项目的地址给我2.我在IDEA上拉取该项目代码 然后进行开发3.我写完自己的文件 再把这些文件push到远程仓库去从远程仓库克隆到本地仓库以及工作区这样就克隆下来了 关联起来了完成相应的工作 然后push到远程仓库去新建一个Maven的测试模块会问你要不要直接add 第一次就先不要 手动add一下新建测试代码一开始是红色的(未追踪文件)add之后就变绿色了(放到暂存区了)然后就是commit到本地仓库最后push到远程仓库下面这是哪里变了就push哪里当然 我可以直接push整个项目(他自动会识别你哪里变了 不过哪里变了就push哪里是最好的)去远程仓库确定一下使用命令行操作将本地IDEA独立项目和远程仓库项目关联需求:在本地 创建了一个IDEA项目(没有从 Gitee拉取)后面又希望和Gitee的某个代码仓库关联 如何操作?在Gitee创建一个测试仓库 并设置成开源在本地IDEA创建一个独立的Maven项目new→project→Maven→设置坐标创建一个临时的目录 克隆远程仓库的项目信息把克隆下来的东西复制到Maven项目文件夹下刷新Maven或者重启IDEA 关联生效创建测试文件 写入一些内容 并将其push到远程仓库 执行add→commit→push界面方式或者命令行方式 都行获取远程仓库的最新代码(pull)需求:项目经理搭建了一个远程仓库 给项目组的两个人开发这个项目然后把远程仓库的地址给了程序员A和B程序员A和程序员B拿到地址 各自都在IDEA上克隆到了本地 进行开发项目经理让程序员A开发user模块 让程序员B开发goods模块问题出现了:程序员B在开发工程中 需要用到程序员A开发的user模块的某些代码那么程序员B就需要定时的把仓库的最新代码拉取下来演示1:Win11拉取Win10的就以我在Gitee上的测试项目002为例克隆到Win11上 作为Goods:克隆到Win10上 作为User:Win10完成User模块相关的代码后 push到远程仓库W11开发Goods的时候 需要用到User相关代码 就需要pull最新的仓库这个时候 刚刚Win10提交的代码 已经pull下来了而且在Win11上 可以看到所有记录演示2:Win10拉取Win11的Maven项目在Win11上 创建并push整个这个Maven模块然后我在Win10拉取这个Maven模块 这里可能出现一个问题问题原因是IDEA的环境设置等可能各不相同正常Maven项目下面那个main包下面的java包是蓝色的(默认是Source Root)你pull下来的项目可能是灰色的 而且java文件可能有一个时钟的标志解决方法:选中该项目 然后设置如何查看操作记录下图的Test001.java已经add过了 接下来代码变化 只需要commitpush 不需要再add这里可以查看 每次操作和上一次的变化之处checkout切换到某一个版本如何删除一个文件删除本地文件(本地操作)commit被删除文件的文件夹你可以push主分支 也可以push该文件夹或者都会:Git分支管理介绍默认有一个主分支master但是我过年的时候可能会出什么贺岁版 或者给别的公司定制的电信版这个时候会有分支了分支可以有多个(根据业务需求)如果各分支没有交集始终平行发展则不需要合并(merge)如果两个分支需要合并则执行 merge 操作Git分支指令(创建分支实例)查看本地分支查看远程仓库分支本地创建分支时刻要有那张图 本地和远程 都是有分支的所以这个时候 只有本地有V1.0的分支 本地的还没有push到远程切换到本地v1.0分支进行开发切换之后 我做的任何动作和master就没关系了这就意味我做的开发不会影响master分支 就算出了问题 删了重新再基于master开一个分支即可上面的操作 都还没有对远程仓库生效将本地分支v1.0作为独立分支提交到远程IDEA创建新的分支1.创建分支2.此时 只有本地有 远程仓库还没有这个分支3.push到远程仓库一个问题:IDEA本地看不见分支可能出现如下问题其实也就是把远程的分支再拉到本地仓库来(比如误删了本地仓库的某个分支 但是还没删远程的)从远程check out下来就行IDEA切换分支分支之间是相互独立的此时 在v2.0分支下 我们修改/增加文件 就是针对当前v2.0的不会影响到主分支和v1.0 分支之间是相互独立的在v2.0分支下 修改ZcyApplication代码 然后给他三板斧到远程仓库(其实已经add过就没必要再add了 不过也不会报错)在远程仓库观察master分支和v2.0分支在idea也能观察到v2.0的变化IDEA合并分支-无冲突1.切换到主分支 从主分支上新建一个分支v3.0(此时远程仓库还没有v3.0分支)2.把v3.0分支push到远程仓库3.观察一下v3.0分支因为我是从master分支开出来的分支 所以内容和他应该是一致的如果我从v2.0分支开一个v4.0分支 那v4.0的内容就会和v2.0一样了如下图:4.checkout到v3.0分支5.在v3.0分支下 无冲突地开发(我的操作 没有影响到原来master的任何东西 这里指的就是ZcyApplication)6.三板斧push新增的功能代码7.观察主分支和v3.分支(在IDEA也能观察到)注意:原因是它意味我要去master分支下面的NewFunc.java 显然是没有的8.开始合并注意:一定要切换到master分支下!(因为目标是把v3.0分支合并到主分支)9.然后选中你要合并的分支(v3.0) 开始合并10.无冲突是很顺利的11.在IDEA发现主分支已经多了v3.0的文件注意此时远程仓库的master 还没有这个文件 因为刚刚的合并工作 只是发生在本地仍然需要push一下合并过后的主分支到远程仓库 别的程序员才能pull到相应文件12.push合并过后的master分支有冲突-接受某一方需求:比如 master分支有一个Hello.java我在master分支上开出一个v1.0分支 自然v1.0也有Hello.java这个时候我在v1.0进行开发 然后修改了Hello.java合并的时候就有冲突→选择其一保留以解决冲突1.以master和v5.0为例 v5.0是在master的基础上开的分支 master原先有的文件是ZcyApplication和NewFunc切换到v5.0 修改其中的ZcyApplication2.三板斧把v5.0的变化push到远程仓库3.checkout回master 又修改了ZcyApplication 故意造成冲突4.三板斧把master的变化push到远程仓库5.截止到上面为止因为各个分支都是独立 所以没有出现任何的问题再以master为准(checkout到master) 把v5.0分支合并到master分支6.这时候就出现冲突了选择Merge就是在如下界面自己修改 然后apply就是采用修改的结果7.我选择theirs 以v5.0为准 合并出一个新的master8.注意这个时候远程仓库的master 还是没变化的因为我刚刚解决冲突的操作 一切都还是发生在本地的仍然要push 远程仓库才会变化9.因为我是以v5.0为准 合并到主分支的所以本地仓库的v5.0没变化 但是主分支已经被覆盖了这个时候再push一下master主分支 远程仓库的主分支也会变 IDEA也能检测出哪里变了有冲突-手动修改1.修改master分支的ZcyApplication 然后三板斧push到远程仓库2.修改v5.0分支的ZcyApplication 然后三板斧push到远程仓库3.切换到主分支 把v5.0合并到主分支—报冲突4.点击close5.手动修改自己修改:6.修改后 必须要add(因为冲突导致文件状态未追踪) 最后再push到远程仓库7.观察远程仓库 由于你是把v5.合并到主分支 所以v5.没变 主分支变了删除分支1.删除本地分支(这个时候删完还能从远程checkout恢复下来见上面的笔记 “一个问题” 那里的操作)2.删除远程分支总结1.Master主分支应该非常稳定 用来发布新版本 一般情况下不要在上面工作 工作一般在新建的分支(比如 dev、v1.0、v2.0)上工作2.分支代码稳定后 可以再合并到主分支Master3.在进行分支合并时最好是各分支都已经处于Committed的状态这样可以减小处理合并冲突的难度4.push操作是push你已经commit了的代码如果你修改了一个文件 但是你没有执行commit那么你push的其实是上次commit的状态结合这张图理解 push的是你commit到本地Repo里的东西5.add 、 commit 、push 的操作可以针对单个文件,也可以针对文件夹
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2591060.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!