1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Colocate jj And git Directories For Project as a jj TIL

This commit is contained in:
jbranchaud
2024-11-27 08:41:23 -06:00
parent 5c81ddc151
commit e0db60f6ce
2 changed files with 65 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
_1518 TILs and counting..._ _1519 TILs and counting..._
--- ---
@@ -41,6 +41,7 @@ _1518 TILs and counting..._
* [Internet](#internet) * [Internet](#internet)
* [Java](#java) * [Java](#java)
* [JavaScript](#javascript) * [JavaScript](#javascript)
* [jj](#jj)
* [jq](#jq) * [jq](#jq)
* [Kitty](#kitty) * [Kitty](#kitty)
* [Linux](#linux) * [Linux](#linux)
@@ -569,6 +570,10 @@ _1518 TILs and counting..._
- [Yarn Commands Without The Emojis](javascript/yarn-commands-without-the-emojis.md) - [Yarn Commands Without The Emojis](javascript/yarn-commands-without-the-emojis.md)
- [Yup Schemas Are Validated Asynchronously](javascript/yup-schemas-are-validated-asynchronously.md) - [Yup Schemas Are Validated Asynchronously](javascript/yup-schemas-are-validated-asynchronously.md)
### jj
- [Colocate jj And git Directories For Project](jj/colocate-jj-and-git-directories-for-project.md)
### jq ### jq
- [Combine An Array Of Objects Into A Single Object](jq/combine-an-array-of-objects-into-a-single-object.md) - [Combine An Array Of Objects Into A Single Object](jq/combine-an-array-of-objects-into-a-single-object.md)

View File

@@ -0,0 +1,59 @@
# Colocate jj And git Directories For Project
When doing a standard clone of a git repository with `jj`, you'll get a copy of
the project with a `.jj` directory containing the version control information.
```bash
$ jj git clone git@github.com:jbranchaud/my-repo
Fetching into new repo in "/path/of/local/repo"
...
$ exa --tree --all -L 1
.
├── .gitignore
├── .jj
├── Cargo.lock
├── Cargo.toml
└── src
```
This is fine if I'm completely familiar with using
[jujutsu](https://martinvonz.github.io/jj/latest/). However, if I'm coming from
`git` and still learning, then it would be nice to be able to fallback to
familiar `git` commands when needed.
But without a `.git` directory, I get this:
```bash
$ git log
fatal: not a git repository (or any of the parent directories): .git
```
When cloning a git repo with `jj`, I can instruct it to _colocate_ which means
that it will create both the `.jj` and the `.git` data directories in the
project.
```bash
$ jj git clone --colocate git@github.com:jbranchaud/my-repo
Fetching into new repo in "/path/of/local/repo"
...
$ exa --tree --all -L 1
.
├── .git
├── .gitignore
├── .jj
├── Cargo.lock
├── Cargo.toml
└── src
```
Now I can run `jj` commands or `git` commands:
```bash
$ git log
commit 0c72abbb83657096677f9a3d5ddc7bce20839165 (HEAD, origin/trunk, trunk)
...
```
[source](https://martinvonz.github.io/jj/latest/git-compatibility/#co-located-jujutsugit-repos)