다른 분기에서 하나의 파일 만 가져 오는 방법
나는 git을 사용하고 마스터 브랜치에서 일하고 있습니다. 이 분기에는 app.js
.
나는 experiment
많은 변경과 많은 커밋 을 한 지점이 있습니다. 이제 모든 변경 사항을 app.js
from experiment
에서 master
분기 로 가져오고 싶습니다 .
어떻게하나요?
다시 한번 나는 병합을 원하지 않습니다. 지점 app.js
에서 experiment
지점으로 모든 변경 사항을 가져오고 싶습니다 master
.
git checkout master # first get back to master
git checkout experiment -- app.js # then copy the version of app.js
# from branch "experiment"
한 파일의 변경 사항을 실행 취소하는 방법을 참조하십시오 .
2019 년 8 월 업데이트, Git 2.23 : 새로운 git switch
및 git restore
명령을 사용하면 다음과 같습니다.
git switch master
git restore -s experiment -- app.js
기본적으로 작업 트리 만 복원됩니다.
당신은뿐만 아니라 인덱스를 업데이트 할 경우 (파일 내용을 복원 의미 와 하나의 명령으로 인덱스에 추가)
git restore -s experiment --staged --worktree -- app.js
# shorter:
git restore -s experiment -WS -- app.js
Jakub Narębski 가 주석에서 언급 했듯이 :
git show experiment:path/to/app.js > path/to/app.js
" Git의 특정 개정판에서 단일 파일을 검색하는 방법 "에 자세히 설명 된 것처럼 repo의 루트 디렉토리에서 전체 경로를 사용해야 한다는 점을 제외하고는 작동 합니다 .
따라서 Jakub의 예제에서 사용한 path / to / app.js입니다.
Frosty 가 주석에서 언급 했듯이 :
가장 최근의 app.js 상태 만 얻을 수 있습니다.
그러나 git checkout
또는의 git show
경우 SO 질문 " git checkout revision of a file in git gui "에 설명 된대로 원하는 개정판을 실제로 참조 할 수 있습니다 .
$ git show $REVISION:$FILENAME
$ git checkout $REVISION -- $FILENAME
$ FILENAME은 버전이 지정된 파일 의 전체 경로 입니다.
$REVISION
다음과 같이 표시 될 수 있습니다 git rev-parse
.
experiment@{yesterday}:app.js # app.js as it was yesterday
experiment^:app.js # app.js on the first commit parent
experiment@{2}:app.js # app.js two commits ago
등등.
숨김에서이 작업을 수행 할 수도 있습니다.
git checkout stash -- app.js
이것은 두 개의 브랜치에서 작업하고 있고 커밋하고 싶지 않은 경우 매우 유용합니다.
모든 것이 훨씬 간단하므로 git checkout을 사용하십시오.
you're on master
분기를 가정하고 분기를 얻으려면 다음을 app.js from new-feature
수행하십시오.
git checkout new-feature path/to/app.js
// note that there is no leading slash in the path!
그러면 원하는 파일의 내용이 표시됩니다. 항상 그렇듯이 새로운 기능 브랜치 이름 대신 sha1의 일부를 사용 하여 해당 특정 커밋에있는 파일을 가져올 수 있습니다.
VonC 및 chhh의 답변을 보완합니다.
git show experiment:path/to/relative/app.js > app.js
# If your current working directory is relative than just use
git show experiment:app.js > app.js
또는
git checkout experiment -- app.js
git checkout branch_name file_name
예:
git checkout master App.java
지점 이름에 마침표가 있으면 작동하지 않습니다.
git checkout "fix.june" alive.html
error: pathspec 'fix.june' did not match any file(s) known to git.
또는 다른 분기의 모든 파일을 원하는 경우 :
git checkout <branch name> -- .
github에서 파일을 검토하고 거기에서 가져옵니다.
이것은 OP에 직접 응답하지 않는 실용적인 접근 방식이지만 일부는 유용하다고 생각합니다.
문제의 브랜치가 GitHub에있는 경우 GitHub에서 제공하는 여러 도구 중 하나를 사용하여 원하는 브랜치 및 파일로 이동 한 다음 'Raw'를 클릭하여 일반 텍스트를보고 (선택적으로) 텍스트를 복사하여 붙여 넣을 수 있습니다. 원하는.
I like this approach because it lets you look at the remote file in its entirety before pulling it to your local machine.
If you want the file from a particular commit (any branch) , say 06f8251f
git checkout 06f8251f path_to_file
for example , in windows:
git checkout 06f8251f C:\A\B\C\D\file.h
git checkout master -go to the master branch first
git checkout <your-branch> -- <your-file> --copy your file data from your branch.
git show <your-branch>:path/to/<your-file>
Hope this will help you. Please let me know If you have any query.
참고URL : https://stackoverflow.com/questions/2364147/how-to-get-just-one-file-from-another-branch
'Programing' 카테고리의 다른 글
Git과 Dropbox를 효과적으로 함께 사용하십니까? (0) | 2020.09.27 |
---|---|
PHP에서 클라이언트 IP 주소를 얻는 방법 (0) | 2020.09.27 |
npm 5에서 만든 package-lock.json 파일을 커밋합니까? (0) | 2020.09.27 |
HTML에 PDF를 포함하는 권장 방법? (0) | 2020.09.27 |
JavaScript에 상수가 있습니까? (0) | 2020.09.27 |