Skip to content

Commit

Permalink
docs: add FAQ for why to use new-then-amend over edit
Browse files Browse the repository at this point in the history
  • Loading branch information
khionu committed Mar 8, 2024
1 parent 8cada3f commit e056456
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 0 deletions.
2 changes: 2 additions & 0 deletions cli/src/commands/edit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ use crate::ui::Ui;
/// Note: it is generally recommended to instead to use `jj new` and `jj
/// squash`. Creating a new revision enables being more intentional with respect
/// to the existing revision.
///
/// For more information, see https://github.com/martinvonz/jj/blob/main/docs/FAQ.md#how-do-i-resume-working-on-an-existing-change
#[derive(clap::Args, Clone, Debug)]
pub(crate) struct EditArgs {
/// The commit to edit
Expand Down
2 changes: 2 additions & 0 deletions cli/tests/[email protected]
Original file line number Diff line number Diff line change
Expand Up @@ -711,6 +711,8 @@ Sets the specified revision as the working-copy revision
Note: it is generally recommended to instead to use `jj new` and `jj squash`. Creating a new revision enables being more intentional with respect to the existing revision.
For more information, see https://github.com/martinvonz/jj/blob/main/docs/FAQ.md#how-do-i-resume-working-on-an-existing-change
**Usage:** `jj edit <REVISION>`
###### **Arguments:**
Expand Down
11 changes: 11 additions & 0 deletions docs/FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,17 @@ commit, then run `jj restore --from Y --to @-` to restore the parent commit
to the old state, and `jj restore --from X` to restore the new working-copy
commit to the new state.

### How do I resume working on an existing change?

There are two ways to resume working on an earlier change: `jj new` then `jj squash`,
and `jj edit`. The first is generally recommended over the second because at this
point, your earlier change could have developed a conflict. In that case`jj edit`
would restore the state with plain-text conflict annotations. Editing those
annotations incorrectly or by accident can lead to undesired output from conflict
resolution. To avoid this, you use `jj new <rev>` to create a change based on your
earlier revision, make your edits, then use `jj squash`. Your earlier revision will
now be updated with the new edits.

### How do I deal with divergent changes ('??' after the [change ID])?

A [divergent change][glossary_divergent_change] represents a change that has two
Expand Down

0 comments on commit e056456

Please sign in to comment.