---
# System prepended metadata

title: 任務五：GitHub PR 衝突解決
tags: [Git]

---

# GitHub PR 衝突解決


## 關卡示範影片
{%youtube 0JaXEZK81xA %}




## 你可以掌握的技術
- GitHub PR 衝突時的解決方式



## 任務流程

- [x]  1-1：A 成員新增一個新的 Repo，增加 `index.html`，並在 `index.html` 加入以下內容，在 `main` commit 一個版本，**進行 git push 動作，B 成員也將進度 clone 下來**

::: spoiler HTML 內容
```
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
</html>
```
:::
- [x] 1-2：A 成員在 `main` 分支進度上，開一個 `feature/editTitleA` 的分支 ，在`index.html` 的 title 調整為 `修改 Title A`， **將`feature/editTitleA`分支進行 git push，並發 PR 合併到 `main`，並指派 B 成員 review**
```=javascript
git checkout -b feature/editTitleA
修改titleA
git add .
git commit -m "修改 Title A"
git push origin feature/editTitleA
到github發pr
```
- [x] 1-3：B 成員在 main 分支進度上，開一個 `feature/editTitleB` 的分支 ，在`index.html` 的 title 調整為 `修改 Title B`， 將`feature/editTitleB`分支進行 git push，並發 PR 合併到 main，並指派 A 成員 review
```=javascript
git checkout -b feature/editTitleB
修改 titleB
git add .
git commit -m "修改 Title B"
git push origin feature/editTitleB
發pr
```
- [x] 1-4：B 成員審核 A 成員的 PR 通過
```=javascript
看線圖 > 會有一個遠端的修改 title A 
git fetch origin feature/editTitleA
git checkout origin/feature/editTitleA 
確定內容是修改 title A
在github merge 修改 title A 的 pr 
```
# 以下有兩個版本
## 版本一：B 開發者自行處理(業界傾向此種流程)
- [ ] 1-5：A 成員檢視 B 的 PR 會發生衝突，於是退回 PR 或留言請 B 成員修好
```=javascript
在 pr 留言有衝突請 B 成員修改

```
- [ ]  1-6：B 成員進行 `git fetch origin main` 指令抓最新版本下來後，git checkout 到`feature/editTitleB`，並合併 `origin/main` 進度，合併發生衝突需解衝突。並將 title 改為 `修改 title AB`， **將`feature/editTitleB`分支進行 git push，並請 A 成員 review**
```=javascript
git fetch origin main
git checkout feature/editTitleB
git merge origin/main
發生衝突 > 解衝突 改成修改 title AB
git add .
git commit (解衝突就不用給commit註解)
進入 vim :wq
git push origin feature/editTitleB
在 github pr 留言「衝突解好了，請review」
```
- [ ] 1-7：A 成員審核成功後，用 GitHub Pages 觀看 `main` 分支的頁面是否有出現預期網頁畫面
```=javascript
git fetch origin feature/editTitleB
看線圖
git checkout origin/feature/editTitleB
確認 title 是「修改 title AB」
就可以到 pr 審核成功

```
## 版本二：幫忙 Review 的 A 開發者，fetch 下來解衝突(除非你主管跟同事是好人，才是此版本)
- [ ] 1-5：A 成員檢視 B 的 PR 會發生衝突
- [ ]  1-6：A 成員進行 `git fetch origin main`、`git fetch origin feature/editTitleB` 指令抓最新版本下來後，git checkout 到`feature/editTitleB`，並合併 `origin/main` 進度，合併發生衝突需解衝突。並將 title 改為 `修改 title AB`， **將`feature/editTitleB`分支進行 git push，並審核通過 PR**
- [ ] 1-7：A 成員審核成功後，用 GitHub Pages 觀看 `main` 分支的頁面是否有出現預期網頁畫面


## 通關檢核點

- [ ]  A、B 成員與 GitHub Repo 都有相同的 commit 數量
- [ ] 預期線圖有符合


## 預期線圖
![](https://hackmd.io/_uploads/Sk-JO9yGp.png)

