The GCStoGCS operator using the _replace=False_ flag and specifying _source_object != destination_object_, will not work properly, because it is comparing [apples](https://github.com/apache/airflow/blob/main/airflow/providers/google/cloud/transfers/gcs_to_gcs.py#L351) with [pears](https://github.com/apache/airflow/blob/0dd70de9492444d52e0afaadd7a510fc8a95369c/airflow/providers/google/cloud/transfers/gcs_to_gcs.py#L357).

Cause: the _prefix_ in the _pears_ case needs to be calculated from the _destination_object_, however, it is coming from the _source_object_.




airflow/providers/google/cloud/transfers/gcs_to_gcs.py
total_wildcards = prefix.count(WILDCARD)
        if total_wildcards > 1:
            error_msg = (
                "Only one wildcard '*' is allowed in source_object parameter. "
                "Found {} in {}.".format(total_wildcards, prefix)
            )
            raise AirflowException(error_msg)
        self.log.info('Delimiter ignored because wildcard is in prefix')
        prefix_, delimiter = prefix.split(WILDCARD, 1)
        objects = hook.list(self.source_bucket, prefix=prefix_, delimiter=delimiter)
        if not self.replace:
            
            
            
            existing_objects = hook.list(self.destination_bucket, prefix=prefix_, delimiter=delimiter)
            objects = set(objects) - set(existing_objects)
            if len(objects) > 0:
                self.log.info('%s files are going to be synced: %s.', len(objects), objects)
            else:
                self.log.info('There are no new files to sync. Have a nice day!')
        for source_object in objects:
            if self.destination_object is None:
                destination_object = source_object
            else:
                destination_object = source_object.replace(prefix_, self.destination_object, 1)
            self._copy_single_object(
                hook=hook, source_object=source_object, destination_object=destination_object
            )
    def _copy_single_object(self, hook, source_object, destination_object):