作为一个新的git用户,他是SVN和CVS的专家,我正在努力让最基本的git函数工作.
我在assembla.com上使用共享仓库
我创建了一个本地克隆,并添加了一个文件:
$ git clone repository-url
$ echo "hello" > ha.txt
$ git add -A
$ git commit -a -m "haha"
$ git push
Run Code Online (Sandbox Code Playgroud)
注意:此时我得到"没有共同的参考,没有指定;什么都不做"错误.经过几个小时的谷歌搜索,我发现解决方案是键入此
$ git push origin master
Run Code Online (Sandbox Code Playgroud)
然后我去了另一台计算机,修改了文件,并提交了它(令人惊讶的是,我不需要做git push origin magic).然后我回到主计算机,再次修改它,所以我可以看到合并是如何工作的.
$ git fetch
$ git merge
Run Code Online (Sandbox Code Playgroud)
现在我收到错误:
致命:未指定提交且未设置merge.defaultToUpstream.
查看"git merge"的手册页,你必须指定如下内容:
$ git merge [< commit >..]
Run Code Online (Sandbox Code Playgroud)
问题是,我无法找出什么< commit >意思,应该是什么.例如它应该是文件,回购,消息,版本吗?
我还没有创建一个分支 - 我只是在研究"头"或主人,因为我认为git称之为
不幸的是,谷歌对这个没什么帮助.手册页似乎希望你知道什么是< refspec >,< commit >和origin是.
任何关于这个noob问题的帮助表示赞赏.
我安装并尝试使用jasper report studio.当您尝试为报告创建数据源时,您遇到的第一个砖墙是
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)
论坛说我需要在类路径上安装一个jar.我不知道怎么做,所以第一个障碍是如何获得罐子.我唯一能找到的地方是:
http://dev.mysql.com/downloads/connector/j/
但不幸的是,这会给你一个msi安装程序,而不是jar.我不想安装东西,只需拿到罐子.
我安装了mysql DB,已经通过程序文件中的安装目录进行了拖网,但找不到jar.
有人知道官方(不是恶意软件网站)获取mysql jar的方法吗?它很难找到,这似乎很奇怪.
我有Windows 8 64位和mysql 5.6.
在Groovy shell中,您可以输入命令,例如
def x = 1
Run Code Online (Sandbox Code Playgroud)
并运行它们.该行回来了:
groovy:000> > def x = 1
def x = 1
===> 1
groovy:000>
Run Code Online (Sandbox Code Playgroud)
现在,如果我输入:
println(x)
Run Code Online (Sandbox Code Playgroud)
我明白了:
groovy:000> > println(x)
println(x)
Unknown property: x
groovy:000>
Run Code Online (Sandbox Code Playgroud)
所以似乎控制台和shell都记得对象定义,这是正常的吗?
Jenkins需要证书才能使用ssh发布和ssh命令.它可以在下配置"manage jenkins" -> "Configure System"-> "publish over ssh".
问题是:如何创建证书?
我有两个ubuntu服务器,一个运行Jenkins,另一个运行应用程序.
我是否设置了Jenkins证书并将其中的一部分放在部署框上,或者在部署框上设置了证书,并将其中的一部分放在Jenkins上?证书是否需要名为Jenkins的用户名,或者是否适用于任何用户?我们在开发框中没有Jenkins用户.
我知道有许多不兼容的ssh类型,Jenkins需要它吗?
有没有人找到如何设置这一切的指南(如何生成密钥,在哪里放置它们等)?
我们有一个war文件,liquibase xml文件和sha1校验和我们想要打包成Debian脚本部署到一个平台:ubuntu 14.1 64bit with tomcat 7和java 7.
我们已经搜索了大量难以理解的(对于我们作为Java开发人员)Debian打包指南,其中大部分需要"上游源tar球"(例如这一个:https://wiki.debian.org/IntroDebianPackaging)和/或者通过make/install生成的东西.
我们既没有,这也是我们问题的症结所在.
我们有两个阶段:
指南没有提到如何管理这两个阶段.
初始安装(我们现在在每台服务器上手动执行的操作):
我们通过使用Jenkins构建的tar文件分发应用程序本身.在tar中如下:
我们将tar文件scp到/ home/foo目录中,并运行/home/foo/scripts/install.sh,它执行以下操作:
我们的问题是:
系统如何管理仅发送更新的文件,例如在这种情况下不是liquibase二进制文件?我假设我们需要两个软件包,一个用于基本安装,一个用于tar,以避免重复?
我们知道我们需要将工件放在一个特殊的目录结构中,并且它以某种方式映射到目标服务器文件结构,我们需要构建各种控制文件,但不是它在各个阶段如何粘合在一起,以及什么脚本是需要.
我们试图阅读Debian政策手册(https://www.debian.org/doc/debian-policy/),但这是对Linux体验开发人员的一个参考.我们确信答案在那里,但我们无法弄清楚在哪里.
这篇文章: https: //help.ubuntu.com/community/Tomcat/PackagingWebapps还有另外两个选项(我们选择"将系统范围的实例击败提交"),但没有提供有关如何实际构建软件包的线索.
Ubuntu 14,tomcat 7,java 7
godaddy提供的our.crt,our.key和gd_bundle-g2-g1.crt.该捆绑包中有3个证书(通过vi'ing文件看到).
注意,我们的key和crt在node.js上使用没有问题.
我们从现有的crt创建了一个密钥库:
cd /etc/ssl
openssl pkcs12 -export -in our.crt -inkey our.key -out our.p12 -name tomcat -CAfile gd_bundle-g2-g1.crt -caname root -chain
Run Code Online (Sandbox Code Playgroud)
server.xml是这样的:
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="200" scheme="https" secure="true"
keystoreType="PKCS12"
keystoreFile="/etc/ssl/our.p12" keystorePass=""
clientAuth="false" sslProtocol="TLS" /> …Run Code Online (Sandbox Code Playgroud) 使用eval或JSON.parse可以轻松地将JSON加载到javascript中的对象中.
但是如果你有一个像函数这样的"类",那么如何将JSON数据输入呢?
例如
function Person(name) {
this.name=name;
this.address = new Array();
this.friendList;
this.promote = function(){
// do some complex stuff
}
this.addAddress = function(address) {
this.address.push(address)
}
}
var aPersonJSON = '{\"name\":\"Bob\",\"address\":[{\"street\":\"good st\",\"postcode\":\"ADSF\"}]}'
var aPerson = eval( "(" + aPersonJSON + ")" ); // or JSON.parse
//alert (aPerson.name); // Bob
var someAddress = {street:"bad st",postcode:"HELL"};
//alert (someAddress.street); // bad st
aPerson.addAddress(someAddress); // fail!
Run Code Online (Sandbox Code Playgroud)
关键是我需要能够从JSON创建适当的Person实例,但我能得到的只是一个愚蠢的对象.我想知道它是否有可能用原型做一些事情?
我不想要解析JSON的每一行并将每个变量分配给相应的函数属性,这太难了.我所拥有的实际JSON和函数比上面的例子复杂得多.
我假设可以将函数方法JSONify转换为JSON字符串,但是因为我需要保持结果数据尽可能小这不是一个选项 - 我只想存储和加载数据,而不是方法的javascript代码.
我也不想将JSON加载的数据作为子对象放入,如果我可以帮助它(但可能是唯一的方法),例如
function Person(name) {
this.data = {};
this.data.name=name;
}
var newPerson = …Run Code Online (Sandbox Code Playgroud) 我有2个github帐户,新旧.当我检查新的回购时,我不能提交它,因为它说我的旧github用户未被授权.
让我说我的旧github帐户用户名是旧的,电子邮件是old@old.com 让我说我的新github帐户用户名是新的,电子邮件是new@new.com
旧的github帐户没有与之关联的SSH密钥.新帐户有我的ssh密钥.当我使用Windows时,ssh键是一个噩梦,因为putty/pagent使用ppk格式,但gitbash使用的openssh使用rsa.前段时间,我设法将我的ppk转换为rsa并将其放入我的windows用户.ssh dir.
我这样做了:
$ git config --global user.name new
$ git config --global user.email new@new.com
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
$ git config --global -l
Run Code Online (Sandbox Code Playgroud)
要么
$ git config -l
Run Code Online (Sandbox Code Playgroud)
我知道了:
user.email=new@new.com
user.name=new
Run Code Online (Sandbox Code Playgroud)
当我尝试做的时候 $git push origin
remote: Permission to new/test.git denied to old.
fatal: unable to access 'https://github.com/new/test.git/':
403 user old not authorised
Run Code Online (Sandbox Code Playgroud)
如果我使用gitbash,tortoise或VS代码来执行推送,我会收到此错误.
如果我删除克隆的repo,并从头再次克隆它,然后提交任何东西,同样的问题.
$ git clone git@github.com:new/test.git
Run Code Online (Sandbox Code Playgroud)
知道为什么以及在哪里获得旧用户?在我的机器上的任何地方都没有引用旧的github用户,它阻止我做任何工作.
似乎没有办法从github删除旧用户,但即使我可以,它仍然无法解决问题.我几个月都无法工作,因为我无法向github提交任何内容.
我尝试的另一件事是在克隆repo后编辑.git/config.我尝试将https更改为ssh url,因为https在使用github的所有年份中从未为我工作过.https允许您克隆,但永远不会推送.如果我用ssh签出,使用适量的vodoo,它曾经工作,但现在它总是得到老用户没有明显的原因.
如果我们向团队添加新用户,只需添加他们的电子邮件地址,新用户就可以登录项目,但他们看不到任何 repos,甚至看不到左侧的 repos 图标(他们请参阅概述、板、管道和工件)。这些用户已被授予对所有存储库的完全访问权限,即他们在贡献者组中。如果我查看项目设置中的存储库,然后找到用户,他们拥有所有存储库的所有权限,包括读取和贡献。
我怎样才能给他们“更多”访问权限,以便他们可以查看和使用 git 存储库?
我看过类似的帖子,其中提到用户是“基本的”或“利益相关者”,但这不是我能看到或改变的。
我是该项目的完全管理员。
有什么建议?
我们想要撤消最后 2 次都推送到原始主控的提交。在 tortoise git 中,我们可以查看历史记录,然后单击上次提交后的第 3 个,然后选择“将 master 重置为此”,我们猜测这意味着恢复到此版本。
但是,当您选择此选项时,您必须从以下三个选项之一中进行选择:
不幸的是,我们不知道我们应该选择这 3 个选项中的哪一个 - 我们只想撤消最后两次提交并及时返回。
下一个问题是此操作是在远程源、您的存储库、您的工作目录还是这三者的组合上发生?例如,是否必须在还原后进行提交和推送,或者它是否为您执行此操作?
我们会猜测 HARD 是我们想要的 - 它会将存储库(不确定是哪个)和我们的本地源代码恢复到以前的版本。如果是这种情况,为什么这不是默认值,另外两个选项的用例是什么?要么你想恢复,要么不恢复,如果你只恢复远程仓库,而不是你的本地工作文件,那么你将处于混乱状态。
我们没有任何本地修改的文件。
请注意,我们非常渴望一个不会破坏 git 的解决方案(我们过去曾破坏过 git,不得不创建一个新的 repo)。也许另一种方法是可行的,例如检出以前的版本,然后在最新版本的顶部检入,但我们不知道如何执行此操作。
我们知道我们可以做这样的事情:
git checkout [revision]
Run Code Online (Sandbox Code Playgroud)
但是我们如何告诉 git 我们想要让这个版本成为新的 head 或者用这个替换 head 呢?我猜我们不能只提交,因为没有什么可提交的,因为我们不再是主人。顺便说一句,如果您查看上一个。版本,修改它,然后提交,你提交什么,提交到哪里?
我已经阅读了https://www.atlassian.com/git/tutorials/undoing-changes但它没有解决本地和远程 repos 之间的关系。如果要撤消的提交全部推送到远程源主机,则不清楚恢复远程源、本地存储库和工作目录的方法是什么——所有 3 项都必须恢复到 3 次提交之前的提交。我们真的不在乎这是通过重置还是还原来完成的——我们只需要一种方法来做到这一点,它适用于所有 3 个位置。
正确的接收方可能是这样的:
git status (we are on master with a clean working dir)
git git revert HEAD~2
git commit -m "revert"
git push origin …Run Code Online (Sandbox Code Playgroud)