Files
obsidian-vault/work/apple-browsers-worktree-workflow.md
T

50 lines
1.7 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Apple Browsers: Git worktrees
This instruction describes how to keep one shared Git database at e.g. `~/DuckDuckGo/apple-browsers.git/.git` and put independent checkouts beside it inside `apple-browsers.git/`.
The container directory has no checked-out source of its own.
Related: [Quickly add/remove/switch between worktrees](https://app.asana.com/1/137249556945/message/1210697449367306)
## First-time setup
```sh
mkdir -p ~/DuckDuckGo/apple-browsers.git
git clone --bare https://github.com/duckduckgo/apple-browsers.git ~/DuckDuckGo/apple-browsers.git/.git
cd ~/DuckDuckGo/apple-browsers.git
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
git fetch origin
git worktree add main main
```
## Work on a branch
```sh
git fetch origin
git worktree add local-folder-name author/branch-name
cd local-folder-name
git submodule update --init --recursive
open DuckDuckGo.xcworkspace
```
- Edit, build, commit, and push **inside** `**local-folder-name/**` as with any clone.
- Each worktree has its own working files and branch; they share the same Git history.
- for a remote branch, use `git worktree add --track -b <branch> <folder> origin/<branch>` if you have not created it locally.
- 🔍 Use `git worktree list | grep branch-name-part` to find checkouts.
## New branch creation
From `~/DuckDuckGo/apple-browsers.git`:
```sh
git fetch origin
git worktree add -b yourname/my-feature my-feature origin/main
cd my-feature
git submodule update --init --recursive
open DuckDuckGo.xcworkspace
```
## Removing worktree
- After you finish working on your feature, run `git worktree remove <folder>` from the container directory.
- If you need to remove a worktree with changes you don‘t need anymore, run `git worktree remove -f <folder>`