如何使用JGit删除文件? 我从本地存储库中删除了并且我提交了推送更改,但似乎JGit没有注意到它已被删除。它仍然存在于远程存储库中。
我调用提交更改的函数:
public void commitChanges(){
Git git = null;
try {
git = Git.open(new File("./TestGitRepository/.git") );
} catch (IOException e1) {
e1.printStackTrace();
}
try {
git.add().addFilepattern(".").call();
} catch (NoFilepatternException e) {
e.printStackTrace();
} catch (GitAPIException e) {
e.printStackTrace();
}
// Now, we do the commit with a message
try {
RevCommit revCommit= git.commit().setMessage("commit try").call();
} catch (GitAPIException e) {
e.printStackTrace();
}
git.getRepository().close();
}
我调用的函数推送更改:
public void pushLocalChanges(){
Repository localRepo = null;
try {
localRepo = new FileRepository("./TestGitRepository/.git");
} catch (IOException e) {
e.printStackTrace();
}
Git git = new Git(localRepo);
PushCommand push = git.push();
UsernamePasswordCredentialsProvider user = new UsernamePasswordCredentialsProvider("userName", "password");
push.setCredentialsProvider(user);
push.setRemote(REMOTE_URL);
try {
push.call();
System.out.println ("pushed to upstream: "+push.getReceivePack());
} catch (GitAPIException e) {
e.printStackTrace();
}
git.getRepository().close();
}
远程存储库上没有任何变化,我错过了什么? 在此先感谢您的帮助!
答案 0 :(得分:2)
这解决了我:
git.pull();
git.rm().addFilepattern("fileToDelete").call();
commitChanges()
pushLocalChanges()
答案 1 :(得分:1)
git.rm().addFilepattern("fileToDelete").call();
只会删除显式提到的addFilepattern()参数的文件。
理想情况下,它应自动删除已从本地存储库中删除的所有文件。它可以通过使用 add()。setUpdate(true)来完成,如下所示: -
git.add().setUpdate(true).addFilepattern(".").call();
git.commit().setMessage("delete files").call();
RefSpec spec = new RefSpec("refs/heads/master:refs/remotes/branch1");
git.push().setRemote("origin").setRefSpecs(spec).call();
答案 2 :(得分:0)
受到上述人员的启发,我已经解决了它。以下是我的代码:
/**
* 添加且提交全部
* 同等于 git add . && git commit -m 'some msg'
* @param repoDir 仓库地址
* @param msg 消息
*/
public static void addAndCommitAll(File repoDir, String msg) throws IOException, GitAPIException {
try(Git git=Git.open(repoDir)){
//全部添加, 除了.gitignore文件中指定的
doAddAll(git);
//全部提交
git.commit()
.setMessage(msg)
.call();
}
}
/**
* 添加全部
* 相当于 git add .
* @param repoDir 仓库地址
*/
public static void addAll(File repoDir) throws IOException, GitAPIException {
try(Git git=Git.open(repoDir)){
doAddAll(git);
}
}
private static void doAddAll(Git git) throws GitAPIException {
//add removed and modified file
git.add()
.setUpdate(true)
.addFilepattern(".")
.call();
//add new and modified file
git.add()
.addFilepattern(".")
.call();
}