<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def pull_again(self, repo: Optional[str]=None, branch: Optional[str]=None) -> None: """ When ``single_pull`` is enables, tells Arca to pull again. If ``repo`` and ``branch`` are not specified, pull again everything. :param repo: (Optional) Pull again all branches from a specified repository. :param branch: (Optional) When ``repo`` is specified, pull again only this branch from that repository. :raise ValueError: If ``branch`` is specified and ``repo`` is not. """

        if repo is None and branch is None:
            self._current_hashes = {}
        elif repo is None:
            raise ValueError("You can't define just the branch to pull again.")
        elif branch is None and repo is not None:
            self._current_hashes.pop(self.repo_id(repo), None)
        else:
            repo_id = self.repo_id(repo)
            try:
                self._current_hashes[repo_id].pop(branch)
            except KeyError:
                pass