git使用及一些配置、问题
一、绑定用户名、邮件地址
git config --global user.name "Your Name"
git config --global user.email "email@example.com”
二、设置SSH免密码登陆
生成公钥
ssh-keygen -t rsa -C your_email@youremail.com(GitHub注册邮箱)
公钥上传github账户
生成的文件放在了C:/Users/用户名(你的windows用户)/.ssh/文件夹中,用记事本打开其中的id_rsa.pub文件,(ubuntu 默认在用户目录/.ssh目录下)全部内容复制。登录github网站,找到account setting
测试是否成功
ssh -T git@github.com 如果成功,会显示欢迎字符
error:
Agent admitted failure to sign using the key.
Permission denied (publickey).
solve ssh-add
三、建仓库
远程库(repository)
在网站上登录你的github帐户,点击Repositoies选项卡,建立一个名叫Hello的库。(名字随便取,但在本地建库时必须使用相同名字)
本地库
在自己电脑上任意一个文件夹,新建一个目录,目录名与在github上所建库的名字相同,这里是Hello,并进入Hello文件夹
初始化本地库
1.git init
2.编辑一个文档
vim readme.txt
Git is a version control system.
Git is free software.
3.1用命令git add告诉Git,把文件添加到仓库
git add readme.txt
3.2用命令git commit告诉Git,把文件提交到仓库
git commit -m "wrote a readme file"
commit可以一次提交很多文件,所以你可以多次add不同的文件
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
本地仓库
1.修改文件
修改文件之后,使用git status查看哪个文件有改动
git status
使用git diff查看具体哪里改动
git diff readme.txt
2.提交修改
git add readme.txt
git status
git commit
3.版本查看
git log 【--pretty=oneline】
4.版本恢复
Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
git reset --hard HEAD^
git reset --hard 版本号:可前可后恢复
如果关机之后不知道commit id,可以使用git reflog查看
5.撤销修改
git checkout -- file可以丢弃工作区的修改
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销
6.文件删除
如果磁盘误删
rm file 磁盘直接删除
第一种情况,确实要删除
git rm file 版本库中删除
git commit -m “commitment”提交
第二种情况,还原
git checkout -- file还原
远程仓库
1.关联本地仓库
在Github建立一个同名仓库
本地执行git remote add origin git@github.com:michaelliao/learngit.git
添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库
2.推送到远程仓库
git push -u origin master
我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
之后可以执行git push origin master
3.克隆到本地
在github上新建一个远程库
git clone git@github.com:tla001/gittest.git
分支管理
master称为主分支
git checkout -b dev创建dev分支并切换进去
相当于 git branch dev
git checkout dev
git branch 查看当前分支
git checkout master切换到主分支
git merge dev 将dev分支合并到master上
git branch -d dev 删除dev分支
突发保存于恢复
git stash
git stash list
git stash pop
多人协作
git remote 查看远程库信息
git remote -v详细信息
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
你的小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支,clone只能得到master
git checkout -b dev origin/dev
如果发生冲突
git pull 与远程同步
git branch --set-upstream dev origin/dev 分支连接
步骤
1首先,可以试图用git push origin branch-name推送自己的修改;
2如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3如果合并有冲突,则解决冲突,并在本地提交;
4没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有 创建,用命令git branch --set-upstream branch-name origin/branch-name。
标签管理
git branch
git checkout master跳转到相应的分支
git tag v1.0
git tag 查看
git tag v0.9 commit id
git tag -s <tagname> -m "blablabla..."可以用PGP签名标签查看标签信息
git tag -d v0.9 删除标签
git push origin v1.0推送某个标签
git push origin --tags一次性推送全部尚未推送到远程的本地标签
git push origin :refs/tags/<tagname>可以删除一个远程标签
eclipse 和myeclipse配置git
1.help中安装marketplace client插件
添加site juno-http:??download.eclipse.org/releases/juno
2.MarketplaceClient装好后,会重启Eclipse,然后我们会发现“Help”菜单下多了一个“EclipseMMarketPlace”,打开按照下图操作
搜索安装egit
3.window->preference->Team下出现Git就成功了。就可以开始配置和使用这个插件了
--------------------------------------------------------------------------------
error:src refspec master does not match any
touch README
git add README
git commit -m 'first commit'
git push origin master
转载请注明出处:http://www.cnblogs.com/tla001/
一起学习,一起进步