Programing

git이 항상 특정 브랜치에서 가져 오는 방법은 무엇입니까?

lottogame 2020. 2. 14. 21:54
반응형

git이 항상 특정 브랜치에서 가져 오는 방법은 무엇입니까?


나는 git master는 아니지만 몇 가지 다른 프로젝트로 한동안 작업 해 왔습니다. 물론 프로젝트마다 눈에 띄는 변화가없는 한 항상 git clone [repository]그리고 그 시점부터 항상 할 수 있습니다 git pull.

최근에 나는 이전 지점으로 되돌아 가야했고, 그렇게했습니다 git checkout 4f82a29. 다시 뽑을 준비가되었으므로 지점을 다시 마스터로 설정해야한다는 것을 알았습니다. 이제 직선을 사용하여 당길 수는 git pull없지만 대신을 지정해야합니다 git pull origin master. 이는 성가신 일이며 진행 상황을 완전히 이해하지 못했음을 나타냅니다.

git pull오리진 마스터를 지정하지 않고 직접 할 수없는 변경 사항은 무엇 이며 어떻게 다시 변경할 수 있습니까?

최신 정보:

-bash-3.1$ cat config
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[branch "master"]
[remote "origin"]
    url = git@github.com:user/project.git
    fetch = refs/heads/*:refs/remotes/origin/*

업데이트 2 : 분명히, 나는 원래의 방법이 잘못되었을 수도 있음을 이해하지만, 단순히 git pull다시 사용할 수 있도록이 repo를 수정해야 합니다. 현재 git pull 결과는 다음과 같습니다.

-bash-3.1$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me either.  Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull  ').
See git-pull(1) for details on the refspec.

If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:

    branch.master.remote = 
    branch.master.merge = 
    remote..url = 
    remote..fetch = 

See git-config(1) for details.

git pull어떤 분기를 병합할지 알 수 있으며 올바르게 작동하지만 git pull원래 이전보다 작동하지 않습니다 git checkout.


에서 [branch "master"]저장소의 Git 구성 파일 ( .git/config)에 다음을 추가하십시오 .

[branch "master"]
    remote = origin
    merge = refs/heads/master

이것은 Git 2에게 다음을 알려줍니다.

  1. 마스터 브랜치에있을 때 기본 리모컨은 원점입니다.
  2. 사용하는 경우 git pull어떤 원격 및 지점 지정과 함께, 마스터 분기에, 리모트 마스터 브랜치의 변경에 기본 원격 (원점)과 병합을 사용합니다.

그래도이 설정이 구성에서 제거 된 이유는 확실하지 않습니다. 다른 사람들도 게시 한 제안을 따라야 할 수도 있지만 이것이 효과가있을 수도 있습니다 (적어도 도움이 됨).

구성 파일을 직접 편집하지 않으려면 대신 명령 행 도구를 사용할 수 있습니다.

$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master

원하는 경우 다음과 같이 구성 파일을 편집하는 대신 명령 줄을 통해 이러한 옵션을 설정할 수 있습니다.

  $ git config branch.master.remote origin
  $ git config branch.master.merge refs/heads/master

또는 나와 같은 사람이며 앞으로 작업 할 수있는 프로젝트를 포함하여 모든 프로젝트에서 기본값으로 사용하려면 전역 구성 설정으로 추가하십시오.

  $ git config --global branch.master.remote origin
  $ git config --global branch.master.merge refs/heads/master

git branch --set-upstream master origin/master

config파일에 다음 정보가 추가 됩니다.

[branch "master"]
    remote = origin
    merge = refs/heads/master

그렇다면 branch.autosetuprebase = always다음을 추가하십시오.

    rebase = true

나는 정확한 기억하는 하드를 찾을 git config또는 git branchI 상류 참조를 추가하려면 다음이 명령을 사용하기 때문에 mipadi의 케이시의 답변에서와 같이 인수를 :

git pull origin master
git push -u origin master

이것은 동일한 정보를 .git / config에 추가하지만 기억하기 쉽다는 것을 알았습니다.


Git pull 은 추적 된 브랜치의 원격 저장소에서 새로운 커밋을 가져온 다음 현재 브랜치 로 병합하는 두 가지 동작을 결합합니다.

특정 커밋을 체크 아웃하면 현재 분기가 없으며 마지막 커밋을 가리키는 HEAD 만 있습니다. 따라서 git pull모든 매개 변수가 지정되지 않았습니다. 그것이 작동하지 않는 이유입니다.

업데이트 된 정보를 기반으로 원격 리포지토리를 되돌리려 고합니다. 버그를 도입 한 커밋을 알고 있다면이를 처리하는 가장 쉬운 방법 git revert은 지정된 버그 커밋을 취소하는 새로운 커밋을 기록하는 것입니다.

$ git checkout master
$ git reflog            #to find the SHA1 of buggy commit, say  b12345
$ git revert b12345
$ git pull
$ git push

변경하려는 서버이기 때문에 버그가있는 커밋을 숨기기 위해 기록을 다시 작성할 필요가 없다고 가정합니다.

병합 커밋에 버그가 도입 된 경우이 절차가 작동하지 않습니다. 결함 복구 병합 방법을 참조하십시오 .


내 자식 구성 파일을 편집하고 싶지 않아 @mipadi의 게시물에있는 정보를 따라 다음을 사용했습니다.

$ git pull origin master

Git을 구성하는 방법도 있으므로 항상 동일한 원격 브랜치를 가져와 현재 작업 사본으로 체크 아웃 한 브랜치로 푸시합니다. git ready 는 기본적으로 설정을 권장 하는 추적 분기라고합니다 .

현재 작업 디렉토리 위의 다음 저장소의 경우 :

git config branch.autosetupmerge true

모든 Git 리포지토리에 대해 다르게 구성되지 않은 경우 :

git config --global branch.autosetupmerge true

IMHO의 종류이지만 특정 분기항상 현재 분기 인 경우 도움이 될 수 있습니다 .

당신이 한 경우 branch.autosetupmerge로 설정 true하고 처음으로 분기를 체크 아웃, 힘내 해당 원격 브랜치를 추적에 대해 당신을 말할 것이다 :

(master)$ git checkout gh-pages
Branch gh-pages set up to track remote branch gh-pages from origin.
Switched to a new branch 'gh-pages'

Git은 자동으로 해당 지점으로 푸시됩니다.

(gh-pages)$ git push
Counting objects: 8, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 1003 bytes, done.
Total 6 (delta 2), reused 0 (delta 0)
To git@github.com:bigben87/webbit.git
   1bf578c..268fb60  gh-pages -> gh-pages

그것을 마스터로 만드는 방법에 대한 즉각적인 질문은 당신이 말하는 것을해야합니다. 분기 구성에서 가져올 참조 스펙을 지정하십시오.

[branch "master"]
    merge = refs/heads/master

참고 URL : https://stackoverflow.com/questions/658885/how-do-you-get-git-to-always-pull-from-a-specific-branch



반응형