[첫화면으로]Git/이럴땐이렇게

마지막으로 [b]

잡다한 사례나 문제 해결에 관한 것들. 구글링하다 발견한 걸 옮겨 둠.

1. 이럴 땐 이렇게

로컬에서 A저장소를 클론해서 B저장소를 새로 만들었는데, B는 A에서 pull만 해 오고, 역으로 B에서 A로 push는 할 수 없게 막으려면:

로컬에서 만든 저장소를 다른 곳에 복사하고 싶을 때 (로컬로 복사해오는 건 clone으로 하지만 그 반대 방향을 원할 때):
git remote add origin git@github.com:foo/bar.git
git push origin master

현재 작업 브랜치에서 작업 중인데 버그를 발견. 이 버그는 다른 브랜치에서 해결하고, 다시 작업 브랜치에 반영하고 싶은 경우:

저장소 안에 여러 폴더가 있는데, 그 중 한 폴더를 빼내어 별도의 저장소로 만들면서 기존 히스토리까지 유지하고 싶은 경우:

플랫폼에 따라 달라지는 개행문자 변환

원격 저장소에 http로 접속할 때, 커밋하는 양이 많으면 git push 할 때 HTTP 411 코드 에러가 난다. 설정에서 최대값을 올려줌

마지막 커밋 이후에 파일 하나에 생겨난 여러 수정 내역 중에 일부만 커밋하고 싶을 때
$ git diff
diff --git a/develop.txt b/develop.txt
+patch 1            <-- 요것만 커밋하고 싶다
 develop branch 1
 develop branch 2
+patch 2            <-- 요건 놔두고

$ git add --patch develop.txt    <-- patch 옵션
@@ -1,2 +1,4 @@
+patch 1
 develop branch 1
 develop branch 2
+patch 2
Stage this hunk [y,n,q,a,d,/,s,e,?]? s  <-- 한 덩어리에서 더 쪼개기 위해 's'plit
Split into 2 hunks.
@@ -1,2 +1,3 @@
+patch 1
 develop branch 1
 develop branch 2
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? y  <-- 내가 원하는 것만 인덱스에 올리고
@@ -1,2 +2,3 @@
 develop branch 1
 develop branch 2
+patch 2
Stage this hunk [y,n,q,a,d,/,K,g,e,?]? n   <-- 이건 패스

$ git diff --cached
@@ -1,2 +1,3 @@
+patch 1               <-- 인덱스에 이 줄만 올라왔다
 develop branch 1
 develop branch 2

다른 브랜치에 있는 파일 하나만 가져오고 싶을 때

로컬 브랜치와 리모트 브랜치 삭제

가장 최근에 발생한 여러 커밋을 일괄 취소하고 싶을 때

특정 커밋 이전 히스토리를 지우고 싶을 때 (예를 들어 github에서 받은 프로젝트에 내가 이런 저런 커밋을 했는데 git log를 하면 원래 있던 커밋들도 와르르 나오니까 내가 받아온 시점을 첫 커밋으로 만들고 그 이전은 전부 삭제)
# A커밋 이전의 커밋들을 삭제하고 싶음
$ git checkout --orphan temp A
$ git commit -m "Truncate history"
$ git rebase --onto temp A master

첫번째 커밋을 리셋하고 싶을 때

2. 딱 부러진 해결책을 못 찾은 상태

로컬 저장소에서 한 파일에 '특정한 변경' 부분만 따로 유지하되, 원격으로 push할 때 전달되지 않게 막고 싶은 경우:

3. Commens

이름:  
Homepage:
내용:
 

기타분류

마지막 편집일: 2020-2-12 1:16 pm (변경사항 [d])
2104 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기