2012-06-24 6 views
0

나는 지금 당장 느린 연결이 느리다. 우리 회사의 자식 서버에 새 분기를 푸시해야한다. SVN을 사용하면 원하는 경우 원격 SVN 서버에 파일을 하나씩 커밋/푸시 할 수 있습니다. 과거에는 연결 속도가 느 렸지만 한 번에 폴더를 업로드 할 수 있었지만 잘 작동했습니다. git에서 비슷한 것을 사용할 수 있습니다.섹션에서 git 저장소를 푸시 할 수 있습니까?

+0

시도해 보셨습니까? 힘내 모든 것을 압축 (등등), 그래서 그것은 좋은 기회, 그것은 너무 느린 연결에서 작동합니다. – KingCrunch

+0

아래의 해답에 더하여, 사용하고있는 프로토콜에 따라,'git push'는 전송을 압축하고 최소한의 양의 데이터를 보내서 동기화를 보장하는 데 꽤 좋습니다. – simont

답변

1

, 설명서는 말한다 :

<src>이 자주 밀어 싶은 지점의 이름하지만 임의의 "SHA-1이 될 수 있습니다 expression "(예 : master ~ 4 또는 HEAD) (gitrevisions (7) 참조).

결과적으로 개별 커밋을 시간순으로 정리 한 다음 상세한 refspec에서 개별 커밋을 원격으로 푸시 할 수 있어야합니다. 예를 들면 다음과 같습니다.

# Get all commits not in remotes/origin/master and 
# sort in chronological order. 
commits_list=$(
    git log --oneline --reverse refs/remotes/origin/master..HEAD | 
    awk '{print $1}' 
) 

# Push each commit one-by-one to origin/master. 
for commit in $commits_list; do 
    git push origin $commit:refs/heads/master 
done 

로컬로 테스트했는데 의도 한대로 작동하는 것 같습니다. 시도 해봐; 그 밖의 것이 없다면 올바른 방향으로 향하게 될 것입니다.

0

분기가 하나의 큰 변경을 추가하는 많은 작은 확약으로 구성된 경우, 커미트를 단계적으로 밀어서 적용 할 수 있습니다. 아마도 코드가 회사 서버의 코드와 다른 지점에서 시작하여 지점에서 커밋 범위를 단계적으로 끌어 와서 각 범위를 끌어온 후 밀어 넣기 만하면됩니다.

하지만 별도의 폴더/파일을 밀어 넣을 수는 없습니다. 저는 가능하지 않다는 것을 확신합니다. 오히려 커밋이 원자적인 엔티티가되어야한다는 git의 요구와 반대가됩니다. 당신이 자식 푸시 (1)을 수행 할 때