1.Git介绍
Git是分布式版本管理控制系统
Git使用好处:可以在脱机环境中查看开发版本历史,在合作开发中使用Git管理合作开发的代码,可以提升团队合作效率。
2.Git命令
Git配置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
创建版本库
$ git init
添加文件到Git仓库
$ git add <file>
$ git commit -m "description"
git add 添加文件从本地工作区到暂存区(stage),
git commit 将暂存区所有内容提交到当前分支(默认master分支)。
工作区:在电脑里能看到的目录; 版本库:在工作区有一个隐藏目录.git,是Git的版本库。 Git的版本库中存了很多东西,其中最重要的就是称为stage(或者称为index)的暂存区,还有Git自动创建的master,以及指向master的指针HEAD。
查看工作区状态
$ git status
查看修改内容
$ git diff
$ git diff --cached
$ git diff HEAD -- <file>
git diff 可以查看工作区(work dict)和暂存区(stage)的区别
git diff --cached 可以查看暂存区(stage)和分支(master)的区别
git diff HEAD -- <file> 可以查看工作区和版本库里面最新版本的区别
查看提交版本日志(版本id)
$ git log
简化日志信息
$ git log --pretty=oneline
版本切换
$ git reset --hard commit_id
commit_id代表你提交的版本id可以通过git log 命令查看。切换时可以只写commit_id前几位而不必需要完整的id号。
版本回退
$ git reset --hard HEAD^
在Git中用 HEAD 表示当前版本 上一个版本就是 HEAD^
丢弃工作区的修改
$ git checkout -- <file>
该命令是将文件在工作区的修改全部撤销,有两种情况
1.file修改了,但是还没有 git add 现在撤销修改回到和版本库一样的状态。
2.已经使用 git add 后又修改了文件,现在撤销修改回到添加暂存区后的状态。
将暂存区修改撤销掉重新回到工作区
$ git reset HEAD <file>
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
远程仓库
创建SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"
关联远程仓库
$ git remote add origin https://github.com/username/repositoryname.git
第一次推送到远程仓库
$ git push -u origin master
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送到远程仓库
$ git push origin master
只要本地做了提交,就可以通过以上命令把本地master分支最新修改提交至远程仓库
从远程仓库克隆项目
$ git clone https://github.com/usern/repositoryname.git
创建分支
$ git branch <branchname>
查看分支
$ git branch
切换分支
$ git checkout <branchname>
直接创建分支并切换到当前分支
$ git checkout -b <branchname>
合并某分支到当前分支
$ git merge <branchname>
假如需要将dev分支合并到master分支,那么此时需要保证我们当前处于master分支,然后输入git merge dev 即可。
解决冲突:在 git merge时 出现冲突提示,git status 查看具体冲突,在文件中进行手动合并,(此时已经合并了,解决完冲突之后不需要再进行合并了,只需要重新提交一遍即可 )。
删除分支
$ git branch -d <branchname>
一般一些小的分支只用于实现局部功能的分支,在合并完成后建议删除,可以不至于以后分支过多导致混乱。
保存工作现场
$ git stash
查看保存的工作现场
$ git stash list
恢复工作现场
$ git stash pop
修改bug一般流程
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;此时当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。
删除未合并分支
$ git branch -D <branchname>
-D表示强制删除
查看远程库信息
$ git remote -v
在本地创建和远程分支对应的分支(这块不是很理解)
$ git checkout -b branch-name origin/branch-name
本地和远程分支的名称最好一致。
建立本地分支和远程分支的关联
$ git branch --set-upstream branch-name origin/branch-name;
从本地推送分支
$ git push origin branch-name
如果推送失败则可能会有冲突,先用git pull抓取远程的新提交;
从远程抓取分支
$ git pull
如果有冲突需要先解决冲突
多人协作的工作模式通常是这样:
首先,可以试图用git push origin <branch-name>推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
标签
新建标签
$ git tag <tagname>
查看所有标签
$ git tag
删除标签
$ git tag -d <tagname>
------------------------------------------------------------------------------------
2020-05-22更新
更新分支信息
git fetch origin --prune
使用 git branch查看分支信息时发现还是旧的分支信息,需要使用git fetch origin --prune更新分支信息
写在最后:
Git学习推荐 廖雪峰老师的博客:https://www.liaoxuefeng.com/wiki/896043488029600
github笔记,多谢参考如有侵权,请联系作者。
如有错误也请不吝指出,大家共同学习进步。