我有一个web项目,其根目录是我的git repo的根目录。 Git正在跟踪该项目中的大多数文件并推送到远程仓库。在项目的根目录我有一个web.config文件,我想在本地跟踪但不要推送到我们的远程仓库。
git可以实现这一点吗?
答案 0 :(得分:2)
一种方法是在Git上游回购方(您要推送的那个)上添加virtual reference并安装Gitolite。
如果包含错误的文件,那种更新挂钩可以分析推送到和拒绝推送的文件的内容。
VREF FILETYPE就是一个例子。
答案 1 :(得分:1)
这是可能的,只需在项目的根目录中创建一个文件,并将其命名为.gitignore
(不要忘记文件名前面的Dot(.
))。然后编辑文件并粘贴您想要忽略的文件,例如,我想忽略所有具有.ini扩展名的文件,因此我的.gitignore
看起来像:
<<<<<<< HEAD
# built application files
*.ini
>>>>>>>
答案 2 :(得分:0)
您可以创建一个单独的分支(我将其称为config
)并在那里添加您的文件并使用该分支来跟踪对该文件的更改,合并来自您另一个分支的更改(可能{{1} })。然后,您可以自由地将更改推送到master
分支,而无需推送配置文件。但是你需要小心避免从错误的分支推进。
另一个选项可能是在单独的存储库中提交对配置文件的更改,并在当前存储库的工作树中具有符号链接或副本。将其添加到.gitignore文件将阻止当前存储库中的git将其列为要添加的内容。这种方式不太可能导致意外地将该文件推送到您的服务器。
答案 3 :(得分:0)
VonC的答案在理论上是最好的,假设您可以找到一个可以根据您的风格的git repo为您完成工作的工具。
穆罕默德正在做点什么,但还没到达那里。 上复制了来自nasirkhan的最佳投注在您的文件准备就绪后,例如:Web.config,运行以下命令:
function xmlPromise(name) {
return Q.promise(function (resolve, reject, notify) {
$.ajax({
type: "GET",
dataType: "xml",
async: true,
url: name,
contentType: "text/xml; charset=UTF-8"
})
.done(function (data) {
resolve(data);
}).fail(function () {
reject();
});
});
};
//your xml files can be stored in the promises variable
var promises = [ xmlPromise('your-xml-file-1.xml'), xmlPromise('your-xml-file-2.xml') ];
var results = [];
Q.allSettled(promises).then(function(responses) {
results.push(responses[0].value);
results.push(responses[1].value);
});
如果您需要再次更新网络配置(跟踪更改),请运行:
git update-index --assume-unchanged Web.config