PIJ65A3SWCD43EFTNISSPMS5OVY6OLESLMBUK2TFUHT2G4NUDMLQC
OPKP65D4PE6YOOMWPFXAQS2AB2ZRASNK6PHDTYB5PXVA6J2AQGIQC
7MFQRKKB7Y54BZCCXAHA64BK7DRH54F7XCQTD2KAI3A5XXVS2YTQC
6IUUMFCCMAVMHZH5DYEIACUZSFN4HIIZLIOTDLPYCYLWJVD2ZSFAC
YFZRGWH3QDMTJLPZEYGWBVUTI42GEBGKMUP7OCQOQIWTTETJXNLAC
NYFLNSVVETUQ6ODIEMFKWUXPLWM2XQNSKLO5J7ZHCHP6L5JQLSEQC
5LKTNB6ODFPX45VJBT5H34WZFJBVWWYSCS2HRMKKJPPO3M2M75NAC
ARAFRHKULUG66WDRPKJB4GL5WCMP4LD2TRTYO3RA2T3XZDRLXEUQC
UXLO2KVDT7D5HJSSRWQHWAY2M6K57HWBKL45TDIXYJODEK57AB5AC
UYGSVBN7QR3YK6LTBMYIHDDVZPG25MBKPN2JLFDVCY3NEEPCQBAQC
ISYGO74Y272CLCGQBX4SLPAREK5223WH74O5RMWD5I7GQSA7T2BAC
7RVMAQLPBTL46TDHWJM4RSSB6PUZVLNRQW4CZ6FH6OMAVFCHCUMAC
TUQ2GTHHD6JCSWUDQE47N6LT74ERUP5G2L46BG57IPZPM7HHDERQC
WYULWETJ4VKT2UOTKJWJTBO7W2TDXUWMLCN7WT5543H7VQ57FGRQC
W7EIQGVREWJ4PVVOITTPG2WXRO4IJFX3UDX2FAEM3DTPKFEYWZLAC
UH3YXOLFMHJD6GJOW6P5BSHAM5XVV623ZBEYNKSF5YFFSGC7UWPAC
NF72HNAAXQFBQAEQ273EC3EMKOGJVEKJJIF7ZOPT6XD6MKRL7HJQC
<li class="fragment fade-in-then-semi-out">No rebases, and merges are hardly needed; applying a patch is like <code>git cherry-pick</code>.</li>
<li class="fragment fade-in-then-semi-out">Rebase and merge don't exist, applying a patch (and its dependencies) is like <code>git cherry-pick</code>.</li>
In Git each snapshot has its own identity.
[on **order**]
Changes in Pijul can be applied in any order. This is great for cherry-picking: Pijul knows the changes that need to come along, and maintains the identity of the change after the cherry-pick. No need to manually find the commits to revert or pick.
[on **rebase** and **merges**]
One particular goal of Pijul is to model conflicts as normal states of collaboration, so that conflicts are resolved by normal changes, valid even for the same conflicts in any other context.
It is important to note that conflicts in Pijul always happen between changes, for example we might say that “change A conflicts with change B”. A conflict resolution is always a change.
---
## If commits were bank transactions
<table>
<tr>
<th/>
<th>snapshot</th>
<th>patch</th>
</tr>
<tr class="fragment">
<th align="right">initial balance</th>
<td align="right"><code>100</code></td>
<td align="right"><code>+100</code></td>
</tr>
<tr class="fragment">
<th align="right">salary</th>
<td align="right"><code>400</code></td>
<td align="right"><code>+300</code></td>
</tr>
<tr class="fragment">
<th align="right">heating</th>
<td align="right"><code>0</code></td>
<td align="right"><code>-400</code></td>
</tr>
</table>
</li>
<li class="fragment fade-in-then-semi-out">Try out Pijul @ katacoda.com
<br /><small><a
href="https://www.katacoda.com/ysndr/scenarios/pijul">https://www.katacoda.com/ysndr/scenarios/pijul</a></small>
## Program & target times
| Section | Target time | Duration |
|---|---:|---:|
| Welcome | 0:00 | 3:00 |
| Preface | 3:00 | 5:00 |
| Git | 8:00 | 5:00 |
| The browser wars | 13:00 | 4:00 |
| New kids on the block | 17:00 | 1:00 |
| Fossil | 18:00 | 9:00 |
| Pijul | 27:00 | 13:00 |
| Predictions | 40:00 | 15:00 |
| Wrap-up | 45:00 | 0:00 |