git stash를 사용하여 진행중인 프로젝트 변경 사항을 저장하고 다른 컴퓨터에서 액세스하려면 github으로 푸시해야합니까?


20

나는 종종 커밋하기에 충분하기 전에 휴식을 취해야하는 프로젝트의 일부 기능을 작업합니다. 그러나 매일 두 개의 다른 컴퓨터를 사용하여 코딩합니다 (노트북과 연구실 데스크톱). 예 : 집에서 기능을 작업하고있는 중입니다. 그리고 나서 실험실로갑니다.

클라우드 동기화 (예 : Dropbox)를 GitHub 원격 추적과 혼합하고 싶지 않습니다.

작업을 계속하기 위해 다른 컴퓨터에서 코드를 가져 오기 위해 코드의 미완성 (그리고 지저분한) 상태를 커밋했습니다. 나는 이것이 나쁜 습관이라고 확신합니다.

그러나 오늘, 나는 git stash인터넷 검색을 약간 마쳤습니다. 내가 필요한 것에 대한 완벽한 솔루션 인 것 같습니다.

그러나 변경 사항을 푸시하면 github으로 이동하면 설명서에 표시되지 않습니다. 그 외에도 필요한 이동성을 달성하는 더 효율적인 방법이 있는지 알고 싶습니다.

미리 감사드립니다!


1
나는이 질문이 주제를 벗어난 주제로 닫으려고 투표하고 있습니다. 왜냐하면 이미 스택 오버플
David Arno

5
@DavidArno : 크로스 사이트 중복이라고 생각하지 않습니다. StackOverflow 질문은 "X를 할 수 있습니까"에 관한 것이며이 질문은 "X가 좋은 습관입니까"에 관한 것입니다. 최소한 질문의 근본 원인은 다릅니다.
Greg Burghardt

7
@DavidArno 내가 마지막으로 확인한 "이미 답변 됨"은 질문을 닫을 이유가 아닙니다.
RubberDuck

답변:


28

작업을 계속하기 위해 다른 컴퓨터에서 코드를 가져 오기 위해 코드의 미완성 (그리고 지저분한) 상태를 커밋했습니다. 나는 이것이 나쁜 습관이라고 확신합니다.

지저분한 미완성 작업을 커밋해도됩니다. 토픽 브랜치에서 작업하십시오. 일찍 커밋하고 자주 커밋하십시오. 코드 커밋시기를 읽어보십시오 . 커밋 시점에 대한 지침. Git을 위해 특별히 토픽 브랜치를 커밋하고 원하는만큼 푸시하십시오.

이 토픽 브랜치가 당신을위한 것이라면 깨진 코드를 커밋하고 푸시하십시오. 깨진 코드를 다른 사람들이 사용하는 브랜치로 푸시하는 것을 연기해야합니다 . 자신의 코드를 자유롭게 깰 수 있습니다.


6
나는 심지어 더 강력하다고 말하고 있습니다 : 절대 마스터 브랜치에서 작업 하지 마십시오 . 당신이 적합하다고 생각할 때 그것에 헌신하십시오. 변경 사항에 만족하면 변경 내용을 마스터에 병합하십시오.
9000

좋은 충고! 커밋에 주석을 추가해야하기 때문에 큰 혼란이 생길 ​​수 있다고 생각합니다. 때로는 "진행중인 작업"또는 이와 유사한 내용 일 수도 있습니다. 그리고 네, 저는이 지점에서 혼자 일하고 있으므로 당신이 말한 모든 것이 합리적입니다!
Leandro

4
이것은 또한 당신에게 당신의 지점 병합 할 때 하나에 각각의 커밋을 부수의 옵션을 제공 자식 병합 --squash 버그 수정을
스누피

2
@Leandro 커밋 메시지는 의미가있는 것처럼 원자적이고 명확해야합니다. 예를 들어 WIP 인 경우에도 "페이지 요청을 처리하기 위해 컨트롤러 추가-WIP"라고 말할 수 있습니다. 커밋 메시지는 또한 프로젝트 변경 사항에 대한 검색 가능한 기록을 제공합니다. "WIP"의 10 개의 커밋은 예를 들어 사용자 취급과 관련된 변경을 찾는 사람에게 도움이되지 않습니다.
Ben

7

은신처는 현지에서 사용하기 위해 만들어졌으며 지점과 엉망으로 물건을 넣을 수있는 임시 장소입니다.

지점에서 일하는 유일한 사람이라면 깨진 코드를 커밋하는 데 아무런 문제가 없습니다. 비슷한 상황에서 내가하는 일은 깨진 커밋을 한 다음 다른 위치에서 잡아 당긴 후 git reset HEAD~1실행 취소하는 것입니다. 물론, --force당신은 당신 pullspushes당신의 위치를 ​​변경할 때 사용이 필요합니다 .

또는 첫 커밋까지 기다렸다가 git commit --amend. 또는 기능 분기를 커밋 할 때 깨진 커밋을 모두 스쿼시합니다. 또는 나는 내 역사에서 분명하게 표시된 깨진 커밋에 대해 걱정하지 않습니다. 많은 옵션이 있습니다.


1
그래도 익숙해지지 않기 --amend때문에 --force푸시 가 필요합니다 . 폐기 지점에만 커밋하는 것이 좋습니다.
leftaroundabout

1

stash실제로는 아무 것도 만족스럽지 않고 "브랜치를 풀다"고 작업 디렉토리를 정리합니다. 만약 당신이 stash pop주를 즉시 되 돌리지 않으면 상황은 매우 혼란스러워 질 것입니다.

실제로 저장해야 할 작업이있는 경우 영구 저장소 항목에 적합하지 않더라도 여전히 커밋이어야합니다. 사실, 나는 작업 디렉토리를 버전 제어 상태가 아닌 상태로 두지 않는다. 모든 변경 사항을 임시 커밋으로 저장하기 위해 매우 간단한 Python 스크립트 를 사용한다. 시도해보고 싶다면 다음과 같이하십시오.

  1. 완료되지 않은 작업을 마치고 작업장을 떠나려고 할 때 실행하십시오 git-tmp-commit. 새로운 변경 사항을 새로운 고유 한 지점으로 자동 커밋합니다.
  2. 이 분기를 원격으로 밉니다.
  3. 휴가.
  4. 계속하려면 원격에서 해당 분기를 다시 복제하십시오. 나는이 작업을 수행 ccdA와 처음부터 모든 것을 알아 실제로 확인 스크립트, 임시 폴더가 자동으로 가장 최근의 분기를 선택하는 ...하지만 당신은 단지 수동으로 가져오고 브랜치를 체크 아웃 할 수 temporary-commits/original-branch/YYYY-MM-DD...REPO의 기존 클론에서.
  5. 마지막으로로 변경 사항을 "커밋 해제"합니다 git-tmp-commit -r. 그러면 원래 브랜치 (예 :)로 돌아가서 master임시 커밋의 변경 사항을 작업 디렉토리에 남겨 두므로 적절한 커밋이 될 때까지 (또는 다시 떠나야 할 경우 임시로) 여기에서 계속할 수 있습니다.

스크립트가 작성되는 방식 은 체크 아웃 저장소에 분기가없는master 경우에만 작동합니다 . 의심 할 여지없이 당신은 git branch -d master; 이것은 분명히 이상적이지 않습니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.