git 从不同的目录初始化、添加、提交

git init, add, commit from a different directory

我正在编写一个 Lua 脚本来创建一个目录,在其中创建一些文件并初始化 git,将这些文件添加到其中,最后提交所有内容。但是没有办法从 Lua 里面使用 cd (你可以,但是不会有效果),所以我想知道是否可以 git init 一个目录, git add 一些文件,最后是 git commit -a -m "message",而工作目录是所需目录之上的目录。

编辑:-C 有效,谢谢大家。对于任何想知道的人,在 Lua、cd "resets" 调用 os.execute 结束后。因此,os.execute("cd mydir"); os.execute("git init"); 不会按预期工作。要让它工作,请使用 os.execute("cd mydir; git init;");.

按照关于 -C 的评论中的提示,我做了:

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

在目录 newStuff(我已经创建)中创建 git 回购协议

然后我将两个文件添加到 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

shell 上的示例:

#!/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