85 lines
5.1 KiB
YAML
85 lines
5.1 KiB
YAML
|
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 && 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 && 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: { }
|