git使用记录
0. 注意:不要误解了.gitignore的用途,该文件只能作用于未被跟踪的文件,也就是那些从来没有被git记录过的文件(自添加以后,从未add及commit过的文件)。如果文件曾经被git记录过,那么.gitignore就对他们完全无效。
解决方法:
先删除该文件,提交更新。再将忽略文件的配置代码添加到 .gitignore,就能生效。
1.
(1)安装软件
下载msysgit
http://msysgit.github.io/
下载TortoiseGit
http://code.google.com/p/tortoisegit/
(2)生成密钥
执行下面的操作生成密钥
github密钥是针对一台电脑,不是账号
github
github.ppk
github.pub
如果出现Permission denied (publickey).错误,解决方法:
进入/c/Users/xxx/.ssh/目录
将github改名为id_rsa,github.pub改名为id_rsa.pub
2. oschina
(1)用Notepad++打开第一步生成的密钥oshina-key.pub,复制SSH Key。
(2)登录oschina,点击“我的资料”,如下图所示
、
选择“SSH公钥”,如下图所示
点击“添加公钥”,粘帖上一步复制的密钥,即可。
如果不添加“公钥”,则git clone代码时提示如下对话框,怎么输入密码都错,最终clone失败。
(3)从oschina-key中生成.ppk文件
因为下面安装的Git图形界面客户端软件TortoiseGit可使用PUTTY通过SSH协议与Git版本库进行安全验证,所以需要生成相关公钥的ppk配置文件。操作步骤如下:
执行 puTTYgen 程序,如下图所示:
然后点击“Load”按钮,如下图所示:
找到oschina-key文件,如下图所示:
提示导入成功,点击按钮“Save private key”另存为ppk文件,如下图所示:
保存为oschina-key.ppk文件。
正确完成上述步骤,就生成了puTTY软件在SSH验证中使用的ppk格式的私钥文件。
(4)至此,就可以用TortoiseGit clone代码,提交代码等。
TortoiseGit git clone时注意要选择上一步生成的oschina-key.ppk文件,否则会出现如下提示:
,怎么输入密码都错,最终clone失败。
这样就可以成功将代码clone出来了。
注意:
项目的地址有 https方式和git@方式,由于https方式提交代码到远程仓库 每次都要输入密码,很麻烦,因此,在clone时,采用git@方式
提交代码时不需要每次输入密码了。
如果本地先创建好仓库,并添加代码,再到码云上创建项目,则可以在git工具上设置remote参数,然后执行push remote。参数如下图所示:
2. github
(1)用Notepad++打开github-key.pub,复制SSH key。
添加SSH key到自己的github帐号,如下图所示
(2)git clone
在TortoiseGit和git bash中都可以使用git clone https://github.com/d1php/test.git 或者git clone git@github.com:d1php/test.git得到项目代码。
注意:
- 用git clone前先登录github,否则不会出现ssh的地址,复制工程的ssh地址,例如 git@github.com:d1php/test.git
- 在git bash中使用git clone git@github.com:d1php/test.git出现如下错误:
Jonathan@JONATHAN-PC /e/sy/git_sy/git_bash_test
$ git clone git@github.com:d1php/test.git
Cloning into 'test'...
Warning: Permanently added the RSA host key for IP address '192.30.252.128' to
he list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
使用git clone https://github.com/d1php/test.git可以将工程的代码克隆出来。
解决办法:
用ssh -vT git@github.com测试和github的连接是否成功,最后几行的结果是:
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/Jonathan/.ssh/identity
debug1: Offering public key: /c/Users/Jonathan/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: Trying private key: /c/Users/Jonathan/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
查看/c/Users/Jonathan/.ssh/目录下没有id_rsa文件,生成SSH key时指定文件名为github-key,于是将
github-key改名为id_rsa,github-key.pub改名为id_rsa.pub。
用ssh -vT git@github.com再次测试,最后几行的结果是:
debug1: Entering interactive session.
Hi wi100sh! You've successfully authenticated, but GitHub does not provide shell
access.
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
Connection to github.com closed.
debug1: Transferred: stdin 0, stdout 0, stderr 34 bytes in 0.6 seconds
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 53.6
debug1: Exit status 1
此时尝试在git bash中git clone https://github.com/d1php/test.git,克隆成功。
参考:https://help.github.com/articles/error-permission-denied-publickey/
错误“git did not exit cleanly (exit code 128)”的解决办法
1、鼠标右键 -> TortoiseGit -> Settings -> Network
2、SSH client was pointing to C:\Program Files\TortoiseGit\bin\TortoisePlink.exe
3、Changed path to C:\Program Files (x86)\Git\bin\ssh.exe
3. github连接出现port 22: Bad file number问题
原文网址:http://rangercyh.blog.51cto.com/1444712/749490
前段时间我试用了时下非常酷的代码托管站点github以及gitorious。感触颇多。
首先是我以前一直想要有这种代码托管的网站,可是直到前段时间我才知道已经有了。o(︶︿︶)o 唉,跟不上潮流啊!
其次是这些网站做得比我想要的要漂亮的多了,我最喜欢简洁明了,而这两个网站也正是如此,甚至比我想要的还要好。这里也推荐给大家使用。
顺带说明一下github是闭源的,gitorious是开源的。不管怎么样,都不错,反正我用免费的。。。。如何在局域网自己架我就不说了,自己去网站上看吧。给出它们的链接:
github:https://github.com/
gitorious:https://gitorious.org/
当然,这两个网站都是使用git版本控制工具来的,虽然我以前只使用过css,但用过git之后我觉得我以前弱爆了。。。好吧。不谈这个。。免得得罪svn和cvs党。。
不过在使用github时我遇到了点小问题。在官网里也没有说明,其实非常简单,但我想肯定会有跟我一样的菜鸟不知所措的。所以我列一下我遇到的问题。
按照github官网上Set Up Git来操作,当执行到ssh连接时,会出现我下面的问题:
“Bad file number这是个什么玩意”我当时就是这么想的。
后来我仔细研究了官网上的帮助文档,发现它提到过一个config配置文件,我当然没有创建过这个文件。于是我就google了一下,参考前人写了一个config放到rsa相同目录下:
但是我重新连接时仍然不行:
于是我怒了!!!静下来思考觉得可能是这个port 22的问题,因为我ping了一下github.com发现是可以ping通的。然后我用IceSword查看了一下端口,发现22端口是被禁掉的。原来这个22端口是默认的ssh连接端口,不过貌似这个服务有很多弱点,所以系统默认不开放。。当然,开放它是一个策略,不过既然有弱点,我还是不要去动它,那么我使用另一个端口去连接ssh就行了嘛~~~呵呵!这个新的端口不能和现在程序使用的服务端口重复,而且要确保开放,看到github的网址我想到了443端口,它是用来支持https服务的。这个端口默认开放,哈哈!!
下面我只需要修改下配置文件就可以了,如下:
注意Hostname修改成了ssh.github.com。接下来连接就发现一切OK了~~哈哈!
输入yes之后在rsa的路径下会生成一个known_hosts的文件
打开看了就发现其实就是一个类似cookie的文件罢了:
当这个文件存在时以后就不用费劲的输入yes了,直接就连接上了
怎么样!我是不是很有才。。。。好吧。我又2了。。。
4. Macbook Sourcetree
(1) 之前的账号用得好好的,增加新的账号老是提示如下permission错误:
Pushing to https://gitee.com/xxx
remote: [31mYou do not have permission to push to the repository via HTTPS
You do not have permission to pull from the repository via HTTPS
解决方法:
<1> SourceTree会自动记录“主机名”和“账号”的对应关系,因此码云不同的账号,同一时间只能用一个账号。
每次切换账号时,需要删除之前的账号,或者"编辑"账号,将其改为新账号
<2> 先删除之前的账户信息
<3> 重新push时弹出如下窗口,输入账号和密码即可
(2) 弹层总是提示:
参考网址:https://www.cnblogs.com/kpengfang/p/12292934.html
password required
for user kpngpf on host gitlab.bitautotech.com
store password in keychain
无论是 拉取 还是 推送 代码 都是提示弹层输入密码
解决方法:
只需执行下面一句命令:
git config --global credential.helper osxkeychain
此处填写的是电脑开机密码,并且勾选始终允许即可。
这时候,再拉取 或者 推送代码就不用一直输入密码了。
(3)还有一种情况:store password in keychain 反复出现
参考网址:https://blog.csdn.net/u013171212/article/details/104276055
要注意。 有些平台 用用户名是不能登陆的得用邮箱 比如 coding 就不能 。
解决办法