git的使用细则
安装过程注意事项
1、设置唯一标识
git config –global user.name “你的名字”
git config –global user.email “你的邮箱”
git config –global gui.encoding utf-8 设置默认字符集
git config –global core.quotepath off 防止中文路径乱码
git config –global core.ignorecase flase
2、创建本地仓库(本地文件夹)
mkdir 文件名
pwd命令用于显示当前目录
3、初始化git仓库
git init
使用过程中的注意事项
一、理解工作区、暂存区和仓库的概念
1、git add <文件名>
相当于将工作区的文件添加到暂存区
2、git commit -m “描述内容”
相当于将文件提交到仓库并且添加了本次的提交描述
3、git status
用于查看仓库的当前状态
4、git diff HEAD –文件名
用于查看修改文件的不同(和上一次比较)
5、git log
用于显示最近到最远的提交日志
6、git log –pretty=oneline
将日志按一行显示
7、git log –pretty=oneline –abbrev-commit 将ID号简写显示
注意点:在git中 HEAD 代表当前版本,表示最新的版本,上一版本就是HEAD^,上上版本就是HEAD^^,也可以写成HEAD~100就代表当前版本
向上100个版本。
1、git reset –hard HEAD^
表示回滚到上一版本。该命令既可以回退版本,也可以把暂存区的修改回退到工作区
2、git reflog
表示查看每一次命令
3、git checkout –文件名
表示让文件回到最近一次git add或git commit时的状态。
git checkout
–文件名,其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
注意点:
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
1、git rm 文件名 表示删除文件
当先使用git rm ,再使用git commit 时才会将仓库中的文件删除。否则使用git checkout可以将一键还原(无论删除还是修改)
关联本地库和远程库:
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
克隆远程库:
git clone git@github.com:michaelliao/gitskills.git ssh协议方式
git clone https://github.com/michaelliao/gitskills.git https协议方式
创建分支并且切换到该分支命令:
git checkout -b dev
等价于:
git branch dev
git checkout dev
git branch 用于查看当前分支
git merge dev 合并dev分支到当前分支
git branch -d 分支名 删除分支
用git log –graph 命令可以看到分支合并图。
git log –graph –pretty=oneline –abbrev-commit
git merge -no-ff -m “合并信息提醒” 分支名 该命令是采用commit的方式提交合并(即有合并分支记录)
多人协作的工作模式通常是这样:
1、首先,可以试图用git push origin branch-name推送自己的修改;
2、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3、如果合并有冲突,则解决冲突,并在本地提交;
4、没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,
用命令git branch –set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
git checkout -b branch-name origin/branch-name 在本地创建和远程分支对应的分支
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
git stash 用来保存当前的工作现场。
git stash list 查看工作现场列表
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了。
git stash apply stash@{0} 恢复到指定的工作现场。
git branch -D 分支名 强行删除分支。
敲命令git tag commit的ID号 就可以打一个新标签。(需要先切换到该分支下)
git tag查看所有标签。
git show 查看标签信息
创建带有说明的标签,用-a指定标签名,-m指定说明文字,如git tag -a v0.1 -m “version 0.1 released” 3628164
git tag -d v0.1 在本地删除标签
git push origin 推送某个标签到远程
git push origin –tags 一次性推送全部尚未推送到远程的本地标签
注意:删除标签(如果标签已经推送到远端)
1、先从本地删除标签。git tag -d v0.9
2、从远程删除标签。git push origin :refs/tags/v0.9
git remote rm origin 删除已有的GitHub远程库