Classification:git

Classification (git)'s result:

git一些问题整理

1. git push -u origin master后显示error: failed to push some refs to ‘git@xxx’ 原因:远程仓库和本地仓库代码不一致(如远程仓库创建了README.md而本地仓库没有) 解决:git pull –rebase origin master后再次git push -u origin master即可 **************************************************************************** 2.github上有文件夹名显示黑色,并且无法打开。 原因:文件夹内包含一个仓库 解决:听说删除.git可以解决,但是我尝试之后失败,还是一样的状况,所以我的解决方案是把文件复制到另外的文件夹就避开仓库了…….好像正规的解决方案涉及子模块。 ******************************************************************************* 3.github上的语言标签和项目主要语言不匹配(如想把HTML改为java) 原因:项目中哪个语言的文件多github就标签为该语言。 解决:项目根目录添加.gitattributes,内容写上*.html linguist-language=java,即把html后缀也统计为java。 ***************************************************************************** 4. git出现sign_and_send_pubkey: signing failed: agent refused operation 原因:可能是成功认证过一次后又换了密钥导致混乱。 解决:先eval “$(ssh-agent -s)”再ssh-add即可。    

git常用操作整理

git init—目录变仓库 git add xxx.txt—添加文件到仓库 git commit -m “comment”—提交文件到仓库 git status—查看仓库当前状态 git diff—查看修改 git log <–pretty=oneline>—查看历史记录 HEAD:当前版本 HEAD^:上一个版本 HEAD^^:上上一个版本 HEAD~100:前100个的版本 git reset –head HEAD^—回退到上一个版本 git reset –hard 前几位版本的sh1值—回到未来的某个版本 git reflog—查看记录的每一次命令 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区; 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。 要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改 git diff HEAD — xxx.txt—查看工作区和版本库里面最新版本的区别 git checkout — file—文件在工作区的修改全部撤销 git rm—从版本库删除文件 git checkout — test.txt—把误删的文件从版本库中恢复出来 ============== 登陆GitHub,打开“Account settings”,“SSH Keys”页面: 然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容 点“Add Key”,你就应该看到已经添加的Key git config –global user.name “xxx” git config –global user.email “xxx@mail.com” 验证: ssh git@github.com 就ok了 $ git remote add origin git@github.com:michaelliao/learngit.git 请千万注意,把上面的michaelliao替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。 git push -u origin master—本地库的所有内容推送到远程库(github) git push origin master—把本地master分支的最新修改推送至github git clone xxx.git—克隆一个本地库 支持ssh和https,建议用ssh更快 ================================== git checkout -b dev—创建并切换到dev分支 git branch—查看当前分支 git merge dev—把dev分支的工作成果合并到master分支 git branch -d dev—删除dev分支 git log –graph—查看分支合并图 git merge –no-ff -m “merge with no-ff” dev—禁用快速模式合并 ===================================== 分支管理策略: 首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活; 开发一个新feature,最好新建一个分支; ================================== bug分支: git stash—储藏工作现场 git stash list—查看工作现场 git stash apply—恢复工作现场 git stash drop—删除stash内容 git stash pop—恢复工作现场并删除stash ============== feature分支: git branch -D xxx.py—强行删除未合并过的分支 ================== git remote <-v>—查看远程库信息 git push origin master—该分支上的所有本地提交推送到远程库 **************** master分支是主分支,因此要时刻与远程同步; dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步; bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug; feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。 **************** git push origin branch-name—本地推送分支 git checkout -b branch-name origin/branch-name—本地创建和远程分支对应的分支 git branch –set-upstream branch-name origin/branch-name—建立本地分支和远程分支的关联 多人协作的工作模式通常是这样: 首先,可以试图用git push origin branch-name推送自己的修改; 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并; 如果合并有冲突,则解决冲突,并在本地提交; 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功! 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name。 **************************** tag: git tag v1.0—打标签 git tag—查看所有标签 git tag v0.9 id—给以前的提交打标签 git show v0.9—查看标签信息 git tag -d v0.9—删除标签 git push origin v1.0—推送标签到远程 git push origin –tags—推送所有标签到远程 git push origin :refs/tags/v1.0—删除远程库的标签 ********************************* 一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。 如果你想修复bootstrap的一个bug,或者新增一个功能,立刻就可以开始干活,干完后,往自己的仓库推送。 如果你希望bootstrap的官方库能接受你的修改,你就可以在GitHub上发起一个pull request。当然,对方是否接受你的pull request就不一定了。 ******************************** 配置Git的时候,加上–global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。 ******************************** socks5 proxy: git config –global http.proxy socks5://127.0.0.1:1080 git config –global https.proxy socks5://127.0.0.1:1080 git config –global http.sslVerify false or git config –global http.https://github.com.proxy socks5://127.0.0.1:1080   ssh: ~/.ssh/config: Host github.com ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p   unset proxy: git config —global —unset http.proxy git config —global —unset https.proxy or git config –global –unset http.https://github.com.proxy   check: git config –global –get http.http://github.com.proxy git config –global –get https.https://github.com.proxy git config –global -l ***************************************   参考链接: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/