代码管理《二》关于Git

关于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文件夹中存储的无效版本文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值