Skip to content
GitTree

Lesson 1 · Foundations

Distinguish Git, GitTree and your hosting provider

Understand which tool saves history, which one provides the desktop workflow, and which one runs hosted services. You will inspect Git and GitTree without creating the course repository yet.

  • Level: Beginner
  • 8 min read
  • 4 min video
  • Updated
  • Before this lesson: No earlier lesson needed

Progress saved in this browser.

Playing loads the video from YouTube (privacy-enhanced mode).

English narration · English and Arabic captions

Open the video pageWatch on YouTube

What you will learn

  • Explain why Git itself records a local commit without a GitHub, GitLab or GitTree account.
  • Distinguish native Git from GitTree-only and provider-dependent features.
  • Read a missing-repository message without treating it as missing Git.
  • Identify what this introductory inspection changes and what it leaves untouched.

Before you start

Start with no course repository: nothing has been initialized yet. Do not open a work repository for this lesson. You create the course repository in lesson 4.

The terminal examples were checked with Git 2.52.0 on macOS and on Ubuntu 24.04. Your version line can differ; lesson 2 explains installation and GitTree's Git 2.39.0 minimum. Another shell can format errors a little differently. The GitTree steps were recorded in GitTree 1.4 on Ubuntu 24.04. On macOS, press Command and Option where Windows and Linux use Ctrl and Alt.

Native Git needs no account for local work. GitTree asks you to sign in with your email or a Git provider; the Free plan then covers every local Git feature, and your repositories stay on your computer. The video was recorded before signing in became required, so it does not show that dialog. Executing Nour, provider integrations and AI drafting requires Pro or an applicable trial. Reading this course does not grant provider permissions.

Concept

Imagine a project whose working files contain a landing-page headline. Git can record a commit: a snapshot and its relationship to previous history. It stores repository data locally. A provider account is not a prerequisite for that local history.

GitTree is a desktop client for Git on macOS, Windows and Linux. It presents repository state and sends chosen operations to the user's installed Git. It also has app-specific state, such as workspaces, preferences and its own Undo journal. Those features do not turn GitTree into a hosting server.

A hosting provider stores a remote repository and may supply review objects, issues and CI services. In this course the primary CI/CD recording uses GitLab and a runner locally on the author's machine. GitTree can inspect supported provider results; the runner executes the job.

An analogy can help: Git keeps the project's recorded editions, GitTree is your workbench for inspecting and changing them, and the host is a shared service with its own rules. The analogy stops at permissions and recovery: a local workbench does not automatically reverse an action accepted by a server.

Use three labels when reading later lessons:

LabelExampleAuthority
Native GitStage a file or create a local commitRepository/index/refs read by Git
GitTree-onlyChange an app preference or use its journalled UndoGitTree's actual app state and recorded operation
Provider-dependentReview a merge request or inspect a pipeline jobSelected provider/project/permission and app capability

GitLab calls its review object a merge request; GitTree's shared commands can say Pull Request. A native merge is a different operation. We will make that distinction practical in lesson 61.

State changes in this lesson

There is no course working tree, index, local branch or remote-tracking ref yet. The terminal inspections create none. Opening New Tab and reading the guide do not initialize a repository or push anything. Closing Feature Guide can update its app-local last-seen-version preference; that is separate from repository state.

Do not infer a provider capability from a generic feature name. A service may offer an API action that GitTree's adapter does not currently expose.

Three tools, three owners1GitLocal repository history2GitTreeDesktop workflow and app state3Hosting providerRemote repository and hosted services
Git keeps the history, GitTree is the workspace on your computer, and the hosting provider runs shared services.
ToolWhat it ownsExample
GitLocal repository historyStage a file, create a local commit
GitTreeDesktop workflow and app stateChange a preference, use GitTree Undo
Hosting providerRemote repository and hosted servicesReview a merge request, run a pipeline job

In the terminal

Run this read-only version query:

Command · bash
git --version

Observed output on the authoring machine:

Output
git version 2.52.0

It proves that this shell can find Git and reports that executable's version. It does not prove that a repository, GitTree installation or provider connection exists.

In a folder that is not a repository, inspect status:

Command · bash
git status --short

Observed output from the non-repository authoring folder:

Output
fatal: not a git repository (or any of the parent directories): .git

The command exits nonzero. This is the intended negative case: Git ran, but the folder has no repository context. Do not run Init merely to remove this message; lesson 4 creates the intended course folder.

To inspect Git's own command catalog:

Command · bash
git help --all --no-aliases --no-external-commands

Exact excerpt from the captured Git 2.52.0 output (the video adds | head -12 to show only the first lines):

Output
Main Porcelain Commands
   add                     Add file contents to the index
   am                      Apply a series of patches from a mailbox
   archive                 Create an archive of files from a named tree
   backfill                Download missing objects in a partial clone

This is a labeled excerpt, not the whole output. The normalized captured catalog has 170 built-in command/interface entries. A listed manual, helper or optional tool is not automatically a GitTree button.

In GitTree

  1. Open the app and choose New Tab, command tab.new. Default shortcut: Command+T on macOS, Ctrl+T on Windows/Linux. Expect the repository-opening screen; create nothing.
  2. Open Command Palette…, command palette.open, with Command+Shift+P or Ctrl+Shift+P. Type Feature Guide, then choose the exact Feature Guide result. Expect the Feature Guide sheet.
  3. Alternative entry: Alt+H opens Feature Guide directly; on macOS this is Option+H. Default shortcuts can be customized, so inspect the live shortcut help if it differs.
  4. Choose Features. In Search features, type CI/CD and inspect the named CI/CD runs card. With no repository open, its source-defined prerequisite message is Open a repository to use it. A description is not evidence that a job has run.
  5. Choose Integrations. With no repository open, expect Open a repository to see what its provider supports. Do not connect an account or create a remote in this lesson.
  6. Press Escape to close the guide and restore focus. Keep New Tab open. The repository graph is still absent because we have not created the project.

