git:最常用的分布式版本控制系统,要使用git应该首先在官网下载git,然后可以打开git bash进行操作。
一、设置姓名邮箱
- $ git config --global user.name “Your Name”
- $ git config --global user.email “email@example.com”
二、工作区和版本库
**工作区:**电脑上看见的目录或文件
版本库:.git目录(其中有stage暂存区,git为我们创建的第一分支master,指向master的指针HEAD)
提交文件步骤:文件添加进暂存区,暂存区内容提交到当前分支
三、创建版本库
1、创建本地仓库:
在需要创建目录的文件夹下,可以自己手动创建目录然后git init将其初始化为一个git本地仓库,或则用mkdir命令创建目录,还可以直接用git init [仓库名]新建一个仓库。
- git init : 这个目录变成git可以管理的仓库,这个目录内会增加一个.git文件夹,是本地git仓库的配置文件
**附:**用命令行进行文件路径选择和创建目录等基本操作:
- 盘名: : 若当前路径在C盘,要改变路径在D盘,则需要先输入D:改变到D盘下,再选择路径
- cd 绝对路径/当前目录下的路径名: 在当前盘符下转向指定路径
- mkdir [dirname] : 在当前目录下创建一个新的文件夹
- pwd : 显示当前路径
- …/ : 上层目录
- ./ : 当前目录
2、提交文件到版本库的两步
-
git add readme.txt //readme.txt(某文件)添加到暂存区
-
git add . //将所有文件添加到暂存区
-
git commit -m “修改的内容”//提交到版本库
-
git status //查看当前文件夹文件状态,是否有文件未提交
-
git diff //文件修改了什么
四、版本回退
查看修改历史,由近到远
git log
git log --pretty=oneline(横排显示)
git reflog //查看版本号
git reset –hard HEAD^ //回退上一个版本
git reset –hard HEAD^^ //回退上上个版本
git reset –hard HEAD~100 //回退前一百个版本
cat readme.txt //查看内容:
注:
1、不能使用https://github.com/yiy-curtain/newTest,这是用的https而不是git,需要输入用户名密码
2、远程repository和我本地的repository冲突导致的,push前先将远程repository修改pull下来,git pull origin master
五、删除和撤销删除
撤销修改
git checkout – file//撤销在工作区还没有存入暂存区的修改
删除文件
rm test.txt//删除文件夹下文件
git commit -m “”//彻底删除
git checkout – test.txt//版本库里恢复文件,若提交了删除则恢复只有名字
六、远程仓库
ssh-keygen -t rsa -C "email@qq.com"
github添加SSH Keys
ssh -T git@github.com //测试你的ssh-key
github创建新的仓库
git remote add origin git@github.com:yiy-curtain/newTest.git
git push -u origin master ( git push origin master )
git clone git@github.com:yiy-curtain/testgit2
1、创建ssh key:
ssh-keygen -t rsa -C “email@qq.com”
2、登录github,打开” settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容
3、Create a new repository创建新的仓库
4、本地仓库的内容推送到GitHub仓库
5、推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
git push -u origin master//推送本地master分支并将本地master分支和远程master分支关联起来
克隆远程仓库,在需要克隆库的文件夹下执行
git clone git@github.com:yiy-curtain/testgit2
cd testgit2 进入该文件夹
ls
七、分支操作
分支管理策略:一般在新建的dev分支上干活,分支代码稳定后发布到master主分支上,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式
- git checkout -b dev 创建+切换分支
- dev git branch dev 创建分支
- git checkout
- dev 切换分支
- git branch -d dev 删除分支
- git merge dev 合并分支dev到当前分支
- git branch 查看分支,会列出所有的分支,分支前面会添加一个星号 git log 查看分支合并情况
bug分支
git stash 把当前工作现场“储藏”起来
git checkout master 切换到需要修复bug的分支
git checkout -b issue-101 创建临时分支,修复bug101,提交
git add readme.txt
git commit -m “fix bug 101”
git checkout master返回分支,合并bug修复分支,删除bug修复分支
git merge --no-ff -m “merged bug fix 101” issue-101
git branch -d issue-101
git checkout dev返回工作的分支
git status 工作区是干净的
git stash list 查看隐藏的列表
恢复隐藏内容:
git stash apply 恢复
git stash drop 删除
git stash pop 恢复并删除
git stash apply stash@{0} 多次隐藏,恢复指定stash
每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支
git checkout -b feature-new
git add hi.txt
git commit -m “add feature new”
git checkout master
git merge --no-ff -m “merged feature-new” feature-new
git branch -d feature-new
git branch -D feature-new//没合并之前强行删除
多人协作
从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin
git remote 查看远程库信息
git remote -v显示更详细的信息,显示了可以抓取和推送的origin的地址
git push origin master(分支名)本地分支master推送到对应的远程分支上去
git push origin dev
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发
git checkout -b dev origin/dev创建远程origin的dev分支到本地