Клон просто стабильный и еще одна ветка в git?

Нет, если политика безопасности Java позволяет Spring изменять права доступа для поля, защищенного пакетом, сеттер не требуется.

16
задан Swamy g 23 October 2009 в 19:38
поделиться

4 ответа

By default git clone would fetch all branches, but those branches would be stored as remote-tracking branches: for example branch 'dev_XXXXX' would be stored as 'origin/dev_XXXXX' (with 'refs/remotes/origin/dev_XXXXX' as full name). Those remote-tracking branches wouldn't be visible in git branch output: you would need git branch -r to list remote-tracking branches (or git branch -a to list all branches). If those branches do not diverge too much from mainline, they wouldn't take too much disk space in repository. Therefore I don't see why you want to clone only selected branches.

Nevertheless if you want to have a clone with only two selected branches, you can do it like this:

  1. First, create new empty repository

    $ mkdir repoclone
    $ cd repoclone/
    $ git init
    Initialized empty Git repository in /home/user/repoclone/.git/
    
  2. Then add your repository under the name 'origin' (just like "git clone" would name it), requesting tracking of only two branches: 'master' and 'dev_swamy', using "git remote" command. Check that it was added correctly.

    $ git remote add -t master -t dev_swamy origin user@example.com:repo.git
    $ git remote 
    origin
    $ git remote show origin
    * remote origin
     Fetch URL: user@example.com:repo.git
     Push URL: user@example.com:repo.git
     HEAD branch: master
     Remote branches:
     master new (next fetch will store in remotes/origin)
     dev_swamy new (next fetch will store in remotes/origin)
    

    Если стабильная ветка называется «стабильной», а не «главной», вам, конечно, придется изменить приведенный выше пример. Также существует опция -m , если вы хотите, чтобы указанная ветвь была ветвью по умолчанию на удаленном компьютере.

  3. Получение из «источника» (вы также можете сделать это, используя -f ] параметр "git remote add" выше):

     $ git fetch
    удаленный: Подсчет объектов: 282, готово.
    remote: Сжатие объектов: 100% (193/193), готово.
    удаленный: всего 282 (дельта 82), повторно используется 0 (дельта 0)
    Прием объектов: 100% (282/282), 81.30 Кбайт | 135 Кбайт / с, готово.
    Устранение дельт: 100% (82/82), выполнено.
    От user@example.com : repo.git
     * [новая ветка] master -> origin / master
     * [новая ветка] dev_swamy -> origin / dev_swamy
    От user@example.com : repo.git
     * [новый тег] v1.0 -> v1.0
     * [новый тег] v1.0.1 -> v1.0.1
     * [new tag] v1.1 -> v1.1
    
  4. Set up local branch 'master' (where you would do your work) to follow 'origin/master' (to have 'origin/master' as upstream), just like "git clone" would do:

    $ git checkout -t origin/master
    Branch master set up to track remote branch master from origin.
    Already on 'master'
    

    You can repeat this for branch 'dev_swamy'.

  5. Now you can see how config file looks like. You can get exactly the same result by editing .git/config file to look like the following, and then doing "git fetch".

    $ cat .git/config # or just open this file in your editor
    [core]
     repositoryformatversion = 0
     filemode = true
     bare = false
     logallrefupdates = true
    [remote "origin"]
     url = user@example.com:repo.git
     fetch = +refs/heads/master:refs/remotes/origin/master
     fetch = +refs/heads/dev_swamy:refs/remotes/origin/dev_swamy
    [branch "master"]
     remote = origin
     merge = refs/heads/master
    

Don't forget to introduce yourself to Git before starting work on repository (i.e. set 'user.name' and 'user.email' config variables; usually in per-user config file)!

26
ответ дан 30 November 2019 в 17:53
поделиться

Я думаю, что более важный вопрос - что будут делать другие подталкивать, а не то, что вы будете клонировать или тянуть. Поскольку каждый разработчик работает над своей собственной веткой, возникает другой вопрос: как получить общую базу кода. Сливают ли разработчики свои ветки для освоения? И перемещают ли они затем свою измененную основную ветку в центральный репозиторий? Если это так, то вы все равно не сможете вытащить ветки других разработчиков.

Если это не так, я не понимаю, как вы можете сформировать работающую команду.

И в заключение подумал: «Мне было бы любопытно узнать, почему бы вам не хотелось клонировать ветки других разработчиков в свой репозиторий?»

0
ответ дан 30 November 2019 в 17:53
поделиться

Если вы клонируете, все ревизии во всех ветвях клонируются вместе, но клонированный репозиторий по умолчанию проверяет мастер.

Просто взять выбранные ветки сложнее, поскольку git на самом деле не думает, что вы должно работать именно так. Вы должны вручную опустить ветки:

mkdir repoclone
cd repoclone
git init
git remote add origin git://remote/url
git fetch origin master:master
git fetch origin dev_XXX:dev_XXX

Выше я знал, что работает. Однако, если вы хотите настроить репозиторий git, который работает как обычно, просто имеет более узкое представление о его удаленных ветвях? Вы можете сделать это довольно легко:

 mkdir repoclone
cd репоклонировать
git init
git удаленный добавить источник git: // удаленный / URL

# теперь откройте .git / config для редактирования в вашем редакторе
# заменить следующую строку (захватить все удаленные ветки)
выборка = + ссылки / головы / *: ссылки / удаленные / происхождение / *

# заменить строками, в которых указано, какие именно ветки вам нужны
выборка = + ссылки / головы / мастер: ссылки / удаленные / происхождение / мастер
fetch = +refs/heads/dev_XXX:refs/remotes/origin/dev_XXX

# save the file, now run

git fetch
4
ответ дан 30 November 2019 в 17:53
поделиться

Другой способ сделать это - избежать прямого клонирования, а вместо этого вручную добавить пульт с настраиваемым набором ссылок на выборку.

например

mkdir myclone
cd myclone
git init

git remote add origin url://origin.repo

# Add fetch rules for the branches that we want to track
git config remote.origin.fetch +refs/heads/master:+refs/remotes/origin/master
git config --add remote.origin.fetch +refs/heads/dev_swamy:+refs/remotes/origin/dev_swamy

# fetch now fetches just what we need, subsequently it will do incremental fetches
git fetch

# Creating local branches tracking the remote branches
git checkout -b master origin/master
git branch dev_swamy origin/dev/swamy
0
ответ дан 30 November 2019 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: