oliverdavies.uk/content/node.d1a650c6-fd8f-4509-801b-10c14f10344e.yml

85 lines
5.1 KiB
YAML
Raw Normal View History

2025-07-10 00:14:12 +01:00
uuid:
- value: d1a650c6-fd8f-4509-801b-10c14f10344e
langcode:
- value: en
type:
- target_id: daily_email
target_type: node_type
target_uuid: 8bde1f2f-eef9-4f2d-ae9c-96921f8193d7
revision_timestamp:
- value: '2025-05-11T09:00:55+00:00'
revision_uid:
- target_type: user
target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849
revision_log: { }
status:
- value: true
uid:
- target_type: user
target_uuid: b8966985-d4b2-42a7-a319-2e94ccfbb849
title:
- value: 'Useful Git configuration'
created:
- value: '2022-09-19T00:00:00+00:00'
changed:
- value: '2025-05-11T09:00:55+00:00'
promote:
- value: false
sticky:
- value: false
default_langcode:
- value: true
revision_translation_affected:
- value: true
path:
- alias: /daily/2022/09/19/useful-git-configuration
langcode: en
body:
- value: |
<p>Here are some snippets from my Git configuration file.</p>
<p>These days, I use a much simpler workflow and configuration since doing more trunk-based development, but in general, I rebase instead of merging by default, and prefer to use fast-forward merges that doesn't create a merge commit.</p>
<p><code>branch.autosetuprebase = always</code> and <code>pull.rebase = true</code> configure Git to always rebase instead of pull. It does this for all branches, though I might override this for <code>main</code> branches.</p>
<p><code>pull.ff = only</code> and <code>merge.ff = only</code> prevents creating a merge commit and will prevent the merge if it would create one. If I needed to override this, I could by using the <code>--no-ff</code> option on the command line.</p>
<p>I use <code>checkout.defaultRemote = origin</code> to ensure that the <code>origin</code> remote is used if I have multiple remotes configured, and <code>push.default = upstream</code> to set the default remote to push to.</p>
<p><code>merge.autoStash</code> allows for running merges on a dirty worktree by automatically creating and re-applying a stash of the changes, and <code>fetch.prune</code> will automatically prune branches on fetch - keeping things tidy.</p>
<p>I also have and use a number of aliases.</p>
<p>Some like <code>pl = pull</code> and <code>ps = push</code> are shorter versions of existing commands, and some like <code>aa = add --all</code>, <code>fixup = commit --fixup</code> and some additional arguments to commands.</p>
<p>I also have some like <code>current-branch = rev-parse --abbrev-ref HEAD</code> and <code>worktrees = worktree list</code> which add simple additional commands, and some like <code>repush = !git pull --rebase &amp;&amp; git push</code> which use execute shell commands to execute more complex commands or combine multiple commands.</p>
<p>This is a snapshot of my Git configuration. The <a href="https://github.com/opdavies/dotfiles/blob/7e935b12c09358adad480a566988b9cbfaf5999e/roles/git/files/.gitconfig">full version is on GitHub</a>.</p>
format: full_html
processed: |
<p>Here are some snippets from my Git configuration file.</p>
<p>These days, I use a much simpler workflow and configuration since doing more trunk-based development, but in general, I rebase instead of merging by default, and prefer to use fast-forward merges that doesn't create a merge commit.</p>
<p><code>branch.autosetuprebase = always</code> and <code>pull.rebase = true</code> configure Git to always rebase instead of pull. It does this for all branches, though I might override this for <code>main</code> branches.</p>
<p><code>pull.ff = only</code> and <code>merge.ff = only</code> prevents creating a merge commit and will prevent the merge if it would create one. If I needed to override this, I could by using the <code>--no-ff</code> option on the command line.</p>
<p>I use <code>checkout.defaultRemote = origin</code> to ensure that the <code>origin</code> remote is used if I have multiple remotes configured, and <code>push.default = upstream</code> to set the default remote to push to.</p>
<p><code>merge.autoStash</code> allows for running merges on a dirty worktree by automatically creating and re-applying a stash of the changes, and <code>fetch.prune</code> will automatically prune branches on fetch - keeping things tidy.</p>
<p>I also have and use a number of aliases.</p>
<p>Some like <code>pl = pull</code> and <code>ps = push</code> are shorter versions of existing commands, and some like <code>aa = add --all</code>, <code>fixup = commit --fixup</code> and some additional arguments to commands.</p>
<p>I also have some like <code>current-branch = rev-parse --abbrev-ref HEAD</code> and <code>worktrees = worktree list</code> which add simple additional commands, and some like <code>repush = !git pull --rebase &amp;&amp; git push</code> which use execute shell commands to execute more complex commands or combine multiple commands.</p>
<p>This is a snapshot of my Git configuration. The <a href="https://github.com/opdavies/dotfiles/blob/7e935b12c09358adad480a566988b9cbfaf5999e/roles/git/files/.gitconfig">full version is on GitHub</a>.</p>
summary: null
field_daily_email_cta: { }