Skip to content

Commit

Permalink
Docs: Add a FAQ
Browse files Browse the repository at this point in the history
This answers some questions, which were repeatly asked in Discord.
  • Loading branch information
PhilipMetzger committed Aug 5, 2023
1 parent aae14b2 commit 93df93d
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,8 @@ The best way to get started is probably to go through
[Git comparison](docs/git-comparison.md), which includes a table of
`jj` vs. `git` commands.

After you are familiar with Jujutsu, the [FAQ](docs/FAQ.md) may help.

## Related work

There are several tools trying to solve similar problems as Jujutsu. See
Expand Down
75 changes: 75 additions & 0 deletions docs/FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Frequently asked questions

### Why does my branch not move to the new commit after `jj new/commit`?

If your familiar with Git, you might expect the current branch to move forward
when you commit. However Jujutsu does not have a concept of a "current branch",
so they always point to a single commit.

To move them, use `jj branch set`.

### I made a commit and `jj git push --all` says "Nothing changed" instead of pushing it. What do I do?

`jj git push --all` pushes all __branches__, not all revisions. You have two
options:

* Using `jj git push --change` will automatically create a branch and push it.
* Using `jj branch` commands to create or move a branch to either the commit
you want to push or a descendant on it. Unlike Git, Jujutsu doesn't do this
automatically (see previous question).

### Where is my commit, why is it not visible in `jj log`?

Is your commit visible with `jj log -r 'all()'`?

If yes, you should be aware that `jj log` only shows the revisions matching
`revsets.log` by default. You can change it as described in [config] to show
more revisions.

If not, the revision may have been abandoned (e.g because you used `jj abandon`
, or because it's an obsolete version that's been rewritten with `jj rebase`,
`jj describe`, etc) In that case, `jj log -r commit_id` should show the
revision as "hidden". `jj new commit_id` or `jj edit commit_id` should make the
revision visible again.

See [revsets] and [templates] for further guidance.

### How do I partially add changes from a file?

With Jujutsu you never partially add hunks, as you are always amending the
working-copy commit. You need to split it, as the `@` may already be complete.

This is easy doable with `jj split your-file`


### Is there something like `git rebase --interactive`?

Not yet, you can check [this issue] for updates.

To reorder commits, it is for now recommended to rebase commits individually,
which may require multiple invocations of `jj rebase -r` or `jj rebase -r`

To squash or split commits, use `jj squash` and `jj split`.

### How can I keep my scratch files in the repository?

You can keep your notes and other scratch files in the repository, if you add
a wildcard pattern to either the repos `gitignore` or your global `gitignore`.
Something like `*.scratch` or `*.scratchpad` should do, after that rename the
files you want to keep around to match the pattern.

You can find more details on `gitignore` files [here][gitignore].

### How can I keep local changes around, but not use them for Pull Requests?

In general, you should create a commit, which incorporates your local changes.
After that rebase all your pending PR's on it. Then just before creating a PR,
remove the change from the branches history with
`jj rebase -s $change-id -d main` to keep it on the local `main` branch.


[config]: ./config.md
[gitignore]: https://git-scm.com/docs/gitignore
[revsets]: ./revsets.md
[templates]: ./templates.md
[this issue]: https://github.com/martinvonz/jj/issues/1531

0 comments on commit 93df93d

Please sign in to comment.