Result

You can name the owner of each operation: Git for local version history, GitTree for its desktop workflow/app state, and the provider/runner for hosted review and CI. The course still has no repository or graph: you end exactly where you started, now knowing who owns what.

Common mistakes

  • “Commit means upload.” A local commit records repository history. Push is a separate action, taught with remote identity and permission.
  • “GitTree account means provider access.” Author identity, app access and provider credentials are separate.
  • “A feature card proves support everywhere.” Read its actual repo, access and provider conditions.
  • “A passing pipeline proves my current files.” A run identifies a particular commit; uncommitted files and newer SHAs need their own checks.

If something goes wrong

If the shell cannot find Git, stop the terminal portion and follow lesson 2. The missing-repository error above is different: Git exists but the current folder is not a repository.

If you cannot find Feature Guide, open Command Palette… and type Feature Guide. An older GitTree may not have it yet; the ideas in this lesson do not depend on it.

If you opened a personal repository accidentally, stop before any mutation. Opening or closing a tab does not delete its repository; inspect unsaved editor prompts rather than discarding a buffer. This lesson needs no reset, discard, trash recovery or Undo.

Check your understanding

Answer each question, then read why. Questions marked “Required” count toward completing the lesson.

  1. Question 1 of 6

    Maya creates a local commit without a hosting account. Which tool owns its history?

    Choose one answer.

  2. Question 2 of 6

    Choose every accurate classification.

    Choose every answer that applies.

  3. Question 3 of 6
    Required

    No repository is open. You read Feature Guide → Integrations, then close it. What exists afterward?

    Choose one answer.

  4. Question 4 of 6
    Required

    Change the input: a disposable repository is open and a later lesson creates a local commit without pushing. What is justified?

    Choose one answer.

  5. Question 5 of 6

    git --version succeeds; git status --short says “not a git repository.” What does that support?

    Choose one answer.

  6. Question 6 of 6
    Required

    Which evidence completes this lesson's practice?

    Choose one answer.

0 of 6 correct

Answer the required questions correctly to complete the lesson.

Checked in this browser.

Practice

Without initializing anything, use the three labels to classify: editing an app theme, recording a local commit, and a runner executing a job. Then inspect New Tab and confirm that no GitTree Features graph exists yet. The observable result is correct classification plus the unchanged no-repository checkpoint.

Your own confirmation: the site cannot see your computer.

To complete the lesson, answer the required questions correctly and confirm the practical exercise.

Recap

  • Git records local history independently of a hosting account.
  • GitTree's app state and native Git repository state have different owners.
  • Provider capabilities, permissions and actual run identity determine connected results.

Glossary terms introduced

Repository — مستودع; commit — إيداع; working tree — مجلد العمل; staging area — منطقة التجهيز; ref — مرجع; provider — مزوّد; command palette — لوحة الأوامر.

Video transcript

The narration of the video, cue by cue.

Show the transcript
  1. Welcome to GitTree Learn. Build a small page called GitTree Features.
  2. Before creating it, separate three tools often discussed together.
  3. Git records history. GitTree is a workspace. The provider adds services.
  4. Maya edits a headline. Her working file is the current version on disk.
  5. Git can save a selected snapshot with links to previous history.
  6. A local commit needs no GitHub, GitLab, or GitTree account.
  7. That does not save every visible file or upload anything.
  8. We will inspect selected content later. Push is a separate operation.
  9. GitTree shows history and actions using Git installed on your computer.
  10. App preferences and workspaces differ from branches and commits.
  11. GitTree Undo records supported app operations, not every terminal change.
  12. A host keeps a remote and may offer reviews, issues, and checks.
  13. Our main pipeline uses GitLab and a runner on the author's local machine.
  14. The runner executes jobs. GitTree inspects supported results.
  15. A service feature is not automatically implemented by GitTree's adapter.
  16. Read the provider, project, permission, and commit behind each result.
  17. Run git --version. This query changes no repository.
  18. Here Git reports 2.52.0. Your version may differ.
  19. This proves the shell found Git, not that a provider is connected.
  20. In a folder without a repository, run git status --short.
  21. Git says this is not a repository. That negative result is intended.
  22. Missing repository context differs from missing Git. Read the message.
  23. Do not reset, clean, or initialize a random folder to hide it.
  24. The native command catalog is not a list of GitTree buttons.
  25. Open New Tab in GitTree. Do not create the course repository yet.
  26. Open Command Palette, search Feature Guide, and choose that command.
  27. Its default is Alt+H, or Option+H on macOS. Overrides can change it.
  28. Choose Features, search CI/CD, and read the CI/CD runs prerequisite.
  29. Without an open repository, the feature asks you to open one.
  30. Choose Integrations. It also asks for a repository before showing support.
  31. Reading help created no remote, connected account, or pipeline job.
  32. Press Escape. The guide can remember its version as an app preference.
  33. That preference creates no commit. The project still has no graph.
  34. Local Git is Free. Nour, integrations, and drafts need applicable access.
  35. App access, provider credentials, and commit identity remain separate.
  36. A passing job belongs to one commit. An older green SHA is not enough.
  37. Classify a theme change, a local commit, and a runner executing a job.
  38. Confirm that the course project remains uninitialized, with no upload.
  39. Git owns history, GitTree its workspace, and the provider its services.
  40. Next, check installation and identity. Create the repository in lesson four.