본문 바로가기
DevOps/Git

Git - 다른 브랜치 특정 파일 덮어쓰기 커맨드

by 맑은안개 2022. 4. 11.

다른 브랜치의 특정 파일을 덮어쓰는 방법을 알아보자.

Case 1.

master, dev브랜치에 /folterA/app.js 파일이 다른 내용을 갖고 있다. dev에 적용된 내용을 무시하고 master브랜치의 app.js파일을 덮어쓰려 한다.

Master branch

function main() {

}

Dev branch

function main() {

}

function dev() {
  alert("something for dev");
}

diff

diff를 사용하여 브랜치간 덮어쓰려는 파일의 내용을 확인한다.

$ git diff dev master folderA/app.js
diff --git a/folderA/app.js b/folderA/app.js
index 2e23261..d787174 100644
--- a/folderA/app.js
+++ b/folderA/app.js
@@ -1,7 +1,3 @@
 function main() {
-
-}
-
-function dev() {
-  alert("something for dev");
+  

checkout 명령으로 덮어쓰기

git checkout -- <path/to/filename> 명령으로 원하는 파일을 덮어쓴다.
❗ 덮어쓰기 전에 파일의 절대경로를 알고 싶다면 아래 명령으로 확인한다.(와일드카드 적용)

$ git checkout master # 가져올 대상파일이 있는 브랜치
$ git ls-files **app.js
folderA/app.js

ls-files로 확인한 패스/파일명을 원하는 브랜치(master)로 부터 checkout한다.

$ git checkout dev # 작업브랜치
$ git checkout master -- folderA/app.js
  • master브랜치의 app.js로 덮어써진 내용을 확인한다.
  • 현재 브랜치에 checkout하는 파일이 없다면 신규로 checkout된다.

Case 2. 와일드카드 사용, 일괄 덮어쓰기

와일드 카드를 사용하여 해당 패턴에 만족하는 파일을 일괄 checkout한다.

D:.
│  README.md
│
├─folderA
│      app.js
│
└─folderB
        test.py
        test1_ml.py
        test2_ml.py
  • 위의 _ml.py패턴의 파일을 master브랜치로 부터 checkout한다.
$ git checkout master -- folderB/*_ml.py
반응형