该RevCommit有一个getCommitTime()
方法,但它返回和int,它有没有作者的时间.如何从RevCommit获取作者和提交日期?
我刚刚开始使用GIT(我来自cvs)并希望使用Git设置类似于cvs/svn的东西.我执行了以下步骤:
cd o:/repository
git init
cd <working directory>
git clone o:/repository
Run Code Online (Sandbox Code Playgroud)
我现在创建了一个名为file.txt的文件,其中一些内容执行"git status"列出了适当的更改.
然后我做
git add file.txt
git commit file.txt
Run Code Online (Sandbox Code Playgroud)
两者似乎都很好.
当我这样做时
git push
,我收到以下错误:
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'o:/repository'
Run Code Online (Sandbox Code Playgroud)
我首先尝试执行pull,以及为push命令指定origin和master变量但是没有工作.
有人可以告诉我我错过了什么.我正在运行Windows 7 64位.
PS.我也试过了
git push origin master
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
Counting objects: 3, done.
Writing objects: 100% (3/3), 251 bytes, done.
Total …
Run Code Online (Sandbox Code Playgroud) 每当我加载NetBeans 6.9(同样的错误也发生在以前的版本上)时,我让NetBeans完成扫描我的项目,一旦完成,我尝试运行一个指向带有main方法的类的配置文件,NetBeans总是说主类不是发现,即使它弹出错误,它会出现在类列表中.
如果我从列表中选择类并单击"确定",则会再次发生相同的错误(未找到主类).
如果我编译主类,我仍然会遇到同样的问题.
如果我重建整个项目,我想我仍然会遇到同样的问题. - >当我编译主项目时,它会编译所有项目,甚至是那些已关闭的项目.到底是怎么回事?
到目前为止,我找到解决这个问题的唯一方法是关闭项目并重新打开它,等待项目扫描再次完成.
这令人非常恼火.有没有解决这个问题?
我注意到的另一个奇怪的事情是我的项目似乎构建了错误的JAR文件名(尽管如果我执行上述步骤关闭并重新打开项目它仍然有效).我有两个具有不同名称的项目,甚至在关闭了另一个项目并重新启动NetBeans很多次之后,当我构建第一个项目时,它使用JAR文件名作为已经关闭了很长时间的第二个项目.
现在我在Windows 7上使用MSysGit,它是从.bat文件启动的,该文件本身调用bash.exe --login -i
启动shell.此时它会在用户的主目录中执行.bashrc文件(以及其他文件).我使用此脚本来设置环境和cd
起始目录.
一切正常.我想要的是以某种方式更改.bat文件,以便bash在启动时执行自定义脚本,以便在该脚本中我可以执行不同的初始化并cd到不同的起始目录.然后我可以有两个单独的.bat文件调用每个脚本,然后我可以在桌面上创建一个快捷方式,并启动我想要的任何一个.
我不确定如何做的事情是让bash在启动时运行自定义init脚本.目前MSysGit使用的命令是bash.exe --login -i
.有什么办法可以修改它以使其使用自定义文件吗?我试过bash.exe --login --rcfile 01.txt -i
但是没用.同样,我尝试的其他任何事情都没有
如描述中所述.我不想在自动解决时解除合并冲突的提示.
我的场景是我将一行包含固定文本字符串的行添加到一个分支上的文本文件中,在同一个分支上执行其他一些提交,然后在另一个分支上挑选添加固定文本的更改,然后执行合并另一个分支.
我这样做是为了测试,因为在我的日常生活中经常会遇到冲突,但是当我使用我的合并工具时,它说没有冲突,所以我只是关闭它并手动提交.
问题是,当实际上git已经正确地合并在一起时,我被提示进行额外的步骤.(我甚至手动检查了文件,以确保它不是我的合并工具执行解决方案,实际上冲突已在文件中解决).
我尝试使用"--commit"参数进行git merge但它没有任何效果.
似乎git无法根据消息自动合并更改,但实际上它实际上合并了文件.
有没有办法自动合并这些类型的冲突,并继续无需人工干预?
我正在使用git版本1.7.10.msysgit.1
我调用了jgit log命令并找回了一些RevCommit对象.我可以从中获取一些基本信息,并使用以下代码获取更改的文件列表.我还需要做两件事:
1)如果提交没有父母,我如何获得以下信息?
2)如何获取每个文件中更改的内容的差异
RevCommit commit = null;
RevWalk rw = new RevWalk(repository);
RevCommit parent = null;
if (commit.getParent(0) != null) {
parent = rw.parseCommit(commit.getParent(0).getId());
}
DiffFormatter df = new DiffFormatter(DisabledOutputStream.INSTANCE);
df.setRepository(repository);
df.setDiffComparator(RawTextComparator.DEFAULT);
df.setDetectRenames(true);
List<DiffEntry> diffs = df.scan(parent.getTree(), commit.getTree());
for (DiffEntry diff : diffs) {
System.out.println(getCommitMessage());
System.out.println("changeType=" + diff.getChangeType().name()
+ " newMode=" + diff.getNewMode().getBits()
+ " newPath=" + diff.getNewPath()
+ " id=" + getHash());
}
Run Code Online (Sandbox Code Playgroud) 我有一个从磁盘加载的图像(存储为a BufferedImage
),我在a上正确显示JPanel
但是当我尝试使用下面的命令重新保存此图像时,图像以红色调保存.
ImageIO.write(image, "jpg", fileName);
Run Code Online (Sandbox Code Playgroud)
注意!image是a BufferedImage
,fileName
是File
指向将以" .jpg
" 结尾保存的文件名的对象.
我已经读过ImageIO
早期JDK中的方法存在问题,但就我所能找到的那样,我不在其中一个版本上.我正在寻找的是一种解决这个问题而无需更新JDK的方法,但是我已经说过我仍然想知道这个问题在JDK中修复了什么(如果它确实仍然是我正在使用的JDK的一个bug ).
谢谢.
我的观点是,应该可以获得重复的git哈希,因为哈希码是唯一性的精简表示,因此会有一些步骤产生相同的哈希码.更重要的是,应该有一系列步骤,其中提交不同的更改但产生相同的哈希码.
例如,在同一台机器上两次克隆相同的存储库,在不同的存储库中进行几乎完全相同的更改(保存一个字节或一位)并提交.即使在提交中使用目录名称或时间戳,仍应该可以获得此目的(尽管很少见).例如,两台不同机器上的两个独立的人同时进行提交.
我的问题是双重的.怎么会发生这种情况,Git将如何处理它.
或者更明确地说,git如何确保您在推送之前保持最新状态.是否有可能一个人先推,然后另一个人尝试推送(两个更改都基于相同的父提交),Git看到哈希码与远程和本地历史相匹配,决定你是好的去,允许你推,但你刚丢失了一个更改?在这种情况下,我看到它更像是以下内容:
repo1 a-> b-> c1
repo2 a-> b-> c1' - > c2
说c1,c1',c2都发生在两个repos被克隆到b后,现在repo1推,没有问题现在repo2试图推c1'和c2和git确定c1'= c1但实际上它们不同,git推c2 ontop c1得到a-> b-> c1-> c2我们失去了c1'的变化
这可能吗?怎么可能发生,git会做什么?
我曾经尝试了几次(谷歌搜索和尝试的东西)来禁用MSysGit中的小74字符默认行/自动换行设置.我尝试查看msysgit下的vim目录,我的windows用户目录中的设置,没有.我找不到任何文档来禁用它.
我正在使用1.7.11.msysgit.1
如何完全关闭换行/自动换行或至少将其包装的字符增加到非常大的值.