下面是我的代码:
postbody = usabled;
String pathToClone = "./repo";
Git git = Git.cloneRepository()
.setURI("https://github.com/Glitch31415/rws.git")
.setDirectory(new File(pathToClone))
.call();
System.out.println("remade local repo");
if (windows == true) {
new File(git.getRepository().getDirectory().getParent() + "\\community\\", postname);
}
else {
new File(git.getRepository().getDirectory().getParent() + "/community/", postname);
}
try {
FileWriter myWriter;
if (windows == true) {
myWriter = new FileWriter(git.getRepository().getDirectory().getParent() + "\\community\\" + postname);
System.out.println("writing the file to " + git.getRepository().getDirectory().getParent() + "\\community\\" + postname);
}
else {
myWriter = new FileWriter(git.getRepository().getDirectory().getParent() + "/community/" + postname);
System.out.println("writing the file to " + git.getRepository().getDirectory().getParent() + "/community/" + postname);
}
myWriter.write(postbody);
System.out.println("wrote " + postbody);
myWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
git.add().addFilepattern(postname).call();
try {
try {
File myObj;
if (windows == true) {
myObj = new File(git.getRepository().getDirectory().getParent() + "\\community\\index");
}
else {
myObj = new File(git.getRepository().getDirectory().getParent() + "/community/index");
}
Scanner myReader = new Scanner(myObj);
while (myReader.hasNextLine()) {
st = st + myReader.nextLine() + "\n";
}
myReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("index was read as '" + st + "'");
FileWriter myWriter;
if (windows == true) {
myWriter = new FileWriter(git.getRepository().getDirectory().getParent() + "\\community\\index");
}
else {
myWriter = new FileWriter(git.getRepository().getDirectory().getParent() + "/community/index");
}
myWriter.write(st+postname+"\n");
myWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
git.add().addFilepattern("/community/index").call();
git.commit().setMessage("Committed from server").call();
PushCommand pushCommand = git.push();
pushCommand.setCredentialsProvider(new UsernamePasswordCredentialsProvider("key", ""));
pushCommand.call();
Path directory = Path.of(pathToClone);
Files.walk(directory)
.sorted(Comparator.reverseOrder())
.map(Path::toFile)
.forEach(File::delete);
这段代码创建一个新文件,写入其中,然后修改另一个文件,并在文件末尾追加一些内容。所有这些都在本地克隆存储库中工作。但是,当我运行commit和push时,在线存储库中没有任何变化。它说有一个新的提交,但它也说“显示0个更改的文件,0个添加和0个删除。”基本上是一个空的提交。我做错了什么?如何将本地存储库复制到在线存储库中?另外,如果git.add()命令出现在错误的位置,那是因为我将它移到了更改的前面,试图解决这个问题。它曾经在他们身后。
2条答案
按热度按时间rbpvctlc1#
看看
org.eclipse.jgit.api / Class AddCommand / addFilepattern()
,我看到:将路径添加到应添加其内容的文件/目录。
目录名称(例如
dir
添加dir/file1
和dir/file2
)也可以递归地添加目录中的所有文件。Fileglob(例如 *.c)尚未支持。
产品参数:
filepattern
-要添加的文件/目录的存储库相对路径(以/
为分隔符)在addFilepattern()方法的文档中,术语“repository-relative”意味着文件模式应该相对于存储库的根目录来指定。
如果要将file1.txt添加到暂存区,则应使用addFilepattern(“dir1/file1.txt”),即使当前工作目录是dir 1或dir 2。这是因为路径是相对于存储库的根目录(/repo)的,而不是当前的工作目录。
如果您尝试添加一个存储库中不存在的文件(从根目录的Angular 来看),它将不会被暂存,并且在提交时不会注册任何更改。
仔细检查
git.add().addFilepattern(postname).call();
中postname的值,确保它是一个有效的参数。qij5mzcb2#
我最终决定用
这是唯一有效的方法