programing

원산지/마스터릿 위치는 어떻게 찾고 변경은 어떻게 하나요?

starjava 2023. 7. 16. 12:26
반응형

원산지/마스터릿 위치는 어떻게 찾고 변경은 어떻게 하나요?

저는 Git newbie입니다.최근에 레일즈 프로젝트를 서브버전에서 깃으로 옮겼습니다.저는 여기서 튜토리얼을 따랐습니다: http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/

저는 또한 unfuddle.com 을 사용하여 제 코드를 저장하고 있습니다.통근/퇴근 열차에서 Mac 노트북을 변경한 후 다음 명령을 사용하여 네트워크에 연결되어 있을 때 풀도록 합니다.

git push unfuddle master

배포에 Capistrano를 사용하고 마스터 브랜치를 사용하여 풀 저장소에서 코드를 끌어옵니다.

최근에 랩톱에서 "git status"를 실행할 때 다음 메시지가 표시되었습니다.

# On branch master
# Your branch is ahead of 'origin/master' by 11 commits.
#
nothing to commit (working directory clean)

그리고 왜 그런지 헷갈립니다.제 노트북이 기원인 줄 알았는데요...하지만 제가 원래 Subversion에서 철수했거나 Unfuddle로 이동한 사실이 메시지를 표시하는 원인인지는 모르겠습니다.어떻게 해야 합니까?

  1. Git가 생각하는 '원산지/마스터'가 어디에 있는지 알아보세요.
  2. 다른 곳에 있는 경우 노트북을 어떻게 '오리진/마스터'로 전환합니까?
  3. 이 메시지를 가져가세요.그것은 Git가 무언가에 대해 불행하다고 생각하게 만듭니다.

내 맥은 Git 버전 1.6.0.1을 실행하고 있습니다.


가 행할때실을 할 때.git remote show origin처럼, 저는 과 같은것을 : dbr이 제것처럼얻습, 저는다을니다음안.

~/Projects/GeekFor/geekfor 10:47 AM $ git remote show origin
fatal: '/Users/brian/Projects/GeekFor/gf/.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly

가 행할때실을 할 때.git remote -v아리스토텔레스 파갈치스가 제안한 바와 같이, 저는 다음과 같은 것을 얻습니다.

~/Projects/GeekFor/geekfor 10:33 AM $ git remote -v
origin  /Users/brian/Projects/GeekFor/gf/.git
unfuddle    git@spilth.unfuddle.com:spilth/geekfor.git

흥미롭게도, 저는 지금 제 프로젝트를 진행하고 있습니다.geekfor디렉토리에는 내 발신지가 로컬 컴퓨터라고 나와 있습니다.gf디렉토리입니다.는 어요믿을 믿습니다.gfSubversion에서 Git로 프로젝트를 변환할 때 사용한 임시 디렉터리이며 아마도 풀려고 했던 곳일 것입니다.그럼 제가 언퍼들에서 새로운 복사본을 확인한 것 같습니다.geekfor디렉토리입니다.

그래서 저는 dbr의 조언에 따라 다음을 수행해야 할 것 같습니다.

git remote rm origin
git remote add origin git@spilth.unfuddle.com:spilth/geekfor.git

저는 "당신의 지점이 앞서가고 있습니다..."라는 메시지가 무엇인지 설명하기 위해 이 질문을 하게 되었습니다.평균, 일반적인 git 체계에서.여기서는 그에 대한 답이 없었지만, 현재 "당신의 지점이 '오리진/마스터'보다 앞서 있습니다"라는 문구를 검색할 때 이 질문이 구글 상단에 표시되기 때문에, 그 이후로 메시지의 진정한 의미가 무엇인지 알게 되었고, 여기에 정보를 게시하려고 생각했습니다.

그래서, 저는 기트 초보자로서, 제가 필요로 하는 답은 분명히 새로운 답이었다는 것을 알 수 있습니다.구체적으로, "당신의 지점이 앞서고 있는 것은...구문은 로컬 리포지토리에 추가하고 커밋했지만 원본으로 푸시한 적이 없는 파일이 있음을 의미합니다.이 메시지의 의도는 적어도 저에게는 "git diff"가 차이를 보이지 않았다는 사실로 인해 더욱 혼란스럽습니다."gitdiff origin/master"를 실행하고 나서야 로컬 리포지토리와 원격 마스터 간에 차이점이 있다는 말을 들었습니다.

그래서, 분명히 하자면:


"당신의 지부가 앞서 있습니다."=> 원격 마스터에 푸시해야 합니다."gitdiff origin/master"를 실행하여 로컬 리포지토리와 원격 마스터 리포지토리의 차이점을 확인합니다.


