参考博客地址
Git是目前世界上最先进的分布式版本控制系统。
安装git就不说了。
1.创建版本库
git init // 把当前目录变成Git可以管理的仓库
执行完git init,当前目录会多一个.git的目录,该目录我们称之为版本库(Repository)?
版本库中有一个叫stage的暂存区,还有Git为我们自动创建的第一个分支master ,以及指向master 的一个指针叫HEAD
git add xxx // 把文件修改添加到暂存区
git commit -m "提交的说明" // 把暂存区的所有内容提交到当前分支
// 建议用这两步来提交文件,提交的文件要和.git目录在同一目录下面
2.版本回退?
git log // 查看提交历史,--pretty=oneline参数可简化日志的输出,只能查看当前版本之前的commit id
git reflog // 记录你的每一次命令,可查询当前版本之后的commit id
commit后面的一长串表示commit id
// HEAD表示当前版本,回退到上一个版本用HEAD^,回退到上上一个版本用HEAD^^,回退到100个版本之前用HEAD~100
git reset --hard HEAD^
// 上面是想后回退,向前回退,--hard后面跟对应的commit id,版本号没必要写全,前几位就可以了,Git会自动去找
git reset --hard 1094a
3.撤销修改
// 如果你想修改的文件还未添加到暂存区
git checkout -- file // 撤销文件在工作区中的修改
// 如果你想修改的文件已经添加到了暂存区,用下面两步撤销修改
git reset HEAD <file> // 把暂存区的修改回退到工作区
git checkout -- file
// 如果你想修改的文件已经commit了,参考上面的版本回退
4.删除文件
你在工作区删除了一个文件,工作区和版本库就不一致了,git status 命令会立刻告诉你哪些文件被删除了 如果想从版本库中删除该文件
git rm xxx文件 // 从版本库中删除该文件
git commit -m "说明文字"
如果你是误删的,并且该文件已经被提交到版本库,可以恢复
git checkout -- xxx文件 // git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以还原
5.远程仓库
①先有本地库,再想关联远程库
在github上面创建一个仓库
# 将本地库和远程库相关联
# 添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的
# 后面一段可以去github对应仓库上直接复制
git remote add origin git@github.com:你的GitHub账户名/仓库名.git
# 把本地库的所有内容推送到远程库上,实际上是把当前分支master推送到远程
git push -u origin master
# 第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,以后推送或者拉取就可以简化命令
# 从现在起,只要本地作了提交(commit),就可以通过命令把本地master分支的最新修改推送至GitHub
git push origin master
②解除本地和远程库的绑定关系?
git remote rm origin
③不用先有本地库,直接克隆远程库
同样,先在github上面创建一个仓库?
git clone git@github.com:你的github账户名/仓库名.git
如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。
Git支持多种协议,包括https ,但ssh 协议速度最快(默认的git:// 使用ssh)。?
6.分支管理
①创建分支、切换分支、查看分支、合并分支
git branch 分支名 # 创建分支
git checkout 分支名/git switch master # 切换分支
git checkout -b 分支名/git switch -c 分支名 # 创建并切换分支
git branch # 查看当前分支,该命令会列出所有分支,当前分支前面会标一个*号
# 之后我们就可以在该分支上修改文件,add,commit
git checkout master # 切换回master分支
git merge 分支名 # 当前分支为master,git merge命令用于合并指定分支到当前分支
git branch -d 分支名 # 合并完成后,想删除刚合并的那个分支
②合并冲突
如果你在某一个分支修改了文件,切换到master分支又修改了同一个文件,再进行git merge合并的时候,这种合并就可能会引发冲突。
git status # 告诉我们冲突的文件
直接打开冲突文件,?Git会用<<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容
这时,需要我们手动编辑文件,使两个分支发生冲突的地方保持一致,再进行add和commit
7.标签管理
|