!git@programming.dev
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Resources
Rules
Git Logo by Jason Long is licensed under the Creative Commons Attribution 3.0 Unported License.
!git
@programming.devThis is a collection of posts that probe the way Git impacts our thinking and ways of working. These are exclusively discussions held within the community (and not links to blogs). Feel free to roam and join the discussion.
https://learngitbranching.js.org/
An interactive Git visualization tool to educate and challenge!
https://radicle.xyz/2024/09/10/radicle-1.0.html
Sovereign code infrastructure.
https://paperless.blog/git-bisect-run-techniques
git bisect run lets us find the breaking commit in O(log(N)) time for N commits, by doing a binary search through commits to determine the one which broke things. It is extremely useful, but the thing which often takes a long time is figuring out which command to use to reliably determine whether a commit is good or bad. This article explains some techniques to help with this task.
https://avestura.dev/blog/creating-a-git-commit-the-hard-way
Let's create a Git commit using Git's low-level (plumbing) commands
https://adamj.eu/tech/2024/09/02/git-avoid-reset-hard-use-keep/
When I started learning Git, I found many references covering two ways to undo commits with git reset:
https://git.github.io/rev_news/2024/08/31/edition-114/
Git records the local timezone when a commit is made [1]. Knowledge of the timezone in which a commit was made could be used as a bit of identifying information to de-anonymize the committer.
Setting one's timezone to UTC can help mitigate this issue [2][3] (though, ofc, one must still be wary of time-of-day commit patterns being used to deduce a timezone).
::: spoiler References
It is
<unix-timestamp> <time-zone-offset>
, where<unix-timestamp>
is the number of seconds since the UNIX epoch.<time-zone-offset>
is a positive or negative offset from UTC. For example CET (which is 1 hour ahead of UTC) is+0100
.
to set the timezone for a specific command, say e.g.
TZ=UTC git commit
each commit Git stores a author date and a commit date. So you have to omit the timezone for both dates.
I solved this for my self with the help of the following Git alias:
[alias] co = "!f() { \ export GIT_AUTHOR_DATE=\"$(date -u +%Y-%m-%dT%H:%M:%S%z)\"; \ export GIT_COMMITTER_DATE=\"$(date -u +%Y-%m-%dT%H:%M:%S%z)\"; \ git commit $@; \ git log -n 1 --pretty=\"Autor: %an <%ae> (%ai)\"; \ git log -n 1 --pretty=\"Committer: %cn <%ce> (%ci)\"; \ }; f"
:::
Cross-posts:
https://git-random.olets.dev/
An aid for learning and experimenting with Git.
https://wouterj.nl/2024/08/git-notes
Code discussions contain relevant information. Isn’t it a shame that we keep these in the centralized GitHub/GitLab servers, far away from our decentralized Git code? As soon as we move provider, we’ll lose all old discussions! And how do you ever find the pull requests back from 5 years ago? Symfony has implemented a lightweight solution to this problem years ago using a less-known feature of Git: Git Notes.