While you're making a contribution to
the create your own adventure story, you
may find that your pull request can't
be merged because of merge conflicts.
Here's how that could happen and
how you could fix it.
Suppose you fork the original
repository on GitHub, clone your fork,
then make a change in a new branch,
and push that change to your fork.
In the meantime, someone else changes
the original repository on GitHub.
If there are merge conflicts
between their change and
your change, then your pull request will
not be able to be automatically merged.
Since there's no way to resolve
merge conflicts on the GitHub site,
you'll need to resolve the conflicts
within the clone on your computer.
To do that, you'll need to get the
conflicting changes from the original
repository into your local repository,
which you can do by adding a remote.
Recall that you already have
a remote set up called origin that
points to your fork.
But you'll still need to add a remote
that points to the original repository.
And many people name
this remote upstream.
Adding and fetching the upstream
remote will add branches like
upstream/master into
your local repository, so
that you can merge the upstream
branch with your local branch.
For example, I created a pull request
to add an option of stop, drop, and
roll to a page of the story
where there was a fire.
In the meantime, though, another
change was made to the same file to
add an option to turn on
the chocolate sprinkler.
That change conflicts with mine, so
I need to resolve the conflicts
before my pull request can be merged.
So in this diagram, this is the commit
adding the chocolate sprinkler, and
also this one.
And my change was to add a stop,
drop, and roll option.
These commits were the same
in all the versions.
Since I created my change in
a separate branch, I want to
make my master branch the same as
the master in the original repository.
So, I'll run git pull upstream/master
to update my master branch to
the latest commit from
the original repository.
Then I'll merge the master branch
into my changed branch, and
I'll push both the changed branch and
the master branch to my fork.
I didn't need to push the master branch,
but I thought it might be nice.
Now since this whole process only
contains commands that you've
already learned, I want you to try
doing this on your own before I
demonstrate how to do
it on the command line.
As a reminder,
the steps you'll need to carry out are,
first, add the original repository
as a remote in your clone.
Next pull the master branch from
the original repository into your
clone's master.
Merge the master branch into
your change branch locally.
And resolve any merge conflicts.
And finally,
push your change branch to your fork,
which will automatically
update your pull request.
If you run into trouble,
I'll demonstrate how to carry out
this process in the solution.
If you didn't run into this problem
because your pull request was
merged without conflicts,
I encourage you to get some practice by
making a new change and
then not making a pull request for it.
Then you can wait for
someone else to make a change and
then get some practice
bringing your fork up to date.
Even if there are no merge conflicts,
you can still get practice merging.
Once you've finished this process,
check this box
بينما تقومون بتقديم إسهاماتكم من أجل
إنشاء قصة مغامراتكم، فقد تجدوا
أن طلب السحب يتعذر
.دمجه وذلك بسبب تعارضات الدمج
فيما يلي كيفية القيام بذلك
.وكيفية إصلاحه
افترضوا أنكم تقومون بإنشاء المستودع
الأصلي على GitHub، قوموا بنسخ العمل الذي قمتم به
ثم أجروا تغييرًا في فرع آخر
.ثم ادفعوا بهذا التغيير إلى الإنشاء الذي قمتم به
في غضون هذا الوقت، سيقوم شخص آخر بتغيير
.المستودع الافتراضي على GitHub
وإذا كانت هناك تعارضات في الدمج
بين التغيير الذي قام به هذا الشخص والتغيير الذي
قمتم به، فلن يكون طلب السحب الذي قمتم به
.قادرًا على أن يتم دمجه تلقائيًا
وبيد أنه لن تكون هناك طريقة لحل
،تعارضات الدمج على موقع GitHub
فستحتاجون إلى حل التعارضات
.الموجودة بداخل النسخة الموجودة على الكمبيوتر الخاص بكم
وللقيام بذلك، فستحتاج إلى الحصول على التغييرات
المتعارضة من المستودع
الأصلي إلى المستودع المحلي الخاص بكم
.والذي يمكنكم القيام به من خلال إضافة الأمر عن بُعد
هل تذكرون هذا الأمر عن بُعد الذي هو لديكم بالفعل
وإعداد الأمر عن بُعد يطلق عليه الأصل الذي يقوم
.بالإشارة إلى النسخ الذي قمتم به
ولكنكم لا تزالوا تحتاجون إلى إضافة الأمر عن بُعد
.الذي يشير إلى المستودع الأصلي
وكثير من الناس يطلقون
.على الأمر عن بُعد اسم التدفق لأعلى
إن إضافة التدفق عن بُعد والبحث عنه
سيؤدي إلى إضافة فروع مثل
التدفق لأعلى عن بُعد/الأصل إلى
المستودع المحلي الخاص بكم حتى يتسنى
لكم دمج فرع التدفق لأعلى مع
.الفرع المحلي الخاص بكم
على سبيل المثال، لقد قمت بإنشاء طلب للسحب
من أجل إضافة خيار الإيقاف والإسقاط واللف
إلى صفحة في القصة
.حيث كان هناك تغيير
وفي تلك الأثناء وعلى الرغم من ذلك، تم إجراء
تغيير على الملف نفسه
من أجل إضافة خيار بتشغيل
.أداة نثر الشوكولاتة
وهذا التغيير يتعارض مع التغيير الذي قمت به، لذا
فأنا بحاجة إلى حل التعارضات
.قبل أن يتم دمج طلب السحب
لذا في هذا الرسم البياني، سيكون هذا هو المنفذ
بإضافة أداة نثر الشوكولاتة
.وأيضًا هذه الأداة
وكان التغيير الذي قمت به هو إضافة خيار الإيقاف
.والإسقاط واللف
وهذه المنفذات هي نفسها الموجودة
.في جميع الإصدارات
ولأني قمت بإنشاء التغيير الخاص بي في
فرع منفصل، فانا أرغب في أن يكون
الفرع الأصل الخاص بي هو نفسه
.الأصل الموجود في المستودع الأصلي
لذا، سأقوم بتشغيل التدفق لأعلى/أصل السحب لـ git من أجل
تحديث الفرع الأصلي الخاص بي
لأحدث منفذ من المستودع
.الأصلي
وبعد ذلك سأقوم بدمج الفرع الأصلي في
الفرع الخاص بي الذي تم تغييره، كما سأقوم
بدفع كلا الفرعين الفرع الذي تم تغييره
.والفرع الأصل إلى النسخة الخاصة بي
فأنا لست بحاجة إلى دفع الفرع الأصل
.ولكني اعتقدت أن من الأفضل فعل ذلك
والآن وبسبب أن هذه العملية بالكامل فقط
تحتوي على الأوامر التي قمتم بتعلمها
بالفعل، فأنا أطلب منكم محاولة إجراء
هذا على ما لديكم قبل أن أقوم بتوضيح
كيفية القيام بذلك
.في سطر الأوامر
،وكتذكرة على ذلك
،فإن الخطوات التي ستحتاج إلى القيام بها هي
أولاً إضافة المستودع الأصلي كأمر عن بُعد
.إلى النسخة الخاصة بكم
وبعد ذلك، سحب الفرع الأصلي من المستودع
الأصلي إلى أصل
.النسخة الخاصة بكم
قوموا بدمج الفرع الأصلي في
.الفرع الخاص بكم والذي تم تغييره محليًا
.وبعد ذلك قوموا بحل أي تعارضات فيما يختص بالدمج
،وفي النهاية
قم بدفع الفرع الخاص بكم الذي تم تغييره إلى النسخة الخاصة بكم
وهو الأمر الذي سيقوم تلقائيًا
.بتحديث طلب السحب الخاص بكم
،وإذا حدثت مشكلة لكم أثناء القيام بذلك
فسأقوم بعرض كيفية تنفيذ
.هذه العملية في الحل
،وإذا لم تحدث هذه المشكلة معكم
وذلك يرجع إلى أن طلب السحب الخاص بكم قد تم دمجه
،دون حدوث أي تعارضات
فأنا أشجعكم على ممارسة ذلك من خلال
إجراء تغيير جديد
.وعدم القيام بطلب للسحب بعد ذلك
وبعد ذلك، يمكنكم الانتظار
حتى قيام شخص آخر بتغيير ثم
الممارسة من خلال
.تحديث النسخة الخاصة بكم
،حتى إذا لم يكن هناك أي تعارضات في الدمج
.فلا يزال بإمكانكم ممارسة الدمج
،وبمجرد إكمالكم لهذه العملية
.قوموا بوضع علامة في هذا المربع
Create Your Own Adventure Story에
기여하는 와중에
머지 충돌로 인해 pull ruquest가
안되고 있습니다
이런 일이 일어나는 이유와
해결법을 알려 드리겠습니다
GitHub의 저장소를 포크하고
포크를 복제해서
새로운 브랜치에 변경을 만들고
포크에 푸시한다고 생각해봅시다
그 동안 다른 사람이 GitHub의
원본 저장소를 변경합니다
여러분의 변경점과
그 변경점 사이에
머지 충돌이 있으면
머지가 자동으로 되지 않습니다
GitHub 사이트에서는
머지 충돌 해결 방법이 없으므로
컴퓨터에 복제해서
머지 충돌을 해결해야 합니다
원격 저장소를 추가해서
원본 저장소에서
충돌하는 변경점을
로컬 저장소로 가져옵니다
포크를 가리키는 origin 이라는
원격 저장소가 이미 있다는 것을
기억해 주세요
하지만 원본 저장소를 가리키는
원격 저장소를 추가해야 합니다
많은 사람들이 이 경우에
upstream 이라고 이름짓습니다
원격을 추가하고 fetch 하면
upstream/master 브랜치가
로컬 저장소에 추가되므로
upstream 브랜치와
로컬 브랜치를
머지할 수 있습니다
예를 들어 스탑 드롭 롤 옵션을
추가한 pull request 를
불이 있는 곳에서
만들겠습니다
그리고 같은 파일에
초콜릿 스프링클러를
작동시키기 위한 옵션을
추가로 변경했습니다
이는 저의 변경들과
충돌하기 때문에
pull request 전에
충돌을 해결해야 합니다
이 다이어그램에서
초콜릿 스프링클러를 추가하는
커밋은 이 커밋과
이 커밋입니다
이 커밋은
제 변경점을 나타냅니다
이 커밋은 모든 버전에서
같은 내용입니다
별도의 브랜치에서
변경점을 만들었으므로
마스터 브랜치를 원본 저장소의
마스터 브랜치와 같게 만들려 합니다
git pull upstream/master
명령어를 실행해서
마스터 브랜치를 원본 저장소의
최신 커밋으로 업데이트 하겠습니다
그 다음 마스터 브랜치와
저의 변경점 브랜치를 머지해서
포크의 마스터 브랜치에
푸시하겠습니다
마스터 브랜치를 강요하는건 아니지만
괜찮은 것 같습니다
이 전체 과정의 명령어는
모두 이미 배운 것들이므로
방법을 설명하기 전에
명령 창에서
직접 해 보는것을 추천합니다
다시 말해, 해 봐야하는 곳은
먼저 원본 저장소를
복제본의 원격 저장소로
추가하는 부분입니다
그 다음 원본 저장소의
마스터 브랜치를
복제 마스터에 pull 합니다
로컬에서 변경점을
마스터 브랜치와 머지합니다
머지 충돌을 해결합니다
마지막으로
변경점을 fork 에 푸시해서
자동으로 pull request를
업데이트합니다
공부하는 어려운 부분이 있다면
이 과정의 솔루션에서
방법을 알려 드리겠습니다
충돌 없이 머지가 되서
pull request에
문제가 발생하지 않았다면
새로운 변경을 만들고
pull request를 하지 말고
연습하기를 추천합니다
그런 다음 다른 사람의
변경을 기다렸다가
포크를 최신 상태로 가져오는
연습을 해 보세요
머지 충돌이 없다고 해도
머지 연습은 할 수 있습니다
이 과정이 끝나면
상자에 체크하세요
Embora você esteja fazendo uma contribuição para
criar sua própria história de aventura,
talvez você ache que sua requisição pull não possa
ser mesclada devido a conflitos de mesclagem.
Veja como isso pode acontecer e
como corrigi-la.
Supondo que você bifurque o repositório
original no GitHub, clone a bifurcação,
faça uma alteração em um novo branch
e efetue push nessa alteração para sua bifurcação.
Enquanto isso, alguém altera
o repositório original no GitHub.
Se houver conflitos de mesclagem
entre essa alteração e
a sua, sua requisição pull
não poderá ser automaticamente mesclada.
Já que não há como resolver
conflitos de mesclagem no site do GitHub,
você precisará resolver os conflitos
no clone no seu computador.
Para isso, você precisará obter as
alterações conflitantes do repositório
original no seu repositório local,
o que pode ser feito adicionando um remoto.
Lembre-se de que você já tem
um remoto configurado chamado origin que
aponta para a bifurcação.
Mas ainda é preciso adicionar um remoto
que aponte para o repositório original.
E muitas pessoas dão o nome
de upstream para esse remoto.
Adicionar e buscar o remoto
upstream adicionará branches como
upstream/master ao
seu repositório local, assim
você pode mesclar o branch
upstream com o branch local.
Por exemplo, criei uma requisição pull
para adicionar uma opção de parar, descartar e
rolar a uma página da história
onde havia um incêndio.
Enquanto isso, outra
alteração foi feita no mesmo arquivo para
adicionar uma opção para ativar
o aspersor de chocolate.
Essa alteração entra em conflito com a minha,
então preciso resolver os conflitos
para que minha requisição pull possa ser mesclada.
Neste diagrama, este é o commit
que está adicionando o aspersor de chocolate, e
este também.
Minha alteração foi adicionar uma
opção parar, descartar e rolar.
Esses commits eram iguais
em todas as versões.
Desde que criei minha alteração em
um branch separado, quero
tornar meu branch master igual
ao master no repositório original.
Executarei git pull em upstream/master
para atualizar meu branch master para
o último commit do
repositório original.
Mesclarei o branch master
no meu branch alterado e
efetuarei push no branch alterado e
no branch master para minha bifurcação.
Não precisei efetuar push no branch master,
mas acho que seria legal.
Agora, uma vez que todo o processo
contém apenas comandos que você
já aprendeu, quero que você tente
fazer isso sozinho antes de eu
demonstrar como fazer
isso na linha de comando.
Só lembrando,
as etapas que você precisará cumprir são,
primeira, adicionar o repositório original
como um remoto no clone.
Depois efetuar pull no branch master do
repositório original no master
do seu clone.
Mesclar o branch master no
seu branch alterado localmente.
E resolver todos os conflitos de mesclagem.
Por fim,
efetuar push no branch alterado para sua bifurcação,
que atualizará
automaticamente sua requisição pull.
Se você enfrentar problemas,
demonstrarei como realizar
este processo na solução.
Se não se deparar com este problema
porque sua requisição pull foi
mesclada sem conflitos,
incentivo você a praticar um pouco
fazendo uma nova alteração
sem fazer uma requisição pull para ela.
Assim, você pode esperar que
alguém mais faça uma alteração e
praticar um pouco
atualizando sua bifurcação.
Mesmo que não haja conflitos de mesclagem,
você ainda pode praticar a mesclagem.
Ao terminar este processo,
marque esta caixa
虽然你在贡献代码时创建了自己的冒险故事
但是你可能会发现你的 pull 请求因为存在合并冲突而无法合并
下面我们将介绍出现这一情况的原因及解决方案
假设你分叉了 GitHub 上的原始版本库 克隆了你的分叉
然后对新分支做出更改 并将该更改推送到你的分叉上
与此同时 其他人更改了 GitHub 上的原始版本库
如果他们的更改与你的更改之间存在合并冲突
则系统无法自动合并你的 pull 请求
因为无法在 GitHub 网站上解决合并冲突
所以你需要在计算机本地的克隆中解决冲突
为此 你需要将原始版本库中的冲突更改放入你的本地版本库中
你可以通过添加远程版本库来完成这一步
还记得你已经创建了一个叫做 origin 的远程版本库
并指向你的分叉
但是你依然需要添加一个指向原始版本库的远程版本库
很多人将这类版本库命名为 upstream
添加和取回 upstream remote 会向你的本地版本库中
添加 upstream/master 等分支
使你能够将 upstream 分支与你的本地分支合并
例如 我创建了一个 pull 请求来向故事页面中有火的地方
添加 stop-drop-roll 选项
与此同时 同一文件出现了另一个更改
添加了一个选项:打开巧克力末喷洒器
这一更改与我的更改存在冲突
所以我需要解决该冲突 然后才能合并我的 pull 请求
在这个图表中 这是添加巧克力末喷洒器的 commit
还有这个
我的更改是添加 stop-drop-roll 选项
这些 commit 在所有版本中都是一样的
因为我在单独的分支中创建了我的更改
我需要使我的 master 分支与原始版本库中的 master 分支保持一样
所以我需要运行 git pull upstream/master 使我的 master 分支
更新为包含原始版本库中的最新 commit
然后将该 master 分支与我的更改分支合并
然后将更改分支和 master 分支推送到我的分叉上
我不需要推送 master 分支 但是觉得最好这么做
因为整个流程仅仅涉及到你已经学过的命令
所以在我在命令行中演示如何操作之前
请你私底下自己尝试执行这一流程
提醒下 你需要执行以下步骤
首先 将原始版本库作为 remote 添加到你的克隆中
然后将原始版本库中的 master 分支拉取到
克隆中的 master 分支上
将 master 分支合并到本地的更改分支中
解决任何合并冲突
最后 将你的更改分支推送到你的分叉中
这样会自动更新你的 pull 请求
如果自动合并时遇到问题
我会在解决方案中演示如何完成这一流程
如果你没有遇到该问题 因为你的 pull 请求不存在合并冲突
建议你通过做出新的更改
并且不对该更改提出 pull 请求 练习相关流程
然后你可以等待其他人做出更改
练习使你的分叉保持最新状态
即使没有出现合并冲突 你依然可以练习合并流程
完成这一流程后 请选中此方框