이것이 다른 신입들에게 도움이 되기를 바랍니다.

또한 마스터가 실제로 "원격"이 아닐 수도 있고 "원격"이 규약 등에서 사용하는 재구성 가능한 이름이라는 점과 같이 이 솔루션을 부분적으로 무효화할 수 있는 구성 세부 사항이 있다는 점도 알고 있습니다.하지만 초보자들은 그런 것에 신경 쓰지 않습니다.우리는 간단하고 솔직한 대답을 원합니다.시급한 문제를 해결한 후에 세부 사항에 대해 나중에 읽을 수 있습니다.)

1.Git가 생각하는 '오리진/마스터'의 사용처 확인

git remote show origin

..그것은 무언가를 돌려줄 것입니다.

* remote origin
  URL: me@remote.example.com:~/something.git
  Remote branch merged with 'git pull' while on branch master
    master
  Tracked remote branch
    master

원격은 기본적으로 원격 저장소에 대한 링크입니다.그럴 때면..

git remote add unfuddle me@unfuddle.com/myrepo.git
git push unfuddle

..git는 추가한 주소로 변경사항을 푸시합니다.원격 저장소를 위한 책갈피와 같습니다.

을 할 때git status원격에 누락된 커밋이 있는지(로컬 리포지토리에 포함), 누락된 경우 커밋 수를 확인합니다.모든 변경사항을 "원본"으로 푸시하면 두 변경사항이 모두 동기화되므로 메시지가 표시되지 않습니다.

2.다른 곳에 있는 경우 노트북을 어떻게 '오리진/마스터'로 전환합니까?

이것을 하는 것은 의미가 없습니다."오리진"이 "노트북"으로 이름이 바뀌었다고 칩니다. 절대 원하지 않습니다.git push laptop노트북에서 다운로드할 수 있습니다.

오리진 리모컨을 제거하려면...

git remote rm origin

