一步到位!快速精通Git工作流及实战技巧详解

简介: 一步到位!快速精通Git工作流及实战技巧详解

Git是一个分布式版本控制系统。


1、git的应用场景


1.备份

小明负责的模块就要完成了,就在即将release之前的一瞬间,电脑突然蓝屏。硬盘光荣牺牲!几个月来的努力付之东流。


场景二:代码还原

这个项目中需要一个很复杂的功能,老王摸索了一个星期终于有眉目了,可是这被改得面目全非的代码已经回不到从前了。回滚版本。


场景三:协同开发


场景四:追溯问题代码的编写人和编写时间

  1. 打开Git Bash
  2. 设置用户信息 git config -global user.name "huan" git config -global user.email "1320156914@qq.com"


2、安装git


安装git


brew install git


查看git版本


git --version


如果查看git版本时遇到这个问题


zhouchenghuan@zhoucheuandembp ~ % git –version

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun


这个错误信息表明你的Mac电脑上的Xcode Command Line Tools没有正确安装或激活。你可以通过以下步骤来修复这个问题:


xcode-select --install


然后重装git


安装成功



3、Git基础使用


获取本地仓库


git init



每提交一次(git commit) 就会增加一个新的版本。

  1. git add (工作区-> 暂存区)
  2. git commit (暂存区->本地仓库)


查看修改的状态


作用:查看的修改的状态(暂存区、工作区)


命令形式:git status


查看日志:git log

git branch 查看本地分支


git branch 分支名 创建本地分支


git log 比branch好用一些,查看非常直观。


git log 查看日志


git -log 以精简的方式显示提交记录


git checkout 切换分支


如 git checkout master 切换到主分支


git checkout -b 切换并创建分支


git merge 'dev01'


git reset --hard commitID 版本回退

 

作用是切换版本


commitID可以使用git -log指令查看


如何查看已经删除的记录?


git reflog 这个指令可以看到已经删除的提交记录


开发中分支使用原则与流程


Master (生产)分支


线上分支,主分支,中小规模项目作为线上运行的应用对应的分支。


develop(开发)分支


是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要合并到master。准备上线。


Feature 分支


从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支。


hotfix分支


从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支。


解决冲突


当两个分支上的同一个文件可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决:


1、我们将文件修改成我们期望的值


2、将修改后的文件加入暂存区(add)


3、提交到仓库(commit)


git branch -d dev02 删除分支


git branch -D dev02 强制删除分支


git merge 合并分支


比如你要将dev01合并到master,那么你先 git checkout master ,再git merge dev01


4、Git远程仓库


常见的托管服务 github、码云 gitee,个人一般用gitee,企业用gitLab。


https://gitee.com 注册账号


新建一个仓库,填一下仓库名,其他不要填


git remote add origin <远程仓库地址> 添加远程仓库


git remote 查看远程仓库


git push -u origin "master" 推送到远程仓库 (如果不在master分支则要切换master分支)


git push -f origin master 强制推送到远程仓库


git fetch 它的主要功能是从远程仓库获取最新的提交信息,但并不会自动将这些更新合并到本地的当前分支。


git clone [远程仓库地址] [本地目录名称(可选)] 用于从远程仓库复制一份完整的项目到本地,这个是比较常见的,一般第一次拉整个完整项目,后面都是用git fetch刷新。


git fetch [remote]


抓取指令就是把仓库里的更新都抓取到本地,不会进行合并。


主要用于从远程仓库获取最新的数据(包括分支、标签等信息),但并不会自动合并到本地当前分支。执行此命令后,你可以查看远程仓库的更新内容,并在确认无误后选择是否将这些更新合并到本地。

应用场景:比如前几天我同事创建了一个项目,我第一次拉下来就是git clone,今天他又更新了,此时我只用git fetch把他更新的那部份代码拉下来就行了,不需要重新拉取整个项目。


git pull


拉取指令就是将远程仓库的修改拉到本地并自动进行合并,等同于fetch+merge


如果不指定远端名称和分支名,则抓取所有并更新当前分支


解决远程仓库冲突

a用户在本地修改代码后有限推送到远程仓库,此时b用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时b用户晚于a用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支。


解决合并冲突


在一段时间,a、用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。

a用户在本地修改代码后优先推送到远程仓库,此时b用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时b用户晚于a用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支。


你找到那个冲突的文件,改成你想要的样子,然后git add <file>,最后git commit -m "commit message"就好了。


5、idea集成git


1、在settings里搜索git,输入git安装路径,点击“test”,如果成功的话会在下面显示git版本。



选择ssh地址


2、gitignore


.gitignore 文件中,每一行都指定了一个模式,Git 将会根据这些模式来决定哪些内容不应该被添加到版本库中。例如:


• *.log:表示忽略所有扩展名为 .log 的文件。

• build/:表示忽略 build 目录及其下的所有文件和子目录。

• temp.txt:表示忽略名为 temp.txt 的具体文件。

