2017-10-23 14 views
0

나는 나의 유스 케이스에 맞는 답을 찾을 수 없었습니다. 그래서 누군가가 전에 이것을 해내었고 해결책이 있기를 바랍니다.신뢰성있게 git working copy를 업데이트하십시오.

나는 git을 사용하여 aws 인스턴스의 변경 사항을 배포하려고합니다. 예를 들어 생산을 위해 master 브랜치를 사용합니다.

git fetch 
git checkout -f origin/<branchname> 
git pull origin <branchname> 
git submodule update --init --recursive 
git submodule update --recursive --remote 

내가이 제대로 머리 상태를 분리 핸들 것이라고 생각 : 나는 다음은 어떤 경우에 작동 할 수있는 솔루션을 알아 냈다고 생각했다. 그것은 잠시 동안 일하는 것 같았지만, 최근 업데이트로, 그것은 단지 로컬 브랜치를 체크하고 리모트에서 변경되지 않았습니다.

그래서 기본 요건은 다음과 같습니다 수정/작업 주위에 분리 된 머리 상태 업데이트/새로운 서브 모듈

여기

입니다 추가 REPO

[email protected]:/redacted$ git fetch 
remote: Counting objects: 22, done. 
remote: Compressing objects: 100% (22/22), done. 
remote: Total 22 (delta 7), reused 0 (delta 0) 
Unpacking objects: 100% (22/22), done. 
From redacted:redacteduser/redactedrepo 
    b1cceb5..ee34124 master  -> origin/master 
    08ec66e..ee34124 development -> origin/development 
Fetching submodule redacted/redactedsubmodule 
remote: Counting objects: 34, done. 
remote: Compressing objects: 100% (34/34), done. 
remote: Total 34 (delta 27), reused 0 (delta 0) 
Unpacking objects: 100% (34/34), done. 
From redacted:redacteduser/redactedsubrepo 
    4d52d03..7019d5a master  -> origin/master 
[email protected]:/redacted$ git checkout -f origin/master 
Note: checking out 'origin/master'. 

You are in 'detached HEAD' state. You can look around, make experimental 
changes and commit them, and you can discard any commits you make in this 
state without impacting any branches by performing another checkout. 

If you want to create a new branch to retain commits you create, you may 
do so (now or later) by using -b with the checkout command again. Example: 

    git checkout -b <new-branch-name> 

HEAD is now at ee34124... redactedcommitmessage 
[email protected]:/redacted$ git pull origin master 
From redacted:redacteduser/redactedrepo 
* branch   master  -> FETCH_HEAD 
Already up-to-date. 
[email protected]:/redacted$ git submodule update --init --recursive 
Submodule path 'redacted/redactedsubmodule': checked out '7019d5a442cc5f69e99f3434de23a646c563589a' 
[email protected]:/redacted$ git submodule update --recursive --remote 
<no output from this command> 

에 터미널에서 위의 단계를 실행 한 출력의 대부분 그것은 master 브랜치에서 새로운 커밋을 업데이트하지 않았다는 것을 가리 키지는 않는다. 그래서 여기

[email protected]:/redacted$ git status 
HEAD detached at origin/master 
nothing to commit, working directory clean 
[email protected]:/redacted$ git checkout master 
M  redacted/redactedsubmodule 
Previous HEAD position was ee34124... redactedcommitmessage 
Switched to branch 'master' 
Your branch is behind 'origin/master' by 5 commits, and can be fast-forwarded. 
    (use "git pull" to update your local branch) 
[email protected]:/redacted$ git pull 
Updating b1cceb5..ee34124 
Fast-forward 
redactedlistoffiles 
7 files changed, 94 insertions(+), 15 deletions(-) 
create mode 100644 redactedfile1 
create mode 100644 redactedfile2 

을 볼 수있는 REPO는 여전히 5 뒤에 범했다대로 난 다음 내가 가져 오기, 체크 아웃 말했다 분기에 당겨 사용하더라도, 좀 더 많은 물건을 달렸다. 명령을 재정렬하거나 연속으로 두 번 실행해야합니까? 난 당신이 분리 된 머리에있는

+0

분리 된 헤드에서 작업하는 이유는 무엇입니까? git fetch git checkout git pull origin

+0

나는 가끔씩 분리되는 이유를 모른다. 그것의 지금 붙어 있던 국가에서, 나는 희망한다. 그러나 나는 그것이 분리 된 상태로 다시 도착한 경우를 대비하여 여전히 준비되기를 원합니다. 단계를 다시 붙이시겠습니까? – fredlllll

+0

리모컨에있는 장소를 git에 제공했기 때문에 연결이 끊어졌습니다. : : git checkout -f origin/, git checkout , o-f 또는 origin / –

답변

1

이 필요하지 않은 사람이 대답을 사전에

감사를 알고 희망 :에서 "/ -f 기원"

git fetch
git checkout <branchname>
git pull origin <branchname>

이를 제거하여 계산 명령