`
xieye
  • 浏览: 820906 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

git文件冲突合并的几种情况

    博客分类:
  • PHP
阅读更多
本文描述了git冲突的几种常见情况和解决方案,老鸟请直接忽略本文。
假设冲突文件是 test/TestCase.php

  下面分5种情况讨论。

1、本地不变。
  然后远程别人有更新。
  git pull
  这种最简单,没有冲突,本地工作区直接更新
 
2、我本地修改,但是不add。
然后远程别人有更新,此时 :    
git pull,
git会告诉你:
error: Your local changes to the following files would be overwritten by merge:
        tests/TestCase.php
  此时,我 
   git checkout -- tests/TestCase.php
  千万注意,上条命令会导致你自己的修改丢失了!!
  然后git pull.成功。
  这种情况下,你自己的修改完全丢失。本地接受了远程的修改。
 
3、我本地修改,但是已经add了。
  然后别人远程更新,
  git pull
  这种情况,和上面几乎一样。
  git reset HEAD test/TestCase.php 
  上面这条命令可以理解为add命令的逆命令。即,取消add操作。
 
  然后继续
  git checkout -- tests/TestCase.php
  千万注意,上条命令会导致你自己的修改丢失了!!
  然后git pull.成功。
  这种情况下,你自己的修改完全丢失。 本地接受了远程的修改。

   
4、我本地修改,add 且 commit了
  然后别人远程更新,
  git pull
  注意:这种情况和第2,第3种情况不同。git会认为你的commit也很重要。同等重要。
突然发现,自动进入vi界面。
Merge branch 'master' of https://github.com/xxxx
这什么意思呢?就是git会主动再帮你添加一个commit。
先让你写点注释,并且它已经帮你写了几句话
那自己写点东西,然后保存退出vi
请注意,这个commit是在本地的,还没有发到远程。
这个commit会自动合并 你添加到代码,和 别人远程更新的代码,
所以,之后请自己检查一下这个代码有无问题。

  如果都没有问题,则你现在
  git push
  这个命令可以把你的本地改动推送到远程。
  push之后,远程得到你和他人的所有更新。push之前,仅本地得到你和他人的所有更新。
 
5、使用分支功能。
  git的分支功能很强大,应该多使用。
  上面几种情况都没有使用分支。使用分支会更好。
  首先,我本地新建并切换分支branch_1,自己起有意义名字,并修改文件。
  git checkout -b branch_1
   
  vi test/TestCase.php
  git add tests/TestCase.php
  git commit -m "change test"
 
  现在,别人已经更新了远程主分支代码(没更新就极其方便了,也不必说了,快速更新)
  我想把分支合并到主分支。
  我应该,先回到主分支,并更新。
  git  checkout master
  git pull
 
  然后,在本地,把我的修改分支合并上去。
  git merge branch_1
  自动进入vi界面,让你写注释。
 
  然后会合并好。
  类似提示:
  tests/TestCase.php | 3 ++-
  上面,两个加号表示文件增加了两行,一个减号表示文件减少了一行。
 
  此时,注意,凡是进入vi界面后,
  最好自己再检查一下程序,检查那些被提示修改过的文件,(这是一个好习惯,但我从来不遵守)
  如果认为正确,最后,
  git push,推送到远程。
 
  push之后,远程得到你和他人的所有更新。push之前,仅本地得到你和他人的所有更新。

==========
总结,大部分情况下,都推荐使用第5种,使用分支的方法,来管理文件修改冲突。

   
 
0
0
分享到:
评论

相关推荐

    实际开发中 git 冲突解决与合并

    Git冲突解决与合并 在实际开发中,使用Git经常会碰到冲突的情况,例如在使用git pull代码时,碰到有冲突的情况。这种情况下,系统会提示错误信息,例如error: Your local changes to 'c/environ.c' would be ...

    git pull时冲突的几种解决方式(小结)

    本文将详细介绍在遇到`git pull`冲突时的几种解决策略。 1. **忽略本地修改,强制拉取远程到本地** 当你确定本地的某些修改可以舍弃,且远程的更新更重要时,可以使用以下命令强制拉取: ``` git fetch --all ...

    Git Bash上传文件的命令

    为了将本地文件上传到远程Git仓库,我们需要了解并掌握以下几个核心Git命令: 1. **`git status`** - **功能**:查看当前工作目录中的文件状态,包括哪些文件已经被添加到暂存区,哪些文件已经被提交等。 - **...

    git的使用葵花宝典,模块化开发,git flow,代码冲突的解决,GitLabWeb

    1. **合并(Merge)**:当从一个分支合并到另一个分支时,如果同一文件的同一部分发生了更改,则会发生冲突。此时,Git会提示冲突,并要求开发者手动解决。 2. **拉取(Pull)**:类似于合并,但在合并前会先从远程...

    Git分支合并和命令.docx

    **分支使用策略**通常是团队合作的基础之一,常见的分支模型包括以下几种: - **主分支**(Master/Main):代表项目的主要版本线,只用于发布最终稳定版本。 - **开发分支**(Develop):日常开发活动发生在此分支,...

    gitflow相关文件.zip

    Git Flow帮助团队成员协同工作,避免合并冲突,并确保代码质量。 2. **libiconv2.dll**: 这是一个动态链接库,包含字符编码转换功能。在Git或Git Flow中,可能需要处理多种编码格式的文件,libiconv2.dll是用于...

    git服务端和小乌龟客户端工具

    * 合作开发:Git 服务端可以支持多人合作开发,提供了代码合并和冲突解决功能。 二、小乌龟客户端工具 小乌龟(TortoiseGit)是一个基于 Git 的客户端工具,提供了图形化的界面,方便用户操作 Git repository。小...

    git分支原理命令图文解析

    - **冲突合并**:当两个分支在同一文件的同一位置做出了不同的改动时,Git无法自动合并,需要手动解决冲突。 例如,在上面的部分内容中提到的冲突情况,Git会在合并过程中检测到冲突,并将冲突标记添加到相应的文件...

    windows下git安装包

    当合并时遇到冲突,Git会标记出冲突部分,手动编辑冲突文件解决冲突后,用`git add <冲突文件>`将其加入暂存区,最后`git commit -m "解决冲突"`完成合并。 以上就是Windows环境下安装Git的基本步骤及常用操作。...

    git使用培训PPT

    - **文件状态**:Git中的文件状态包括未跟踪、已跟踪、已修改、已暂存和已提交等几种。理解这些状态对于有效管理项目非常重要。 通过上述内容的学习,我们可以深入了解Git的基本原理、操作流程以及如何高效地利用...

    git官网口袋最新版本zip

    6. **解决冲突**:在合并过程中可能出现冲突,需要手动编辑冲突文件并选择保留哪些更改,然后使用`git add`和`git commit`完成合并。 总的来说,"git官网口袋最新版本zip"提供了一种方便的方式,让32位Windows用户...

    Git 常用命令清单

    Git是一种分布式版本控制工具,它允许多人在同一时间处理同一个文件的不同部分,而不会互相冲突。Git管理代码的方式主要依靠几个基本的命令,熟练使用这些命令对于高效地进行版本控制至关重要。以下是一些Git常用...

    安装GIT插件Git及使用

    2. **查看文件状态**:文件可能处于几种状态,如`untracked`(未被跟踪)、`staged`(已准备提交)或`modified`(已修改但未提交)。 3. **添加文件到索引**:使用`Team > Add to Index`将文件加入索引,以便进行...

    gitKraken常见问题解决方案

    在开始解决GitKraken常见问题之前,我们首先需要了解几个基本的概念,这些概念对于理解后续的问题及其解决方案至关重要。 1. **Workspace(工作区)**: 工作区包含了你在开发过程中新增或修改的所有文件。当你对...

    git详解-PDF

    它分为几种类型: - **本地版本控制系统**:如RCS,将文件的每一次变更存储为一个新的文件副本。这种做法容易导致大量文件积累,占用空间且难以维护。 - **集中化的版本控制系统**(CVCS):如CVS、Subversion等,...

    自己编写Git:使用.NET Core的Git的简单实现

    Git是一种分布式版本控制系统,它由Linus Torvalds在2005年为Linux内核开发而创建。Git的核心理念是高效、可靠且适合大规模协作。它的数据完整性、分支管理和合并能力使其成为开发者首选的工具。现在,我们将探索...

    gitflow安装手册

    在GitFlow模型中,主要有以下几种类型的分支: - **主干分支(master)**:代表项目当前稳定版本的状态,通常只包含经过严格测试并通过审查的代码。 - **开发分支(develop)**:作为日常开发工作的基础分支,包含...

Global site tag (gtag.js) - Google Analytics