programing

어떻게 하면 항상 특정 지점에서 끌어낼 수 있을까요?

powerit 2023. 5. 8. 22:29
반응형

어떻게 하면 항상 특정 지점에서 끌어낼 수 있을까요?

저는 기트 마스터는 아니지만, 몇 가지 다른 프로젝트로 지금까지 그것과 함께 작업해 왔습니다.각각의 프로젝트에서, 나는 항상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다음과 같습니다.

-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병합할지,하지만, 할분기병올작, 고게하지만동르바그리합▁which만.git pull원래 내 이전과 같이 작동하지 않습니다.git checkout.

[branch "master"]파일에 ..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 branch미파디와 케이시의 답변과 같은 인수이므로 다음 두 가지 명령을 사용하여 업스트림 참조를 추가합니다.

git pull origin master
git push -u origin master

이렇게 하면 .git/config에 동일한 정보가 추가되지만 기억하기가 더 쉽습니다.

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

당신이 변경하고자 하는 것은 당신의 서버이기 때문에, 나는 당신이 버그 커밋을 숨기기 위해 기록을 다시 작성할 필요가 없다고 생각합니다.

병합 커밋에서 버그가 발생한 경우 이 절차는 작동하지 않습니다.오류 병합 방법을 참조하십시오.

Git를 구성하는 방법도 있습니다. Git는 항상 동일한 원격 분기를 현재 작업 복사본에 체크아웃된 분기로 당기고 밀어넣습니다.Gitready가 기본적으로 설정을 권장하는 추적 분기라고 합니다.

현재 작업 디렉토리 위에 있는 다음 리포지토리의 경우:

git config branch.autosetupmerge true

달리 구성되지 않은 모든 Git 저장소의 경우:

git config --global branch.autosetupmerge true

일종의 마법, IMHO이지만 특정 분기가 항상 현재 분기인 경우에 도움이 될 수 있습니다.

당신이 가지고 있는branch.autosetupmerge로 설정한.true처음으로 지점을 체크아웃하면 Git에서 해당 원격 지점을 추적하는 방법을 알려줍니다.

(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

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

$ git pull origin master

어떻게 하면 그것을 마스터로 만들 수 있는지에 대한 당신의 즉각적인 질문, 당신은 그것이 말하는 것을 할 필요가 있습니다.분기 구성에서 가져올 refspec을 지정합니다.

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

몇 , 는 이 할 수 .git pull자동으로 분기를 참조하거나 참조하지 않습니다.

실면을하행을 하면,git remote show originremote의 ), 는 (remote ), git는 이 기본 참조가 존재하는지 여부git pull그렇지 않으면.

다음은 git 설명서에서 가져온 샘플 출력입니다.

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/schacon/ticgit
  Push  URL: https://github.com/schacon/ticgit
  HEAD branch: master
  Remote branches:
    master                               tracked
    dev-branch                           tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

Git Pull용으로 구성된 Local branch가 표시되는 부분에 유의하십시오.

이경에는우,,git pull을 참조할 것입니다.git pull origin master

처음에는 git clone을 사용하여 저장소를 복제한 경우 이러한 작업이 자동으로 처리됩니다.그러나 git remote add를 사용하여 수동으로 원격을 추가한 경우 git 구성에서 이러한 항목이 누락됩니다. " ' pull됩니다.git remote show origin.

에 대한 경우 합니다.git pull이미 다른 답변에 의해 설명되었습니다.

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

반응형