git中clone项目有两种方式:https和ssh
https:无论是谁,拿到url随便clone,可是在push的时候须要验证用户名和密码
ssh:clone项目你必须是拥有者或者管理员,并且须要在clone前添加SSH Key。SSH在push的时候,是不须要输入用户名的,若是配置SSH Key的时候设置了密码,则须要输入密码,不然是不须要输入密码的
1.检查电脑是否存在SSH Keygit
cd ~/.ssh ls 若是存在id_rsa.pub或id_ dsa.pub文件,说明文件已经存在,跳过建立SSH Key步骤
2.建立SSH Keygithub
ssh -keygen -t rasa -C “your_email@example.com”
3.查看SSH Key服务器
cat ~/.ssh/id_rsa.pub
4.将查看的SSH Key赋值到git中设置好app
5.测试SSH Keyssh
ssh -T git@git.oschina.net 出现Welcome to xxx就能够了
github/gitlab同时管理多个ssh keygitlab
思考:测试
工做区 work
暂存区 index/stagefetch
git checkout file 此命令会使用HEAD中的最新内容替换掉你的工做目录中的文件,已添加到暂存区的改动以及新文件都不会受到影响。 git fetch origin & git reset —hard origin/master 丢去你在本地的全部改动与提交,能够到服务器上获取最新的版本历史,并将你本地主分支指向它
step1: 新建本地仓库ui
mkdir learn-git cd learn-git git init
step2: 推送到远程仓库url
在github上新建一个空的仓库,默认设置
github告诉咱们能够从这个仓库克隆出新的仓库,也能够把已有的本地仓库与之关联,而后把本地仓库的内容推送到github仓库上
git remote add origin https://github.com/Liuhui11/learn-git.git 本地仓库关联远程仓库 git remote remove origin 取消关联
git push -u origin master 将本地仓库推送到远程仓库
报错: src refspec master does not match any
缘由:空仓库不能提交上去
解决:
touch README git commit -m ‘first commit’ git push -u origin master
分支管理策略:
master分支:稳定、仅用来发布新版本,平时不能在上面干活
dev分支:不稳定、干活的地方,发布新版本时合并到master上
我的开发的分支:每一个人都有本身的分支,最终要往dev上合并
合并分支时,加上—no-ff参数可以使用普通模式合并,合并后的历史有分支,能看出来曾经作过合并;而fast forward合并就看不出来曾经作过合并bug分支:
git stash 将当前工做现场储存起来,等之后恢复现场后继续工做
git stash apply 恢复以前的工做现场
git stash list
git stash drop 删除stash内容
git stash apply stash@{0} 恢复到指定的stashfeature分支:
为新功能建立分支
git branch -D feature-vulcan 强行删除分支多人协做:
git remote -v 查看远程库的信息
master分支是主分支,所以时刻与远程同步
dev分支是开发分支,团队全部成员都须要在上面工做,因此也须要与远程同步
bug分支只用于在本地修复bug,就不必推到远程了
feature分支是否推到远程,取决于你是否和你的小伙伴在上面开发
git branch dev 新建 git branch -d dev 删除 git merge dev 合并 git branch -a 查看 git checkout dev 切换
git tag v1.0 建立标签,默认标签是打在最新提交的commit上的 git tag 查看标签 git tag -a <tagname> -m "blablabla..." 指定标签信息 git tag -s <tagname> -m "blablabla..." 用PGP签名标签 找到历史提交的commit id打标签: 1.git log --pretty=oneline --abbrev-commit 2.git tag v1.0 commit-id git tag -d v1.0 删除标签 git push origin <tagname> 推送指定标签 git push origin --tags 一次性推送所有还没有推送到远程的本地标签 git tag -d v0.9 & git push origin :refs/tags/v0.9 删除远程标签
git log/git log --pretty=oneline 查看commit的历史记录 git reset —hard HEAD^ 回退到上一个版本,或者经过commit id来回退到指定版本 git reflog 记录你的每一次命令,包括将来的版本 找到以前版本的commit id能够返回到最新的版本
git add -f file 强制添加文件,即便被忽略了 git check-ignore -v file 查看文件不能被提交是哪一个规则写的 https://github.com/github/gitignore 在线自动生成忽略文件 忽略已经被追踪的文件 git rm --cached file 更新.gitignore忽略掉目标文件 git add . git commit -m 或者:git update-index --assume-unchanged logs/*.log