What is Git?
Git is a distributed version control system (VCS) that Linus Torvalds wrote in 2005 for Linux kernel development. Unlike centralized systems such as SVN, every developer has a full copy of the entire project history locally β offline work, merges without a server, and recoverable versions are therefore core properties, not add-ons. The core concepts: A repository (repo) is the project with its full history. A commit is a saved change with author, timestamp, diff, and parent pointer β the smallest atomic unit. Branches are pointers to commits that exist in parallel (feature/login, bugfix/hotfix-X, main). Merge and rebase combine branches, where merge creates a "merge commit" and rebase linearizes history. Remotes (origin, fork) are other copies of the repo, typically hosted on GitHub, GitLab, Bitbucket, or Azure DevOps. The standard team workflow: create a feature branch from main β local commits β push to remote β pull request (PR) / merge request β code review by the team β merge to main β CI pipeline auto-deploys. Variants are Git Flow (explicit develop/release/hotfix branches, classic for release cycles), trunk-based development (short-lived feature branches, continuous deployment), and GitHub Flow (minimal, ideal for web apps). Git skills are now basic equipment for any professional software development team. For non-technical team members (design, content), graphical clients like GitHub Desktop, Sourcetree, Fork, or Tower are the easiest entry point. The most common pitfalls: forgotten .gitignore (secrets in the repo), force-push on shared branches (overwriting colleagues' work), huge commits without context. Discipline pays off: clean atomic commits with meaningful messages are the foundation for debugging, code review, and audits.
Key Points
- Distributed system: every clone holds the full history β offline-capable and resilient to outages
- Atomic commits beat mega-changes: committing each logical unit separately makes debugging and review 10Γ easier
- Branches are cheap: feature branches per task, main always stays deployable
- Hosting platforms (GitHub, GitLab, Bitbucket) add PRs, reviews, issue tracking, and CI on top
- Commit messages in imperative form ("Add user auth" instead of "Added"): convention from the Git project itself
- Workflow variants: Git Flow (release-driven), trunk-based (continuous deployment), GitHub Flow (pragmatic)
- .gitignore is mandatory: never commit secrets, build artifacts, node_modules, or IDE files
- Force-push on shared branches is taboo β overwrites other people's commits without warning
- Graphical clients (GitHub Desktop, Sourcetree, Fork) make Git usable for non-CLI users without overwhelming them with commands
Practical Example
βOur team works in feature branches off main; after code review by two reviewers, a GitHub Action merges automatically and deploys to staging via CI/CD.β
Need professional help with Git?
Our GoldenWing team offers strategic Web & App Development services for Austrian and international clients. From initial consulting to implementation β we deliver measurable results.