2009-07-26 5 views
0

나는 Git을 소스 코드 관리 도구로 사용 해왔다. 는 지금 내 워크 플로우는 간단하다Git의 새로운 기능이 혼합 된 리팩토링을 수행하는 가장 좋은 워크 플로우는 무엇입니까?

  • 는 최소한의 새로운 기능/리팩토링
  • 코드는
  • 검토 HEAD와 DIFF에 대해 생각
  • 커밋
내가 개선하고 싶은

이 워크 플로는보다 유연하게 만들 수 있습니다. 그 이유는 다음과 같은 상황이 두 번이나 발생했기 때문입니다. 일반적인 경우라고 생각합니다.

커밋 후 새 기능을 추가하기 위해 작업 디렉토리를 수정하기 시작합니다.

잠시 동안 코드를 작성하면이 시점에서 작업 디렉토리의 상태가 A가됩니다. 여기서 중요한 점은 새 기능이 아직 완료되지 않았으므로 작업 디렉토리가 커밋 될 준비가되지 않은 상태입니다.

이 시점에서 나는 리팩토링을 먼저 수행하는 것이 더 낫다는 것을 깨달았다. 코드 수정 과정에서 리팩터링의 필요성이 드러날 때도 있습니다.

이제 HEAD에서 다시 시작하여 리팩터링해야합니다. 하지만 코드 HEAD의 수정을 잃고 싶지 않아 -> 상태 A. 그래서 기본적으로 내가 필요 :

  • 이 지난 후 아직 변경되지 않습니다 작업 디렉토리의 사본에서 리팩토링을
  • 커밋 작업 디렉토리는
  • 이 새로운 기능에 작업을 완료 상태에있을 때
  • 커밋은
  • 내가 시작했습니다 새로운 기능에 대한 작업을 병합 커밋을 중지 그것은

이것이 분기가 나를 도울 수 있다고 믿지만 정확한 git 명령을 찾는 데 문제가 있습니다. 나는 작업 디렉토리가 커밋 후에 변경 될 때 브렌치를 생성해야한다는 사실에 혼란스러워하며 올바른 방법으로이 문제를 처리하지 못한다.

Git 명령과 관련하여 위 워크 플로를 설명하는 올바른 방법은 무엇입니까?

답변

2

당신은 git stash를 원합니다. 작업 디렉토리가 중간 상태에 있고 커밋 할 준비가되지 않았 으면 'git stash'또는 'git stash save'일부 텍스트 ''를 실행하십시오. 그러면 작업 디렉토리가 HEAD로 돌아갑니다. 이제 변화를 만들고 커밋하십시오. 그런 다음 'git stash pop'을 실행하면 이전 중간 작업이 작업 디렉토리에 병합됩니다. 여러 개의 은신처를 사용할 수 있습니다. gith 'git stash list'목록을 작성하십시오. 합니다 ('텍스트'는 어떤 메시지를 제공하지 않는 경우, 마지막 커밋 로그가 사용됩니다.를 식별합니다.)

참조 또한 '자식은 --patch 추가'와 자식은 '--interactive'

0

자식을 추가 은신처는 당신이 찾고있는 것입니다.

2

새 기능을 시작하면 새 분기를 만들고 거기에서 작업하십시오.작업하고 있지 않은 코드를 리팩토링해야한다고 판단되면 마스터 (또는 다른 전용 분기)로 다시 전환하여 수행하십시오. 완료되면 리팩토링 브랜치를 마스터로 다시 병합하십시오. 그런 다음 업데이트 된 마스터 위에 기능 분기를 리베이스하십시오.