Git is a version control system that enables collaboration and code tracking. An important aspect is the use of branches to work on features and fixes. When working on a branch, two key commands are git merge
and git rebase
. The difference lies in how the history is handled. Merging preserves the history, while rebasing moves local commits on top of the latest remote changes, creating a linear history. Additionally, options like --no-ff
and --squash
affect how the commit history appears, with --no-ff
keeping individual commits and --squash
combining them into one.
A practical collection of Git commands for real-world use. Covers working with submodules, rewriting commit history to fix authors, enabling symlinks on Windows, cleaning your working directory, searching commit logs, simulating actions with dry runs, and using git bisect to efficiently track down bugs in your commit history.
TypeScript is a strongly typed superset of JavaScript that compiles to plain JS. It improves code quality, catches errors early, and enhances developer productivity with powerful IDE support like autocompletion, type inference, and safe refactoring. It makes large codebases easier to manage, scales better, and is widely adopted in professional frontend and fullstack development. Mastering TypeScript is essential for advancing in modern development practices.
Hi, I’m Mo – a Senior Full-Stack Developer with 12+ years of experience. On this blog, I share insights into my work, exciting projects, and modern technologies like TypeScript, JavaScript, React, and GraphQL. You’ll find regular posts on clean code, frontend and full-stack best practices, agile software development, and sustainable architecture. Whether as a lead or team member, I focus on effective collaboration and pragmatic solutions. This blog is my space to share knowledge, reflect on new tech, and connect with others – from Freiburg or remotely. Take a look around and feel free to reach out!