Merge #8178: Add git and github tips and tricks to developer notes

3144449 Add git and github tips and tricks to developer notes (Pieter Wuille)
This commit is contained in:
Wladimir J. van der Laan 2016-06-09 16:42:16 +02:00 committed by Alexander Block
parent b9a00f6294
commit 209a4d63bd

View File

@ -383,3 +383,51 @@ GUI
- *Rationale*: Model classes pass through events and data from the core, they - *Rationale*: Model classes pass through events and data from the core, they
should not interact with the user. That's where View classes come in. The converse also should not interact with the user. That's where View classes come in. The converse also
holds: try to not directly access core data structures from Views. holds: try to not directly access core data structures from Views.
Git and github tips
---------------------
- For resolving merge/rebase conflicts, it can be useful to enable diff3 style using
`git config merge.conflictstyle diff3`. Instead of
<<<
yours
===
theirs
>>>
you will see
<<<
yours
|||
original
===
theirs
>>>
This may make it much clearer what caused the conflict. In this style, you can often just look
at what changed between *original* and *theirs*, and mechanically apply that to *yours* (or the other way around).
- When reviewing patches which change indentation in C++ files, use `git diff -w` and `git show -w`. This makes
the diff algorithm ignore whitespace changes. This feature is also available on github.com, by adding `?w=1`
at the end of any URL which shows a diff.
- When reviewing patches that change symbol names in many places, use `git diff --word-diff`. This will instead
of showing the patch as deleted/added *lines*, show deleted/added *words*.
- When reviewing patches that move code around, try using
`git diff --patience commit~:old/file.cpp commit:new/file/name.cpp`, and ignoring everything except the
moved body of code which should show up as neither `+` or `-` lines. In case it was not a pure move, this may
even work when combined with the `-w` or `--word-diff` options described above.
- When looking at other's pull requests, it may make sense to add the following section to your `.git/config`
file:
[remote "upstream-pull"]
fetch = +refs/pull/*:refs/remotes/upstream-pull/*
url = git@github.com:bitcoin/bitcoin.git
This will add an `upstream-pull` remote to your git repository, which can be fetched using `git fetch --all`
or `git fetch upstream-pull`. Afterwards, you can use `upstream-pull/NUMBER/head` in arguments to `git show`,
`git checkout` and anywhere a commit id would be acceptable to see the changes from pull request NUMBER.