git bash学习
安装git
创建版本库
mkdir learngit //windows下目录不要有中文
cd learngit
pwd
git init //把这个目录变成Git可以管理的仓库,初始化git仓库
提交到版本库
创建一个readme.txt文件后,
git add readme.txt //添加到仓库
git commit -m "add a readme.txt" //提交到仓库
git add file1.txt file2.txt //添加多个文件
git commit -m "add 2 files" //一次提交多个文件
修改文件后
修改readme.txt文件后,
git status //查看仓库当前状态
git diff readme.txt //查看修改了什么内容
git add、git commit //提交修改
版本回退
git log //查看历史记录
git log --pretty=oneline //显示为一行
git reset --hard HEAD^ //回退到上个版本
git reflog //记录每一次命令 (带版本号)
git reset --hard 版本号id //回到未来(只能用id)
工作区和暂存区
工作区—add—暂存区—-commit—-当前分支
撤销修改
git checkout --readme.txt //修改了,没add,把工作区的修改全部撤销,回到最近一次add或commit的状态
git reset HEAD readme.txt //修改了,add了,把暂存区的修改撤销,重新放到工作区,在用上一步丢弃工作区的修改
删除文件
工作区中删除了某文件,此时,工作区与版本库不同了:
- 确定要从版本库中删除此文件
git rm test.txt git commit -m "delete test.txt"
- 工作区删错了,将误删的文件恢复
git checkout --test.txt
git checkout 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以一键还原
远程仓库
- 创建ssh key
ssh-keygen -t rsa -C "youremail@example.com" 然后一路回车,会生成.ssh目录,id.rsa,id.rsa.pub两个文件,一个是私钥,一个是公钥。 然后登陆Github,打开“Account Settings” ---“SSH keys”页面,点击“Add SSH Key”,填上任意title,在key文本框里贴上id_rsa.pub文件的内容,然后“Add key”,添加完成。
关联本地与远程仓库(先有本地库,后有远程库)
先在Github上创建一个远程仓库,下面进行关联
git remote add origin https://github.com/sonya1/learngit.git //关联
git push -u origin master //本地库推送到远程库 (第一次需要-u关联 master分支,以后就不用了)
git push origin master //推送master分支
若出错,是因为远程库中README.md文件不在本地库中,
git pull --rebase origin master即可 (抓取) pull = fetch+merge
从远程库克隆 (先有远程库,后有本地)
git clone https://github.com/sonya1/learngit.git //支持的ssh协议速度更快
创建与合并分支
git branch dev //创建dev新分支
git checkout dev //切换到dev分支
git checkout -b dev //创建并切换到新分支dev
git branch //查看当前分支
git checkout master //切换到master分支
git merge dev //将dev分支合并到master分支上来
git branch -d dev //删除dev分支
git branch -D feacture-01 //强行删除分支
git merge --no-ff -m "merge no-ff" //禁用ff模式的合并,会有合并分支信息
git log --graph --pretty=oneline --abbrev-commit //查看分支的合并情况-->分支合并图
master分支为稳定的,平时在dev分支上干活,好了之后合并到master上。
bug分支
在dev分支上干活时,突然有个bug需要改,则要停掉到手头工作,先修改bug。
git stash //存储当前工作现场
新建issue-01分支进行修改bug,改好之后,合并到master。
然后切换回dev,继续自己的活。
git stash list //查看工作现场
git stash apply //恢复现场,stash内容不删除
git stash pop //恢复现场,并删除
多人协作
git remote //产看远程库的信息
git remote -v //显示远程库更详细的信息 fetch(拉取)、push(推送)权限 pull=fetch+merge
git commit 有冲突提交不上时,抓取分支到本地,进行手动合并
git pull //抓取分支(有错误时,是因为没有本地dev与远程dev的链接)
git branch --set-upstream dev origin/dev //建立连接
git pull、解决冲突后再push
你的小伙伴要共同开发时,从远程库克隆时,默认只能看到master分支,dev分支会抓不到
那么新建与远程库一样的本地dev分支:
git checkout -b dev origin/dev //在本地创建与远程一样的dev分支
然后add 、commit等等
新增
git ls-files //查看版本库的文件