现在越来越多的使用git来做代码管理工具,它的确比svn更加强大。
前几天在使用git合并代码的时候,发现一个小问题
比如branch1修改文件a.txt中的一处内容,把a=3改为了a=4
同时branch2也修改了文件a.txt,并且是把a=3改为a=5
以上两个分支都进行了提交,并push到了远程仓库
这时,我们为了上线,需要把branch2这个分支合并到branch1中,于是我们在branch1分支上执行了合并命令:git merge origin/branch2
这时候你会发现a.txt文件有冲突,然后我们以branch1的内容为准,即相当于覆盖掉branch2的修改,当你这么做之后,你就会发现a.txt文件没有在add文件列表中。
这是因为a.txt在合并之后,其内容跟branch1原本内容一致,并没有任何修改,git默认的就没有任何可以提交的文件。
由于我是在idea工具下操作的,这时可以清楚的看到当前的分支名为merging branch1,意思很明确,说明分支还处于merge的状态中,没有真正提交上去(注意:虽然没有提交到远程,但是上线却不受影响,因为a.txt的内容是对的,比较恶心)。
这时你用git status命令查看的话,可以清楚的看到有这么一句话:
All conflicts fixed but you are still merging.
(use "git commit" to conclude merge)
git比较棒的地方,就是你在使用命令行时都可以自动的提示你该执行什么了,这里也是一样,虽然没有任何可提交的文件,但是这里我们需要git commit一下(利用idea工具的话,我暂时未发现该如何操作)。
当这样操作之后,你就会发现有内容可以push到远程仓库了,这些内容分别为branch2对a.txt的修改,以及合并时的修改。
当然,若一开始就以branch2的修改为准,那就不会遇到以上看不到需提交文件的情况,因为a.txt文件跟branch1有了区别。
同时最近一名实习生问我,为啥有时候合并之后要进行两次提交才行,这种情况是idea工具带来的,若是使用命令操作就没有这个疑问。
idea工具当你把a.txt文件合并之后,在没提交到远程仓库之前,你若是又把a.txt文件修改了,这时候你利用idea工具的commit操作,就会先把合并的操作进行提交,刚刚做的修改不会提交,故而分成了两次提交。
相关推荐
**Sublime Merge:Git可视化工具深度解析** Sublime Merge是一款高效且直观的Git版本控制工具,由Sublime Text的开发者打造。它以其简洁的界面、强大的功能和与Sublime Text编辑器的无缝集成,深受开发者喜爱。这款...
本文将详细讲解如何在iOS项目中配置Git,特别是针对大文件的处理以及忽略特定文件的设置。 首先,我们来看`.gitattributes`文件。这个文件是用来指定Git如何处理不同类型的文件。在iOS项目中,我们可能有一些较大的...
本文将详细介绍Git的开发操作流程,常用命令以及解决常见问题的方法。 **Git开发操作流程** 1. **新建分支** - 新建分支是开发新功能的基础,通常以任务号-任务内容命名。例如,创建名为"user/task1000-开发运动...
通过创建和合并分支(`git branch`和`git merge`),你可以并行开发不同的功能或修复错误,而不会干扰主分支。`git checkout`命令用于在不同分支之间切换。 4. **远程仓库**:Git不仅仅用于本地工作,还可以与远程...
在使用 Git 时,还需要了解 Git 的一些 Advance usage,例如 Git branch、Git merge、Git remote 等。 本文档主要讲解了 Git 的基本概念和常用命令,旨在帮助读者快速了解 Git 的使用方法和基本原理。
* git merge origin/dev:将分支 dev 与当前分支进行合并 * git checkout dev:切换到本地 dev 分支 五、Git 文件管理 * git add .:添加所有文件到 Git 索引 * git rm 文件名:从 Git 中删除指定文件 * git clone...
- 使用`.gitignore`文件来忽略不需要纳入Git管理的文件,通常在仓库的根目录下创建该文件。 - 分支合并冲突的解决:当合并分支时如果遇到冲突,需要手动打开冲突文件,解决冲突后提交。 - 使用GitBash可以在Windows...
4. **命令行解决**:对于熟悉命令行操作的开发者,可以通过`git mergetool`等命令来打开默认的合并解决工具。 #### 五、GitLab Web界面使用 GitLab是一款流行的Web-based Git仓库管理系统,提供了丰富的功能,包括...
合并分支可以使用 “Git Merge” 命令,比较版本差异可以使用 “Git Log” 命令。TortoiseGit 还提供了图形化的合并和比较功能,可以右键点击文件夹,选择 “Git Merge” 或 “Git Log”。 其他操作 TortoiseGit ...
- `git merge`:合并指定分支到当前分支。 对于Windows用户来说,理解Git的这些基本操作和概念是非常重要的,这将有助于更高效地进行版本控制和协作开发。在实际使用中,还可以通过配置用户信息、忽略文件、解决...
- `git add .`: 将当前目录下的所有文件(不包括忽略的文件)添加到暂存区,准备提交。 - `git status`: 查看工作区和暂存区的状态,确认哪些文件被修改、新增或删除。 4. **提交更改** - `git commit -m "提交...
- **版本控制系统**:与Git、SVN等版本控制系统结合,用于查看代码版本间的差异。 - **文档修订**:在多人协作的文档编辑过程中,找出并合并各方的改动。 - **数据备份验证**:比较备份文件和原文件,确保备份的完整...
- 如果合并后出现问题,可以使用`git merge --abort`命令撤销合并。 - 示例命令:`git merge --abort` **10. 快速合并** - 当合并的目标分支与当前分支没有冲突时,可以直接执行快速合并。 - 示例命令:`git merge...
使用`git log`查看提交历史,`git diff`比较不同版本的差异,以及`git checkout`切换或恢复到特定版本,这使得开发者能够轻松追踪和修复问题。 7. **解决冲突**:在多人协作时,可能会出现文件冲突。Git会标识出...
- `git merge <branch>`:将指定分支合并到当前分支。 - `git branch -d <name>`:删除指定的分支。 - **远程仓库命令**: - `git clone <url>`:克隆一个远程仓库到本地。 - `git pull`:从远程仓库拉取最新的...
在早期,Linux内核的版本控制使用的是BitKeeper,但由于版权问题,Linus Torvalds决定创建一个自己的版本控制系统,这就是Git。Git的设计理念支持分布式工作流程,确保了每个开发者都有一个完整的项目版本历史,便于...
- `git checkout -b <name>` 创建并切换分支,`git merge <name>` 合并分支。 - `-d` 参数删除分支,如 `git branch -d <name>`,`--no--ff` 参数强制禁用快速合并。 - `git stash` 保存当前工作现场,`git stash...