Как использовать Git для обновления моего каталога и другого содержимого? - PullRequest
0 голосов
/ 30 октября 2011

У меня есть каталог, как показано ниже:

/var/tmp/main
.. plugin1
.... mysource.c
.. plugin2
.... mysource.c
.. plugin3
.... mysource.c

И я создал хранилище.После этого я применил следующее:

$ cd /var/tmp/main
$ git init
$ echo "hello git plz work" >> README
$ git add README
$ git commit -m 'first commit works'
$ git remote add origin git@...../main.git

$ git push origin master

Я также попробовал

$ git add .
$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   folder1 (modified content)
#   modified:   folder2 (modified content)
#   modified:   folder3 (modified content)
#   modified:   folder4 (modified content)
#   modified:   folder5 (modified content)
#   modified:   folder6 (modified content, untracked content)
#   modified:   folder7 (modified content)
#   modified:   library (modified content, untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

$ git commit -m 'Suggested by Stack experts'
$ git push

Пробовал также .gitignore

$ cat .gitignore 
*.[oa]
*.pyc
*.gcda
*.gcno
*.la
*.lo
*.loT
*.sw[po]
*.tar.*
*~
.deps
.libs
ABOUT-NLS
INSTALL
Makefile
Makefile.in
aclocal.m4
autom4te.cache
autoregen.sh
compile
config.guess
config.h
config.h.in
config.log
config.rpath
config.status
config.sub
configure
depcomp
install-sh
libtool
ltmain.sh
missing
stamp-h1

То же самое до сих пор ...

Все готово, но через 14 часов я все еще не вижу все свои каталоги в Git, я вижу только файл README, показывающий.

Как я могу зафиксировать все?(следующий http://scottr.org/presentations/git-in-5-minutes/)

Ответы [ 3 ]

3 голосов
/ 30 октября 2011

Вот простой способ добавить пустые каталоги:

//create some empty, gitignore files.
touch ./someDir/.gitignore
touch ./someOtherDir/.gitignore

... и т.д .. * * 1004

git add ./someDir/.gitignore
git add ./someOtherDir/.gitignore

... и т.д ...

git commit -am "  Add empty project directories."

Это потому, что, как упоминалось в других ответах, git отслеживает файлы в каталогах, но игнорирует каталоги самостоятельно. Это также может быть исправлено / решено в механизме git add в более современных версиях (я смутно помню, как они добавляли свои собственные файлы .gitignore в пустые каталоги), поэтому я действительно рекомендую попробовать обновить версию Git до максимально возможной. для этого и других преимуществ ваш дистрибутив может по умолчанию предоставить более старую версию, как это делают ubuntu и debian.

Изменить:

Вышеупомянутая методика разработана для минимального нарушения ваших рабочих каталогов, чтобы отслеживать пустые папки. -Каждый каталог в моих примерах получит свой собственный файл .gitignore (вы можете иметь столько файлов .gitignore, сколько вам нужно, они являются аддитивными).

Итак, в конце ваша структура папок будет выглядеть так:

/var/tmp/main
.. plugin1
.... mysource.c
.... .gitignore
.. plugin2
.... mysource.c
.... .gitignore
.. plugin3
.... mysource.c
.... .gitignore

И тогда вы добавите файлы .gitignore в качестве заполнителей!

Но давайте сделаем шаг назад и попробуем противоположную тактику:

Максимальная видимость.

Перейдите в любую папку, которую хотите добавить, например, plugin1. Создайте файл в этой папке, назовите его placeholder.

Теперь перейдите к этой папке из командной строки, например, cd /var/tmp/main/plugin1/ и git add этот файл-заполнитель, например git add placeholder. Вы сказали git, что хотите, чтобы этот файл отслеживался (если вы наберете git diff, вы можете просмотреть «предложенные» изменения. Он скажет вам, что видит файл, но это просто пустой файл, что нормально) ,

Теперь зафиксируйте файл: git commit placeholder -m " Adding a Placeholder file."

Когда вы добавляете какой-либо файл, все папки, содержащие этот файл, вплоть до основной папки git, также добавляются, так что теперь у вас есть / plugin1 / tracked in git.

Просмотрите, используйте git add /path/to/file на любом из этих (?) C исходных файлов, которые у вас есть, и затем зафиксируйте изменения с помощью git commit /path/to/file. Как правило, все, что является чистым текстом, конечно, хорошо добавить в репозиторий.

Наконец: имейте в виду, что git status предназначен только для того, чтобы сообщать вам об измененных, отслеживаемых файлах, включая недавно добавленные файлы. Если модификаций не будет, вы получите только пустой вывод.

Чтобы увидеть файлы, которые фактически отслеживаются git, используйте git ls-tree HEAD, который покажет только отслеженные файлы!

Для чистого старта

Вот как я обычно запускаю git-репозиторий.

cd /path/to/project/
git init
echo "README" >> README
git add .
git commit -am "  Initial Commit of readme and files."
0 голосов
/ 30 октября 2011

Важный момент о "git add." является то, что он смотрит на рабочее дерево и добавляет все эти пути к поэтапным изменениям, если они либо изменены, либо являются новыми и не игнорируются

И ни Git, ни Mercurial не отслеживают пустые каталоги

0 голосов
/ 30 октября 2011

Вы только добавили свой README файл.Если вы введете git status, вы увидите, что все остальные ваши файлы считаются «не отслеженными».Вам нужно добавить их с git add, чтобы они отслеживались:

git add file1 file2 file3
git commit -m 'Added remaining files to repository'
git push
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...