programing

Git: 리모트 오리진 마스터에서 단일 파일을 업데이트/체크아웃하는 방법

newstyles 2023. 4. 14. 21:22

Git: 리모트 오리진 마스터에서 단일 파일을 업데이트/체크아웃하는 방법

시나리오:

  1. 하나의 파일을 로컬로 변경하여 실행합니다.git add,git commit그리고.git push
  2. 파일이 원격 오리진 마스터 저장소에 푸시됩니다.
  3. 리모트 저장소에서 "remote_cache" 메서드를 사용하여 Capistrano를 통해 전개되는 다른 로컬 저장소가 있습니다.
  4. 이제 애플리케이션 전체를 도입하는 것이 아니라 단일 파일만 업데이트/체크 아웃하고 싶습니다.

git으로 이게 가능합니까?나는 효과가 있는 것을 찾을 수 없었고 그것을 알아낼 수도 없었다.방금 SVN이랑 같이 했는데svn up file그리고 부라.

(도입된 저장소에서) 할 수 있습니다.

git fetch
git checkout origin/master -- path/to/file

가져오기에서는 최근 변경 내용이 모두 다운로드되지만 현재 체크아웃된 코드(작업 영역)에는 저장되지 않습니다.

체크아웃 시 다운로드된 변경 내용에서 작업 트리가 특정 파일로 업데이트됩니다(origin/master).

적어도 이것은 작은 오타 수정에 도움이 됩니다.파일의 단어 하나를 바꾸려고 브랜치를 작성하는 등, 기분이 이상합니다.

다음 코드가 유효했습니다.

git fetch
git checkout <branch from which file needs to be fetched> <filepath> 

Git 2.23 (2019년 8월)과 새로운 (아직 실험적인) 명령어를 사용하면, 다음과 같이 됩니다.이것은 "작업 디렉토리에서 모든 파일을 리셋하지만 스테이징 영역에서는 리셋하지 않는 방법"에서 볼 수 있습니다.

git fetch
git restore -s origin/master -- path/to/file

아이디어는 다음과 같습니다.git restore파일이나 브랜치는 취급하지 않고, 파일만 취급합니다.git checkout한다.
혼란」을 참조해 주세요.그것은, 다음과 같습니다).


codersam코멘트에 다음과 같이 추가합니다.

경우 데이터를 업스트림(포크)에서 가져오고 싶었다).
그래서 다음 내용으로 변경했습니다.

git restore -s upstream/master -- path/to/file

심플하게, 나에게 효과가 있다

git checkout origin/develop file_name.php
git archive --format=zip --remote=ssh://<user>@<host>/repos/<repo name> <tag or HEAD> <filename> > <output file name>.zip

할 수 있는 일은 다음과 같습니다.

  1. 로컬 git repo 업데이트:

    git fetch

  2. 로컬 브런치를 구축하여 체크 아웃합니다.

    git branch pouet && git checkout pouet

  3. 이 브랜치에 필요한 커밋을 적용합니다.

    git cherry-pick abcdefabcdef

    (「defabcdef」는 적용하는 커밋의 sha1입니다).

git checkout master
git pull --rebase
git checkout dev
git checkout master ./app/file.py

개발 브랜치에서 개발 중인 경우 파일을 교체한 후 마스터 브랜치를 병합하여 푸시합니다.예를 들어 app/file.py을 바꿉니다.

또는 현재 지점에 저장된 파일(변경 사항이 있는 경우)을 체크 아웃한 후 최신 변경 내용을 가져와 바탕화면(또는 전체 앱)에 해당 파일을 가져올 수 있습니다.당신이 있던 지점을 확인합니다.Git stash를 원래 상태로 되돌린 후 수동으로 변경 내용을 수정하거나 파일을 대체하여 드래그합니다.

이 방법은 별로 멋지지는 않지만 너희들이 다른 것을 알아내지 못하면 효과가 있어.

쉬운 해킹을 찾은 것 같아요.

로컬 저장소에 있는 파일(리모트서버의 최신 커밋에서 갱신할 파일)을 삭제합니다.

나서 ㅇㅇㅇㅇㅇㅇㅇㅇ를 요.git pull

파일이 삭제되므로 경합이 발생하지 않습니다.

언급URL : https://stackoverflow.com/questions/3334475/git-how-to-update-checkout-a-single-file-from-remote-origin-master