1.安装git 直接去git官网下载安装后就会有git-cli类似linux系统
配置用户名邮箱
git config --global user.name "xxx"
git config --global user.email "[email protected]"
2.进入一个文件夹作为git存储操作的文件夹,git初始化命令git init让这个文件夹具备git仓库
3.把文件提交到git仓库步骤
1.git add 文件名
2.git commit -m "说明"
4.git status命令可以让我们时刻掌握仓库当前的状态
5.git diff命令查看之前修改了什么
6.git log命令显示从最近到最远的提交日志
7.版本回退
1.HEAD表示当前版本,也就是最新提交的版本
2.上一个版本就是HEAD^上上个版本就是HEAD^^上100个版本就是HEAD~100
3.回退命令git reset --hard HEAD^
4.git reset --hard 版本号 回到指定的版本
8.git的牛逼之处远程创库github
1.通过Git-cli生成私钥和公钥,命令ssh-keygen -t rsa -C "[email protected]"
2.找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
3.登录github把公钥写入
4.在github上创建一个创库,使用网站用户边上的+号new repository,以便把电脑本地的库与github上的同步
5.将本地库与github上的库建立连接,在本地库运行git remote add origin [email protected]:webprevious/gitlearn.git
6.将本地库里面内容推送到github上的库里git push -u origin master
7.用git push命令,实际上是把当前分支master推送到远程,第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
9.从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。远程克隆命令git clone [email protected]:webprevious/库名.git
1.Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议
2.GitHub给出的地址不止一个,还可以用https://github.com/webprevious/库名.git
10.分支branch管理
1.创建分支并切换到该分支命令:git checkout -b dev此命令相当于:git branch dev 和 git checkout dev两句合并
2.git branch命令会列出所有分支,当前分支前面会标一个*号。
3.当自己在新建的分支上完成了自己的工作,就可以切换回master分支,但此时master分支并没有自己之前那个分支新加的内容,而是需要把新建的分支的内容合并到master分支上
4.合并分支到当前分支命令:git merge 新建那个分支名字
5.合并完成分支就可以删除分支,命令:git branch -d 分支名字
6.当在dev分支提交了修改,master中也提交了修改,且这两个修改有冲突那就无法合并,需要解决冲突然后重新提交
7.分支管理策略
1.通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
2.如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
3.新的合并命令:git merge --no-ff -m "merge with no-ff" dev
8.bug分支,当你在开发一个新的分支时,此分支还未写完你又不想提交但是有个bug需要立马解决,Git提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
命令:git stash
9.使用git stash命令后工作区就干净了就可以放心创建分支来修复bug,首先要确定在哪个分支上修复bug然后切换到哪个分支
10.完成bug修复回到之前保存的工作现场,查看之前的工作现场命令:git stash list
11.恢复方法:一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;另一种方式是用git stash pop,恢复的同时把stash内容也删了
12.添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。
13.但此时接到上级命令,因经费不足,新功能必须取消!虽然白干了,但是这个包含机密资料的分支还是必须就地销毁
14.使用git branch -d 分支名时提示错误了,说该分支还没有合并如果删除,将丢失掉修改,如果要强行删除,需要使用大写的-D参数
11.标签 意义在于方便,虽然commit也可以记录位置,但是commit id太长了,语义不行
1.切换到要打标签的分支
2.打标签命令git tag v1.0
3.查看标签git tag
4.把标签打到指定commit id上命令:git tag v0.9 f52c633
5.git show <tagname>查看标签信息
6.建带有说明的标签,用-a指定标签名,-m指定说明文字 命令:git tag -a v0.1 -m "version 0.1 released" 1094adb
7.标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。
8.删除标签git tag -d v0.1
9.因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。如果要推送某个标签到远程,使用命令git push origin <tagname>
10.一次性推送全部尚未推送到远程的本地标签 命令:git push origin --tags
11.如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除
git tag -d v0.9
git push origin :refs/tags/v0.9
12.使用git对项目进行管理
将项目文件夹初始化为一个Git仓库 git init
先在远程github上创建一个仓库里面会有关联命令
关联远端github上远程仓库 git remote add origin https://github.com/webprevious/gshop.git
将文件夹内的文件提交到本地暂存区 git add *
将本地暂存区提交到本地仓库git commit -m "提交"
将本地仓库提交到云端github仓库git push origin master
从云端github获取仓库文件git pull origin master