diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2016-06-09 16:42:16 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2016-06-09 16:42:27 +0200 |
commit | f7b1bfc9a347e371c4fdcf3bdc5a7786280e9d0d (patch) | |
tree | 1ac913a9d67f559a436b0eb1c8b864096b1f93c9 | |
parent | 7ce9ac5c83b1844a518ef2e12e87aae3cacdfe58 (diff) | |
parent | 31444491f2e07c5ffd4d50827b54830ee3958a4d (diff) |
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)
-rw-r--r-- | doc/developer-notes.md | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/doc/developer-notes.md b/doc/developer-notes.md index e40b73ffa7..abed15c370 100644 --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -381,3 +381,51 @@ GUI - *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 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. |