이렇게 하면 파일 내용/리비전 기록 측면에서 아무것도 삭제되지 않습니다.이렇게 하면 "지점이 앞섰습니다..."가 중지됩니다.메시지(리모트가 사라졌기 때문에 더 이상 저장소를 원격과 비교하지 않습니다.

한 가지 기억해야 할 것은 특별한 것이 없다는 것입니다.origin그것은 단지 git가 사용하는 기본 이름일 뿐입니다.

는 Git는사다니합용▁g를 합니다.origin같은 일을 할 때는 기본적으로 할 수 있습니다.git push또는git pull따라서 자주 사용하는 리모컨이 있다면(당신의 경우에는 unfudle) unfudle을 "origin"으로 추가하는 것이 좋습니다.

git remote rm origin
git remote add origin git@subdomain.unfuddle.com:subdomain/abbreviation.git

또는 set-url을 사용하여 하나의 명령으로 위의 작업을 수행합니다.

git remote set-url origin git@subdomain.unfuddle.com:subdomain/abbreviation.git

그러면 간단하게 할 수 있습니다.git push또는git pull업트하기 신대데를 합니다.git push unfuddle master

작업 디렉토리가 있는 곳과 유사한 문제가 있었습니다.ahead of origin by X commits 러나그나git pull결과적으로Everything up-to-date저는 이 충고를 따라 겨우 그것을 고쳤습니다.비슷한 문제를 가진 다른 사람에게 도움이 될까봐 이 글을 올립니다.

기본 해결 방법은 다음과 같습니다.

$ git push {remote} {localbranch}:{remotebranch}

괄호 안의 단어를 원격 이름, 로컬 지점 이름 및 원격 지점 이름으로 대체해야 합니다. 예를 들어,

$ git push origin master:master

로컬 캐시된 오리진 마스터 버전(오리지널/마스터)과 실제 오리진 마스터 사이에 차이가 있을 수 있습니다.

실행하는 경우git remote update를 다시 합니다.

이 질문에 대한 일반적인 답변을 봅니다.

git pull origin 마스터와 git pull origin/master 간의 차이

저는 제 노트북이 기원이라고 생각했습니다.

말도 안 되는 소리야: 그건좀말안되소는리야도▁that소리야되는.origin일반적으로 다른 사용자의 변경사항을 가져오거나 가져오는 기본 원격 리포지토리를 말합니다.

어떻게 해야 합니까?

  1. git remote -v당신에게 무엇을 보여줄 것입니다.originis;origin/master한 "자용다니"의 당신의 "bookmark입니다.masterorigin및 자신의 저장소master에 대한 추적 분기입니다.origin/master 모든 것이 당연한 것입니다.

  2. 당신은 모릅니다.적어도 리포지토리가 기본 원격 리포지토리라는 것은 의미가 없습니다.

  3. 아닙니다.즉, 원격 저장소에 없는 커밋을 로컬로 너무 많이 수행했다는 것입니다(해당 저장소의 마지막 알려진 상태에 따름).

[ 솔루션 ]

$ git push origin

이것으로 해결되었습니다.노트북의 마스터를 원격 서버의 "원본"과 동기화했습니다.

저는 이 문제로 어려움을 겪고 있으며 제가 보기에 그 질문에 대한 이전 답변은 없습니다.저는 제 문제를 분명히 할 수 있는지 알아보기 위해 문제를 다시 원래대로 되돌렸습니다.

새 리포지토리(rep1)를 만들고 파일 하나를 넣고 커밋합니다.

mkdir rep1
cd rep1
git init
echo "Line1" > README
git add README
git commit -m "Commit 1"

rep1의 복제본을 생성하여 rep2라고 부릅니다.rep2 내부를 보니 파일이 정확합니다.

cd ~
git clone ~/rep1 rep2
cat ~/rep2/README

rep1에서 파일을 한 번 변경하고 커밋합니다.그런 다음 rep1에서 rep2를 가리키는 리모컨을 만들고 변경사항을 푸시합니다.

cd ~/rep1
<change file and commit>
git remote add rep2 ~/rep2
git push rep2 master

이제 제가 rep2에 들어가서 'git status'를 할 때 저는 제가 출발지보다 앞서 있다는 말을 듣습니다.

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   README
#

rep2의 README는 두 번째 커밋 이전의 원래 상태입니다.제가 한 유일한 수정 사항은 rep1이고 제가 하고 싶었던 것은 rep2로 밀어내는 것입니다.내가 이해하지 못하는 것은 무엇입니까?

당신이 "밀어내기"를 기다리고 있습니다.시도:

$ git push

최근에 이런 문제가 있었는데 더 이상 필요하지 않은 파일을 삭제했기 때문이라고 생각했습니다.문제는 git이 파일이 삭제된 것을 모르고 서버에 아직 파일이 남아 있는 것으로 보인다는 것입니다. (server = origin)

그래서 뛰었습니다.

git rm $(git ls-files --deleted)

그리고 나서 커밋과 푸시를 실행했습니다.

그것으로 문제가 해결되었습니다.

저도 풋내기예요.'당신의 브랜치가 N 커밋으로 오리진/마스터보다 앞섰습니다' 메시지에서도 같은 문제가 있었습니다.제안된 'git diff origin/master'를 수행하면 유지하고 싶지 않은 몇 가지 문제가 나타납니다.그래서...

Git 클론이 호스팅용이었고 마스터 repo의 정확한 복사본을 원했고 로컬 변경 사항을 유지하는 것에 관심이 없었기 때문에 전체 repo를 저장하고 새 repo를 만들기로 결정했습니다.

(호스트 시스템)

mv myrepo myrepo
git clone USER@MASTER_HOST:/REPO_DIR myrepo

편의를 위해 호스팅 시스템의 복제본을 변경하곤 했습니다.이제 그만.마스터에 변경 사항을 적용하고, 거기에 커밋한 다음, 당기기를 수행합니다.이렇게 하면 호스팅 시스템의 Git 클론이 완전히 동기화될 수 있기를 바랍니다.

/나라

저도 제 레포에 대해 같은 것이 궁금했습니다.제 경우에는 더 이상 누르지 않는 오래된 리모컨이 있어서 제거해야 했습니다.

원격 목록 가져오기:

git remote

필요 없는 항목 제거

git remote rm {insert remote to remove}

사용자 자신의 커밋이 수행되기 전에 특정 커밋으로 재설정할 수 있습니다.

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
nothing to commit (working directory clean)

사용하다git log로컬 변경이 발생하기 전에 수행한 커밋이 무엇인지 확인합니다.

$ git log
commit 3368e1c5b8a47135a34169c885e8dd5ba01af5bb
...
commit baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e
...

로컬 커밋을 기록하고 이전 커밋으로 직접 재설정합니다.

git reset --hard baf8d5e7da9e41fcd37d63ae9483ee0b10bfac8e

다음을 사용하여 원격 저장소에 푸시했을 때 "지점이 nn 커밋에서 '오리진/마스터'보다 앞서 있습니다."라는 문제가 발생했습니다.

git push ssh://git@xxx.repositryhosting.com/yyy/zzz.git

원격 주소가 .git/FETCH_HEAD 파일에 있고 다음을 사용하는 것을 발견했을 때:

git push

문제가 사라졌습니다.

언급URL : https://stackoverflow.com/questions/277077/how-can-i-find-the-location-of-origin-master-in-git-and-how-do-i-change-it

반응형