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了,把暂存区的修改撤销,重新放到工作区,在用上一步丢弃工作区的修改

删除文件

工作区中删除了某文件,此时,工作区与版本库不同了:

远程仓库

关联本地与远程仓库(先有本地库,后有远程库)

先在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  //查看版本库的文件
Table of Contents