关于Git的使用。
Git是一个分布式文件管理的方式。提供这种服务的网站有很多,github、bitbucket等等有很多。
有需求的童鞋,直接传送门:
扫盲的《Pro Git》
或者转载的网页版:http://blog.jobbole.com/25808/
多账号的管理:https://gist.github.com/suziewong/4378434#22github
1. 这里算是记录基本操作
git config (--globel) user.email "XX"
git config (--globel) user.name "XX"
git init
git add //加入缓存
git reset HEAD a.txt //从缓存删除
git checkout -- a.txt //不保存重新拉取
git co
git status
git add remote https://github.com/sunwulovelove1/sunwulovelove1.github.com.git
git push origin master //提交到远程
git push [remote-name] [branch-name] 默认远端为 origin 默认分支为master
git remote -v //显示当前配置的远程仓库
git add remote [name] [url] //增加远程仓库
git fetch [remote name] //抓取远程仓库有的本地没有的信息
2.GIT 清除的用户名和密码。
window-preferences-General-Security-Secure Storage-Content
在下拉框里面找到GIT,可以delete掉记住的用户名和密码。
3.Git Push错误“Error writing request body to server”
今天测试BAE(百度云平台) Git代码管理功能的时候,提交一堆测试文件到服务器发现提交失败。提示 错误信息如下:
Error writing request body to server
Google了一把,发现原来默认Git设置http post的缓存为1M,相关资料如下:
https://bitbucket.org/marcinkuzminski/rhodecode/issue/495/git-repositories-much-bigger-when-hosted
http://docs.webfaction.com/software/git.html
https://openshift.redhat.com/community/kb/kb-e1035-git-push-throws-error-rpc-failed-result22-http-code-411
http://stackoverflow.com/questions/2702731/git-fails-when-pushing-commit-to-github
解决方法:
增加http post缓存, 如果使用git命令,设置参数命令如下:
增加为 500MB
git config http.postBuffer 524288000
如果使用的是Eclipse Git插件,则需要在 Window -> Preferences 中找到 Team -> Git -> Configuration 配置界面,在System Settings Tab页中 点击 “Add Entry…” 按钮来添加一个配置项:
key为: http.postBuffer
value为:524288000
Read more: http://blog.chengyunfeng.com/?p=488#ixzz2wxPefj8H
4.删除git中的分支信息(git-reset)
在使用git进行协作开发时,我们经常需要将自己的修改生成patch发给被人,但是在修改代码的过程中我们进行了很多次的提交,如何生成从最初的代码状态到最终代码状态的patch呢?下面要介绍的功能是应对这中情况。
现假设我们git软件仓库中的分支情况如下:
a-->b-->c
也就是说我们的代码从状态a修改到状态b,进行一次提交,然后再修改到状态c,进行一次提交。这时我们已经肯定由a到c的修改是正确的,不再需要状态b了,并且要把从a到c的变化生成一个patch发送给别人。如果直接打包的话会生成两个path,那么如何生成一个patch呢,这时就需要git-reset命令。
首先给状态a创建一个tag,假设名称为A,然后执行
git-reset --soft A
这样我们的软件仓库就变为
a
状态b和状态c都已经被删除了,但是当前的代码并没有被改变,还是状态c的代码,这时我们做一次提交,软件仓库变成下面的样子:
a–>d
状态d和状态c所对应的代码是完全相同的,只是名字不同。现在就可以生成一个patch打包发给别人了。
有三种情况
1.删除上一个commit.
其实可以继续删除上上一个commit,上上上一个commit。
git reset --hard HEAD~1
git push --force
如果没提交,只用修改缓存,这个简单,不重述。
:git checkout -- file可以丢弃工作区的修改;
:git reset HEAD file可以把暂存区的修改撤销掉,重新放回工作区状态;
:git reset --hard HEAD^回退到“add distributed”版本时的状态;
2.删除远端的提交
远端的提交,选定版本
it rebase -i dd61ab32^
显示如下编辑区域,将其他不需要的提交同样注释掉
pick dd61ab32
pick dsadhj278
然后提交到主分支上去。
git push origin -f
然后,其实我实践之后还有第四步和第五步,就是其他人的本地仓库包含此提交的分支,需要重新拉取。否则,其会重新提交入库。
最后,运行 git gc 命令,清除掉.git文件夹中存储的无效版本文件。