한 git 브랜치에서 다른 파일로 단일 파일 버전을 복사하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/307579

문제

나는 완전히 합쳐진 두 개의 가지가 있습니다.

그러나 병합이 완료된 후에는 하나의 파일이 합병 (다른 사람이 자동 형식 GAH)에 의해 엉망이된다는 것을 알고 있으며, 다른 지점에서 새 버전으로 변경하는 것이 더 쉬울 것입니다. 그런 다음 한 줄 변경을 내 지점으로 가져간 후 다시 삽입하십시오.

그렇다면 git에서 이것을하는 가장 쉬운 방법은 무엇입니까?

도움이 되었습니까?

해결책

파일이 끝나기를 원하는 지점에서 이것을 실행하십시오.

git checkout otherbranch myfile.txt

일반 공식 :

git checkout <commit_hash> <relative_path_to_file_or_dir>
git checkout <remote_name>/<branch_name> <file_or_dir>

일부 메모 (의견에서) :

  • Commit 해시를 사용하여 모든 커밋에서 파일을 가져올 수 있습니다.
  • 이것은 파일과 디렉토리에 대해 작동합니다
  • 파일을 덮어 씁니다 myfile.txt 그리고 mydir
  • 와일드 카드는 작동하지 않지만 상대 경로는 그렇습니다
  • 여러 경로를 지정할 수 있습니다

대안:

git show commit_id:path/to/file > path/to/file

다른 팁

나는 비슷한 검색 으로이 질문을 끝냈다. 제 경우에는 다른 지점에서 파일의 원래 위치와 다른 현재 작업 디렉토리로 파일을 추출하려고했습니다. 대답:

git show TREEISH:path/to/file >path/to/local/file

체크 아웃 명령 사용은 어떻습니까 :

  git diff --stat "$branch"
  git checkout --merge "$branch" "$file"
  git diff --stat "$branch"

Madlep의 답변에 따라 디렉토리 블로브로 다른 지점에서 하나의 디렉토리를 복사 할 수도 있습니다.

git checkout other-branch app/**

OP의 질문에 관해서 하나의 파일 만 변경 한 경우 이것은 잘 작동합니다 ^_ ^

1) 파일 사본이 필요한 지점에 있는지 확인하십시오. 예를 들어 : 나는 마스터에서 하위 지점 파일을 원하므로 결제해야하거나 마스터에 있어야합니다. git checkout master

2) 이제 하위 지점에서 마스터로 원하는 특정 파일 만 확인하십시오.

git checkout sub_branch file_path/my_file.ext

여기 sub_branch 해당 파일과 파일 이름이있는 곳을 의미합니다. 복사해야합니다.

허용 된 답변에서 첫 번째 옵션은 단계 다른 분기의 전체 파일 (예 : git add ... 두 번째 옵션은 파일을 복사 할뿐 아니라 변경 사항을 중단하지는 않지만 (파일을 수동으로 수동으로 편집하고 미결제 차이가있는 것처럼) 변경 사항을 중단하지는 않습니다.

다른 지점의 git 복사 파일을 준비하지 않고도 다른 지점에서 파일을 보냅니다

변경 사항이 있습니다 (예 : git add filename):

$ git checkout directory/somefile.php feature-B

$ git status
On branch feature-A
Your branch is up-to-date with 'origin/feature-A'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   directory/somefile.php

뛰어난 변화 (무대 또는 커밋되지 않음) :

$ git show feature-B:directory/somefile.php > directory/somefile.php

$ git status
On branch feature-A
Your branch is up-to-date with 'origin/feature-A'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   directory/somefile.php

no changes added to commit (use "git add" and/or "git commit -a")
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top