2010-10-25 17 views
5

Jako kontynuacja do my question about unavailable branches after svn to git migration, mam inny problem: Nie mogę przenieść nowych gałęzi do mojego centralnego repozytorium Git.Dlaczego mam problemy z wypychaniem nowych gałęzi do mojego repozytorium Git?

$ git clone ssh://server/opt/git/our_app.git 
$ cd our_app 
$ git branch my-test-branch 
$ git checkout my-test-branch 
$ echo test > test.txt 
$ git add test.txt 
$ git commit test.txt -m "test commit" 
[master ed81ec0] test commit 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 test.txt 
$ git push 
Everything up-to-date 

To nie przesyła mojej gałęzi do serwera. Kolega poradził mi zajrzeć do mojego .git/config, który wygląda tak:

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = ssh://server/opt/git/our_app.git 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 

byłem adviced ręcznie dodać wpis przycisku:

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = ssh://server/opt/git/our_app.git 
    push = refs/heads/*:refs/heads/* 

Teraz wszystko wyglądało lepiej:

$ git push 
Password: 
Counting objects: 1, done. 
Delta compression using up to 1 threads. 
Compressing objects: 100% (1/1), done. 
Writing objects: 100% (1/1), 5 bytes, done. 
Total 1 (delta 1), reused 0 (delta 0) 
To ssh://server/opt/git/our_app.git 
* [new branch]  my-test-branch -> my-test-branch 

Podczas gdy to działało, nadal wydaje się być hackerem. Jaki jest właściwy sposób na zrobienie tego?

+3

Domyślnym zachowaniem dla 'git push' jest wypychanie gałęzi, które mają dopasowane miejsca docelowe na zdalnym końcu. Nowe oddziały nie mają takich pasujących miejsc docelowych. Możesz zmienić domyślne zachowanie za pomocą zmiennej konfiguracyjnej 'push.default'. – Amber

Odpowiedz

4

do pchania nowy oddział używać git push origin my-test-branch

4

Jeśli chcesz po prostu pchnąć swój oddział o tej samej nazwie oddziału następnie wystarczy użyć

git push origin my-test-branch 

Jeśli chcesz, aby zmiany pojawiają się na gałęzi mistrzowskiej repo pochodzenie:

git push origin my-test-branch:master 
4

można przekazać oddział do zdalnego repozytorium z

git push origin my-test-branch

można następnie wyświetlić wszystkie zdalnych oddziałów z

git branch -r

Here's an introduction do tworzenia/usuwania zdalnych oddziałów.