프로젝트 진행중에 이전 버전으로 되돌리고 싶을경우 사용하는 여러 방법에 대해 알아보자.
clone (복제)
원래의 진행중이던 프로젝트에 다른 사람이 조인해야 하는 상황 또는 로컬에 진행프로젝트가 없을 등의 경우 원격저장소 상의 프로젝트를 현재 사용자의 로컬로 불러오고자 할 때 'clone'이라는 것을 사용하여 네트워크상의 프로젝트를 가져오는것을 의미한다.
▶ clone방법
clone하는 방법에 대해서는 여러가지 방법이 있지만 SourceTree를 이용한 방법을 알아보자.
- 소스트리에서 'Clone'버튼을 누르고, 'Source Path/URL'입력란에 github에서 해당 프로젝트의 clone url을 복사하여 붙여넣고, 'Destination Path' 입력란에 해당 프로젝트를 작업할 로컬의 경로를 적어주고 Clone버튼을 누르면 된다.
- 이렇게 하면 설정된 Destination Path의 경로로 해당 프로젝트가 다운받아지고,
숨김폴더로 .git 폴더또한 생성되게 된다.
( 이는 다른 환경에서 업로드되어 있는 프로젝트를 가져올 때도 유용하게 사용할 수 있다. )
Push
원격 저장소에 연결되어 있는 상태에서 로컬의 프로젝트 수정사항들을 원격저장소로 업데이트(동기화)시키는것
Pull
원격 저장소에 연결되어 있는 상태에서 원격저장소의 프로젝트를 로컬프로젝트로 업데이트(동기화)시키는 것
▶ 작업 전 pull은 필수!
협업을 할 때, 반드시 작업 시작 전 pull을 하여 원격저장소와 동기화 시켜준 후 작업을 하도록 하여야 한다.
그렇게 하지 않을 경우 나중에 작업내용이 심각하게 꼬여버릴 수 있다.
▶ push오류 시 pull실행후 push
협업 시 자신이 push하기 전 다른 팀원이 먼저 push해버린 경우, git은 그 다음 push를 거절한다.
로컬 저장소가 가지고 있는 버전 중 원격저장소의 최신버전이 반드시 존재해야 push가 가능한데, 로컬이 가지고 있지 않은 버전이 원격저장소 상에 올라가 있는 경우 push를 거절당한다.
- 이러한 경우에는 현재 작업상태에서 pull을 먼저 진행한 후 일어나는 충돌 사항을 수정한 후에 다시 push를 진행 해주면 된다.
( 이때, 충돌이 일어나는 이유는 pull을 할 경우에 자동으로 원격저장소의 버전과 현재 작업중인 버전을 병합시켜주기 때문이다. )