一般的操作是这样:
修改一个仓库的name和email:
git config user.name xxx
git config user.email xx@xx.xx
全局修改
git config --global user.name xxx
做了一个批量修改指定仓库的小工具
index.js
const fs = require('fs')
const userNameUser = process.argv.splice(2)[0];
const rootPath = './'
const list = fs.readdirSync(rootPath);
if (!userNameUser||userNameUser.split(/[::]/).length!==2) {
console.log('参数错误,请执行:`node setUserNameAndEmail.js name:email')
return
}
const name = userNameUser&&userNameUser.split(/[::]/)[0]
const email = userNameUser&&userNameUser.split(/[::]/)[1]
list.forEach(item => {
let filePath = rootPath + item + '/.git/config'
if (fs.existsSync(filePath)) {
let file = fs.readFileSync(filePath, { encoding: 'utf-8' })
let result = file.match(/\[user\]\s*name\s*=\s*[^\n]+\s*email\s*=\s*[^\n]+/)
if (result) {
result = result[0]
let newResult = result.replace(/(name\s*=\s*)[^\n]+/, '$1' + name).replace(/(email\s*=\s*)[^\n]+/, '$1' + email)
file = file.replace(result, newResult)
} else {
file += `[user]\n\tname = ${name}\n\temail = ${email}\n`
}
fs.writeFileSync(filePath, file, { encoding: 'utf-8' })
console.log(`name=${name} email=${email} 设置成功`,filePath)
}
})
执行方式:
把指定仓库放在同一个目录下,可以自动识别所有仓库。
node index.js name:email