@@ -130,6 +130,7 @@ cmd_create() {
130130 local yes_mode=0
131131 local force=0
132132 local custom_name=" "
133+ local folder_override=" "
133134 local open_editor=0
134135 local start_ai=0
135136
@@ -168,6 +169,10 @@ cmd_create() {
168169 custom_name=" $2 "
169170 shift 2
170171 ;;
172+ --folder)
173+ folder_override=" $2 "
174+ shift 2
175+ ;;
171176 --editor|-e)
172177 open_editor=1
173178 shift
@@ -191,12 +196,19 @@ cmd_create() {
191196 done
192197
193198 # Validate flag combinations
194- if [ " $force " -eq 1 ] && [ -z " $custom_name " ]; then
195- log_error " --force requires --name to distinguish worktrees"
199+ if [ -n " $folder_override " ] && [ -n " $custom_name " ]; then
200+ log_error " --folder and --name cannot be used together"
201+ exit 1
202+ fi
203+
204+ if [ " $force " -eq 1 ] && [ -z " $custom_name " ] && [ -z " $folder_override " ]; then
205+ log_error " --force requires --name or --folder to distinguish worktrees"
196206 if [ -n " $branch_name " ]; then
197207 echo " Example: git gtr new $branch_name --force --name backend" >&2
208+ echo " or: git gtr new $branch_name --force --folder my-folder" >&2
198209 else
199210 echo " Example: git gtr new feature-auth --force --name backend" >&2
211+ echo " or: git gtr new feature-auth --force --folder my-folder" >&2
200212 fi
201213 exit 1
202214 fi
@@ -245,7 +257,9 @@ cmd_create() {
245257
246258 # Construct folder name for display
247259 local folder_name
248- if [ -n " $custom_name " ]; then
260+ if [ -n " $folder_override " ]; then
261+ folder_name=$( sanitize_branch_name " $folder_override " )
262+ elif [ -n " $custom_name " ]; then
249263 folder_name=" $( sanitize_branch_name " $branch_name " ) -${custom_name} "
250264 else
251265 folder_name=$( sanitize_branch_name " $branch_name " )
@@ -256,7 +270,7 @@ cmd_create() {
256270 echo " Branch: $branch_name "
257271
258272 # Create the worktree
259- if ! worktree_path=$( create_worktree " $base_dir " " $prefix " " $branch_name " " $from_ref " " $track_mode " " $skip_fetch " " $force " " $custom_name " ) ; then
273+ if ! worktree_path=$( create_worktree " $base_dir " " $prefix " " $branch_name " " $from_ref " " $track_mode " " $skip_fetch " " $force " " $custom_name " " $folder_override " ) ; then
260274 exit 1
261275 fi
262276
@@ -336,11 +350,20 @@ cmd_create() {
336350
337351 # Show next steps only if no auto-launch flags were used
338352 if [ " $open_editor " -eq 0 ] && [ " $start_ai " -eq 0 ]; then
353+ # Determine identifier to show in next steps
354+ # Use custom folder when --folder specified, otherwise use original branch name
355+ local next_steps_id
356+ if [ -n " $folder_override " ]; then
357+ next_steps_id=" $folder_name "
358+ else
359+ next_steps_id=" $branch_name "
360+ fi
361+
339362 echo " "
340363 echo " Next steps:"
341- echo " git gtr editor $branch_name # Open in editor"
342- echo " git gtr ai $branch_name # Start AI tool"
343- echo " cd \"\$ (git gtr go $branch_name )\" # Navigate to worktree"
364+ echo " git gtr editor $next_steps_id # Open in editor"
365+ echo " git gtr ai $next_steps_id # Start AI tool"
366+ echo " cd \"\$ (git gtr go $next_steps_id )\" # Navigate to worktree"
344367 fi
345368}
346369
@@ -1440,8 +1463,9 @@ CORE COMMANDS (daily workflow):
14401463 --track <mode>: tracking mode (auto|remote|local|none)
14411464 --no-copy: skip file copying
14421465 --no-fetch: skip git fetch
1443- --force: allow same branch in multiple worktrees (requires --name)
1466+ --force: allow same branch in multiple worktrees (requires --name or --folder )
14441467 --name <suffix>: custom folder name suffix (e.g., backend, frontend)
1468+ --folder <name>: custom folder name (replaces default, useful for long branches)
14451469 --yes: non-interactive mode
14461470 -e, --editor: open in editor after creation
14471471 -a, --ai: start AI tool after creation
0 commit comments