freeCodeCamp/guide/chinese/miscellaneous/understand-how-to-use-git-m.../index.md

70 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: Understand How to Use Git Merge
localeTitle: 了解如何使用Git Merge
---
我们假设您正在开发一个类似于Reddit的应用程序但专门用于代码片段。在这样的应用程序中您可能有一个包含所有已发布功能的`master`分支,一个`dev`分支,它可能包含已编码但尚未实现的功能。团队中的每个开发人员都将在`dev`分支上创建自己的分支以获取各个功能。存储库结构看起来像这样:
```
--- Commit 3 --------- dev branch
/
--- Commit 1 ---- Commit 2 ---------------------------- master branch
```
如果您决定将第3次提交 `Commit 3` )从`dev`分支合并到`master`分支中,那么它就像运行`git merge`命令一样简单,因为`dev`分支与`master`分支是_最新_的所有`master`分支中的提交存在于`dev`分支中。您可以通过运行以下命令来合并分支:
```
git checkout dev
git merge master
```
结果将是这样的:
```
--------- dev branch
/
--- Commit 1 ---- Commit 2 ---- Commit 3 -------------- master branch
```
现在您决定使用身份验证功能。要处理身份验证功能,请根据`dev`分支创建另一个分支,并决定将其称为`auth` 。这就是repo结构的样子
```
------ auth branch
/
--------- dev branch
/
--- Commit 1 ---- Commit 2 ---- Commit 3 -------------- master branch
```
如果你提交的任何更改`auth`分公司,合并他们`dev`的分支将是微不足道的,因为它是由最新与`dev`分支。现在,当您正在研究身份验证功能时,其中一位开发人员完成了语法突出显示功能的编码,并决定将其与`dev`分支合并。回购现在看起来像这样:
```
--- Commit 5 --- auth branch
/
--- Commit 4 ------ dev branch
/
--- Commit 1 ---- Commit 2 ---- Commit 3 ------------------------ master branch
```
你的分支在Git术语中现在是`dev`分支后面的一个提交。这意味着您不能简单地合并两个分支:您必须使用`dev`分支使您的`auth`分支更新。这可以通过`git merge`完成!
将`auth`分支与`dev`分支或`dev`分支与`master`分支合并是很简单的并且按照你的期望进行,但是相反地合并它有自己的特性,乍一看并不直观。我可以喋喋不休,或者我可以向您展示另一个很好的图表,如果您此时合并`dev`分支与`auth`分支会发生什么:
```
--- Commit 5 ----------- auth branch
/ /
--- Commit 4 -------------- dev branch
/
--- Commit 1 ---- Commit 2 ---- Commit 3 -------------------------------- master branch
```
看看我在那里做了什么?查看图表一秒钟,并在继续之前尝试了解这里发生的事情。您基本上是对`auth`分支进行了另一次提交,其中包含了`dev`分支中的提交。但那没关系,对吧?毕竟,在一天结束时,我想让我的`auth`分支与`dev`分支最新现在它_是_最新的是的。但是让我向您展示一个图表以明确说明其他图表所暗示的内容您的`auth`分支现在看起来像这样:
```
--- Commit 5 ------- Commit 4 ------- auth branch
/ /
------ Commit 4 --- --------------------- dev branch
```
现在看您_复制_了提交。如果你现在要合并到`dev`分支,它看起来像这样:
```
--- Commit 5 ------- Commit 4 -------------------------------------- auth branch
/ / \
------- Commit 4 ----------------------- Commit 5 ---- Commit 4 -------- dev branch
```
你合并了两次相同的提交!这当然对你的代码本身没有任何影响,但是如果你有一个好日子决定查看你的`git logs` 你会立即意识到你的git历史是多么脏一些提交一遍又一遍。如果您想恢复提交则很难确定要还原到哪个提交。
您最好使用[Git-Rebase](http://forum.freecodecamp.com/t/how-to-use-git-rebase/13226) 。