2016-12-30 16 views
2

Я пишу сценарий Lua, который создает каталог, создает в нем некоторые файлы и инициализирует git, добавляя к нему эти файлы и, наконец, все. Однако нет возможности использовать cd изнутри Lua (вы можете, но это не будет иметь эффекта), поэтому я задаюсь вопросом, возможно ли git init в каталоге, git add некоторых файлах и, наконец, git commit -a -m "message", при этом рабочий каталог - это каталог выше нужный каталог.git init, add, commit из другого каталога

Редактировать: -C работ, спасибо всем. Для кого-то интересно, в Lua, cd «сбрасывается» после вызова os.execute заканчивается. Таким образом, os.execute("cd mydir"); os.execute("git init"); не будет работать должным образом. Чтобы заставить его работать, используйте os.execute("cd mydir; git init;");.

+0

Так мерзавец репо находится в подкаталоге месте сценария Lua. Это верно? –

+0

@ Code-Apprentice Точно. – user6245072

+0

[Этот вопрос] (http://stackoverflow.com/questions/3769137/use-git-log-command-in-another-folder) специфичен для 'git log', но посмотрите, есть ли' -git-dir 'flag работает для других команд. –

ответ

3

Следуя намек в комментариях о -ci сделал:

git init newStuff 
Initialized empty Git repository in c:/fw/git/initTest/newStuff/.git/ 

сделать GIT репозиторий в дир NewStuff (который я уже создан)

Затем я добавил два файла NewStuff, и от его родителя с использованием -C

git -C newStuff/ status 
On branch master 

Initial commit 

Untracked files: 
    (use "git add <file>..." to include in what will be committed) 

     new1 
     new2 

nothing added to commit but untracked files present (use "git add" to track) 

Я вижу новые файлы. Теперь добавьте и их фиксации:

git -C newStuff/ add . 
git -C newStuff/ status 
On branch master 

Initial commit 

Changes to be committed: 
    (use "git rm --cached <file>..." to unstage) 

     new file: new1 
     new file: new2 

git -C newStuff/ commit -m"initial" 
[master (root-commit) bfe387b] initial 
2 files changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 new1 
create mode 100644 new2 
2

Пример на оболочке:

#!/bin/sh 
dirPath=some/dir/path 
mkdir -p $dirPath 
touch $dirPath/newFile 
git init $dirPath 
git -C $dirPath add . 
git -C $dirPath commit -a -m "Initial commit" 
git -C $dirPath log