|  | @@ -49,6 +49,7 @@ type upOptions struct {
 | 
	
		
			
				|  |  |  	noColor            bool
 | 
	
		
			
				|  |  |  	noPrefix           bool
 | 
	
		
			
				|  |  |  	attachDependencies bool
 | 
	
		
			
				|  |  | +	attach             []string
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  func (opts upOptions) apply(project *types.Project, services []string) error {
 | 
	
	
		
			
				|  | @@ -107,8 +108,8 @@ func upCommand(p *projectOptions, backend api.Service) *cobra.Command {
 | 
	
		
			
				|  |  |  			if create.Build && create.noBuild {
 | 
	
		
			
				|  |  |  				return fmt.Errorf("--build and --no-build are incompatible")
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -			if up.Detach && (up.attachDependencies || up.cascadeStop) {
 | 
	
		
			
				|  |  | -				return fmt.Errorf("--detach cannot be combined with --abort-on-container-exit or --attach-dependencies")
 | 
	
		
			
				|  |  | +			if up.Detach && (up.attachDependencies || up.cascadeStop || len(up.attach) > 0) {
 | 
	
		
			
				|  |  | +				return fmt.Errorf("--detach cannot be combined with --abort-on-container-exit, --attach or --attach-dependencies")
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			if create.forceRecreate && create.noRecreate {
 | 
	
		
			
				|  |  |  				return fmt.Errorf("--force-recreate and --no-recreate are incompatible")
 | 
	
	
		
			
				|  | @@ -143,6 +144,7 @@ func upCommand(p *projectOptions, backend api.Service) *cobra.Command {
 | 
	
		
			
				|  |  |  	flags.BoolVarP(&create.noInherit, "renew-anon-volumes", "V", false, "Recreate anonymous volumes instead of retrieving data from the previous containers.")
 | 
	
		
			
				|  |  |  	flags.BoolVar(&up.attachDependencies, "attach-dependencies", false, "Attach to dependent containers.")
 | 
	
		
			
				|  |  |  	flags.BoolVar(&create.quietPull, "quiet-pull", false, "Pull without printing progress information.")
 | 
	
		
			
				|  |  | +	flags.StringArrayVar(&up.attach, "attach", []string{}, "Attach to service output.")
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	return upCmd
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -165,6 +167,9 @@ func runUp(ctx context.Context, backend api.Service, createOptions createOptions
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	attachTo := services
 | 
	
		
			
				|  |  | +	if len(upOptions.attach) > 0 {
 | 
	
		
			
				|  |  | +		attachTo = upOptions.attach
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  	if upOptions.attachDependencies {
 | 
	
		
			
				|  |  |  		attachTo = project.ServiceNames()
 | 
	
		
			
				|  |  |  	}
 |