这样做的好处在于,可以避免一些临时文件、编译生成的文件、敏感信息文件(如密钥文件)等被误提交到版本库中,从而保护隐私并减少仓库的冗余数据。


3、idea创建仓库


这个✅就是commit

提交成功

可以看到每次提交的内容

推送至远程仓库

首次推送时,还没有绑定远程仓库,点击define remote,输入远程仓库地址

填入远程仓库的这个地址

成功推送

可以看到gitee远程仓库里已经成功收到了我们刚刚从本地仓库推送过去的代码

创建分支

如果你想把的dev02合并至dev01,那你就切换到dev01,选择merge dev02 into dev01

观察同事写了什么代码

git操作流程

命令如下:


1.clone (克隆):从远程仓库中克隆代码到本地仓库


2.checkout(检出):从本地仓库中检出一个仓库分支然后进行修订


3.add(添加):在提交前先将代码提交到暂存区


4.commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本


5.fetch(抓取):从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少


6.pull(拉取):从远程库拉到本地库,自动进行合并(merge),然后放到工作区,相当于

fetch+merge

7.push(推送):修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库。


6、实战

同事创建了仓库,新建了dev分支,叫我把代码拉一下。请问怎么做?


实现思路:


1、git clone <同事仓库的SSH地址>


2、git checkout dev 切换分支


3、git pull origin dev 更新分支


4、git checkout -b dev-01 创建并切换至自己的分支,在自己的分支上修改


5、git add.


6、git commit -m "描述你的更改内容"


7、git rebase dev 在推送前确保你的分支包含了dev分支的最新变更


8、git push origin dev-01 检查过代码和同事交流过确认没问题,将你的更改推送到远程仓库的个人分支


快来关注我的微信公众号“周盛欢Java”,免费领取学习资料~


目录
相关文章
|
6月前
|
存储 前端开发 开发工具
Git Hooks实战:提交前检查修改文件中是否包含调试代码
Git Hooks实战:提交前检查修改文件中是否包含调试代码
100 0
|
6月前
|
前端开发 算法 开发工具
Git分支批量清理利器:自定义命令行插件实战
Git分支批量清理利器:自定义命令行插件实战
123 0
|
23天前
|
测试技术 持续交付 开发工具
掌握 Git 工作流:高效团队协作的关键
【10月更文挑战第22天】本文介绍了 Git 工作流的核心概念和最佳实践,包括分支策略、提交信息、代码审查和合并策略等。通过优化这些环节,可以提高代码管理效率,促进团队成员之间的有效沟通,从而提升团队整体的开发效率。适合开发者和团队管理者阅读。
|
22天前
|
开发工具 C# git
C#一分钟浅谈:Git 版本控制与 GitFlow 工作流
【10月更文挑战第22天】本文介绍了 Git 和 GitFlow 的结合使用,从基础概念到具体操作,涵盖了安装配置、基本命令、GitFlow 工作流的核心分支和流程示例。同时,文章还讨论了常见的问题和易错点,如忽略文件、冲突解决、回退提交和分支命名规范,并提供了代码案例。通过学习本文,读者可以更好地理解和应用 Git 及 GitFlow,提高团队协作效率。
46 1
|
1月前
|
Linux 开发工具 git
企业级Git管理工作流分析--GIT实战详解
企业级Git管理工作流分析--GIT实战详解
38 0
|
3月前
|
开发工具 git
Git 高手之路:高级特性与实战技巧揭秘
【8月更文第16天】在日常开发工作中,Git 已成为版本控制不可或缺的工具。本文将介绍 Git 的一些高级特性和实战技巧,帮助你更好地管理项目和团队协作。
41 1
|
4月前
|
数据可视化 程序员 开发工具
小白也能玩转Git:从入门到实战详细教程
小白也能玩转Git:从入门到实战详细教程
|
6月前
|
缓存 开发工具 git
推荐收藏 | 【Git实战专题】「必坑宝典」带你深入剖析Git操作指令下的奥秘原理和运作机制
Git是一个分布式版本控制系统,它可以跟踪文件的修改、记录历史版本,并支持多人协作开发。
86 2
推荐收藏 | 【Git实战专题】「必坑宝典」带你深入剖析Git操作指令下的奥秘原理和运作机制
|
6月前
|
缓存 开发工具 数据安全/隐私保护
git-学习git,这一篇就足够了(初学者视角实战教程)
git-学习git,这一篇就足够了(初学者视角实战教程)
219 0
|
测试技术 Linux 开发工具
浅谈基于 Git 的版本控制工作流
现如今,Git 应该算是最受欢迎的版本控制工具了。例如现在世界上最大的两个代码托管平台 GitHub 和 GitLab,都是基于 Git 进行版本控制的;在国内,大家使用较多的中文代码托管平台 Gitee,也是基于 Git 进行版本控制的。由此可见,Git 作为版本控制工具,其速度快、分布式等特性,深受大家喜爱的。因此,了解基于 Git 的版本控制工作流,还是与我们有益的!
1142 0
浅谈基于 Git 的版本控制工作流