`
zheyiw
  • 浏览: 1019870 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Git的正确使用姿势

git 
阅读更多
1,Git教程
廖雪峰老师的Git教程
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

一个成功的Git分支开发模型
https://blog.csdn.net/qq_34651940/article/details/51891767

《一个成功的Git分支模型》为什么是有害的
https://www.jianshu.com/p/748e4892871a


2,Git的正确使用姿势

开发部目前使用Git的问题
1,提交内容混乱
2,出现很多的合并导致的无疑义提交,例如 “Merge branch ‘some-branch’ of git://git.some.domain/repository/”
3,三个主分支之间的频繁合并工作和产生的无疑义的合并信息

解决办法如下
必须的默认配置
git config --global pull.rebase preserve  #拉取并变基


直接在master(或dev)分支上开发的场景模拟
1,master分支跟踪远端
2,一天的开发过程中常规性的commit多次
3,下班前对commit信息进行合并:git rebase -i origin/master   #合并本地commit 
4,pull  #拉取并变基(有冲突就解决)
5,push  (也可以先push,如果push不了,就pull后再push(有冲突就解决后push))



正宗的:在本地的工作分支上进行开发的场景模拟
1,master分支跟踪远端
2,签出本地工作分支f1
3,一天的开发过程中常规性的commit
4,下班前对commit信息进行合并:rebase -i master  (编辑合并后的提交信息)
5,切换到master分支,merge
6,pull  #拉取并变基(有冲突就解决)
7,push  (也可以先push,如果push不了,就pull后再push(有冲突就解决后push))
强调:rebase只能用在本地分支


建议的Git工作模式规则
1,工作分支一定独立出来-->使得可以整理出有意义的Commit信息
2,使用rebase替代merge-->减少无意义的合并信息
3,使用master分支作为开发分支-->减少dev分支往master分支的合并工作
4,用release分支作为发布分支,发布前打tag-->减少分支的合并工作
5,每次测试都要产生新的release分支-->减少分支的合并工作


Alias
git rebase -i origin/master   #合并本地commit
git config --global alias.tidy "rebase -i @{upstream}"  #配置快捷方式

git config --global pull.rebase preserve  #拉取并变基




3,Git基本命令

基本命令
先初始化再关联远程仓库
git init 
git remote add origin https://github.com/xxxx.git 

先克隆
git clone https://github.com/xxxx.git

本地添加和提交
git add README.md 
git commit -m "first commit" 

日志 
git log --graph --pretty=oneline --abbrev-commit

远程仓库
git push -u origin master 
git pull origin master --refusing to merge unrelated histories 
 
分支 
git branch 
git checkout -b dev 从当前分支创建分支dev,并切换到dev分支 
git checkout dev 切换到dev分支

 

关于Git分支和常用命令
我们clone代码到本地之后会保存成两个分支
本地分支和远程跟踪分支(origin/master)
我们所有的修改都会在本地分支中进行
Fetch操作会更新远程跟踪分支
Merge会将远程更新分支中的修改合并到本地分支
Pull = Fetch + Merge
Push会把本地分支推送到服务器,如果成功或做一次Fetch更新本地的远程跟踪分支使保持一致


关于差异比较
在Git的理念中本地分支和远程分支地位是一样的,所以在SVN中跟服务器的比较功能在Git中没有
执行git diff 的时候是工作空间和本地分支比较
Commit之后,工作空间和本地分支就没有区别了,git diff就没有结果
当远程分支Fetch后可以用git diff origin/master比较工作空间和远程分支的差异





标准代码提交流程
1,将修改的地方全部Commit到本地仓库,如果你还不想推送到远程仓库可以不用
2,Fetch远程代码到本地的跟踪分支
3,Merge本地仓库代码到工作空间,工作空间还有修改没有Commit时不能合并
4,Push本地仓库代码到远程服务器

冲突的解决
Merge后如果出现冲突,冲突的文件会被修改

方法一:
这个时候,重新编辑这个文件解决冲突,再Commit,再Push就会用本地的文件覆盖服务器的文件

方法二:
如果想撤销之前的Commit可以用一下命令
git log
git reset --hard commit_id
撤销后再Merge,再重新开发再Push

用远程代码强制覆盖本地代码
git fetch --all
git reset --hard origin/master

git rm file   会将文件从暂存区与磁盘上删除
分享到:
评论

相关推荐

    Atom安装package的正确姿势

    - 将 Git 添加到环境变量中后,我们就可以在命令行工具(如 CMD 或 PowerShell)中使用 `git` 命令了。 2. **安装 Node.js 并将其添加到环境变量中**: - Atom 的插件大多是用 Node.js 编写的,因此需要安装 Node...

    藏经阁-Terraform - 管理云资源的正确姿势.pdf

    "Terraform - 管理云资源的正确姿势" Terraform 是一种 Infrastructure as Code(IaC)工具,由 HashiCorp 公司开发,用于管理云资源。Terraform 可以帮助基础设施工程师快速地搭建、管理和维护云资源。 为什么...

    这是一个管理项目.zip

    router、vue-cli、axios、webpack、element-ui、easyMock,所以你最好提前熟悉了解这些知识,这对你认识学习该项目有很大帮助详细的项目介绍,可以关注我的相关文章正确的姿势开发vue后台管理系统安装# 克隆项目git ...

    AI篮球分析:AI Web应用程序和API分析篮球投篮和投篮姿势

    :basketball: 通过机器学习分析篮球射击和投篮姿势! 这是一个基于对象检测概念的人工智能应用程序。 通过挖掘从物体检测收集的数据来分析篮球投篮。 我们可以通过简单地将文件上传到Web App或...最后,使用一个命令将

    详解项目升级到vue-cli3的正确姿势

    这些文件在对应环境中被自动加载,并会被 Git 忽略。 综上所述,升级 Vue CLI 项目时需要对配置文件进行适配,解决新版本带来的变化。通过理解这些关键点,可以更顺利地完成升级工作,并确保项目在新环境中正常运行...

    希望大家在合作中学习姿势、提升技术、交流感情。比赛第二,友谊第一。.zip

    1. **版本控制**:项目使用Git进行版本控制,"master"分支是开发的主要分支。 2. **团队协作**:项目可能涉及到多人协作,展示了如何在团队中分工合作,协同开发。 3. **编程语言**:源码可能涉及多种编程语言,如...

    artsy-poses-client:艺术姿势网络应用程序

    艺术姿势客户 此自述文件概述了在此 Ember 应用程序上进行协作的详细信息。 这个应用程序的简短介绍可以很容易地转到这里。 先决条件 您将需要在您的计算机上正确安装以下东西。 (带有 NPM)和 安装 git clone 这...

    DevPods:致力于开源框架并同时构建您的产品,使您的产品模块化,就像一块拼图,可以形成任何形状

    DevPods 不要每天重复自我。 随意复制所需的姿势,如果需要太多,可以将其... pod 'DevPods/DevComponents', :git=>URL 迅捷软件包管理器您可以通过在Package.swift文件中添加正确的描述来使用来安装DevPods : impo

    分享几个正确打开CMD的姿势,你知道几种?别人问你别再说不知道了,程序猿就要有程序猿的样子

    在Windows环境下,虽然很多开发者倾向于使用PowerShell或者Git Bash等更为强大的命令行工具,但CMD仍然是基础且不可或缺的一部分。熟练掌握CMD的打开方式,可以更好地与各种开发工具配合使用,特别是在处理系统级...

    pose_terrier:C ++中基于视觉的相对姿势估计器

    pose_terrier 依存关系 C ++ 11或更高版本 (3.10或更高版本) (经过1.13.0测试) (经过3.3.4测试) (已通过3.6.1.3测试) 制作说明 克隆存储库: ...在第一次使用之前,请将params.json文件链接到

    asanas-guess-game-api

    4. 用户猜测提交:用户通过API提交他们对所猜姿势的猜测,API会检查答案是否正确。 5. 记录得分:每次猜对或猜错,API都会更新用户的得分。 6. 排行榜:可能提供一个接口显示最高得分用户,增加竞争性和趣味性。 ...

    美国手语(ASL)的Python单词识别器,使用隐马尔可.zip

    美国手语(American Sign Language,简称ASL)是美国和加拿大的聋哑人社区广泛使用的视觉-空间语言,它通过手势、面部表情和身体姿势来表达意思。 【描述】中的“隐马尔可夫模型(HMM)”是这个识别器的关键算法。隐...

    Java版颈椎自动矫正图

    9. 工具:开发过程中可能使用了各种工具,例如IDE(Eclipse、IntelliJ IDEA)、版本控制系统(Git)、构建工具(Maven、Gradle)等。 总的来说,"Java版颈椎自动矫正图"是一个集成了计算机视觉、图像处理、用户交互...

    NAO_test

    9. **版本控制**:作为Git仓库的一部分,NAO_test可能使用了Git进行版本控制,通过提交历史了解项目的演变过程。 10. **文档和注释**:良好的项目实践通常包括清晰的文档和代码注释,帮助其他开发者理解和维护代码...

    typ0:以程序员为中心的打字导师

    1. **打字技巧**:包括正确的手指姿势、触键力度和节奏控制,这些都是提高打字速度和减少错误的关键。 2. **编码规范**:由于"typ0"是为程序员设计的,所以它可能会模拟常见的编码规范,如命名约定、缩进风格等,以...

    学习笔记:打字错误

    - **正确的打字姿势**:保持正确的手指位置和手腕姿势,可以降低因肌肉记忆不足导致的错误。 - **使用触觉键盘**:有触感的键盘有助于增强手指对键位的感知,减少按错键的情况。 5. **习惯养成**: - **慢慢来**...

    posegenerator

    【压缩包子文件的文件名称列表】:"posegenerator-master"暗示这是一个Git仓库的主分支,通常包含项目的源代码、资源文件、配置文件以及README文档等。在这个项目中,我们可以期待找到以下内容: 1. **源代码**:`....

    普拉提

    这样的系统可以帮助教练更准确地评估学员的动作执行情况,同时也可以帮助学员自我检查,避免不正确的姿势导致的伤害。 在普拉提的训练软件开发中,C语言的优势在于它的速度和内存管理灵活性。由于普拉提应用程序...

    android车牌识别系统EasyPR使用详解

    6. 生命周期管理:在`onStart()`, `onStop()`, 和 `onDestroy()`方法中,分别调用`EasyPRPreSurfaceView`的对应方法,确保相机资源的正确开启和关闭,防止内存泄漏。 在实际开发中,你可能还需要对EasyPR进行一些...

    腹肌网

    5. **图像**:标签插入图片,例如展示正确的锻炼姿势或者腹肌的示例图片。 6. **列表**:和标签用于创建无序列表和有序列表,可以用来列举锻炼动作的步骤或推荐的腹肌训练计划。 7. **表格**:、、等标签可创建...

Global site tag (gtag.js) - Google Analytics