Git的特点
Git是分布式版本控制系统,而CVS和SVN是集中式版本控制系统。
Git跟踪并管理的是修改,而不是文件本身。
Git的安装
- linux:
sudo apt-get install git
若是其他版本:
./config
make
sudo make install
- windows:
安装完之后需要配置:
git config --global user.name "your name"
git config --global user.email "you email"
Git的操作
初始化:
git init
查看仓库状态:
git status
文件对比:
git diff
查看提交日志:
git log 显示所有的提交日志
git log -n 指定显示条数
git log --oneline 单行显示
查看命令日志:
git reflog
添加文件到暂存区:
git add readme.txt
将暂存区的所有修改和新增文件添加到本地仓库,并且附上说明:
git commit -m "wrote a readme file"
版本回退到上一个版本:
git reset --hard HEAD^
版本回退到指定版本:
git reset --hard commit_id
丢弃工作区的修改:
让这个文件会到最后一次的git add或者git commit状态
git checkout -- readme.txt
此命令就是让版本库里的版本替换工作区的版本
丢弃暂存区的修改:
分为两步:
git reset HEAD readme.txt
git checkout -- readme.txt
关联远程仓库:
git remote add origin git@github.com:username/cangku
推送本地库的所有内容到远程库:
git push -u origin master
第一次推送需要加-u,后续只需要:
git push origin master
克隆仓库:
git clone git@github.com:user/cangku
Git的分支
创建分支:
git checkout -b dev
-b表示创建并切换,与以下指令等价
git branch dev
git checkout dev
还可以这样写:
git switch -c dev
git switch master
查看当前分支:
git branch
合并分支:
git merge dev
删除分支:
git branch -d dev
如果在删除分支时不想彻底删除,则需要禁用Fast forward(合并后看不出来有合并记录)模式:
git merge --no-ff -m "merge with no-ff" dev
分支策略
- master分支需要稳定,仅用来发布新版本;
- 分支不稳定,用来开发
工作现场存储命令:
git stash
在哪个分支上修复bug,就在哪个分支上创建临时分支:
修复完成后,需要返回分支,修复现场:
git switch dev
git status
git stash list
git stash drop 保护原来现场
git stash pop 删除原来现场
复制特定分支到当前分支:
git cherry-pick bugfenzhi
强制删除没有被合并的分支:
git branch -D fenzhimingcheng
查看远程库的信息:
git remote
git remote -v
推送分支:
git push origin master
git push origin dev
创建远程的dev分支到本地:
git checkout -b dev origin/dev
标签管理
创建标签:
git tag v1.0
查看所有标签:
git tag
标签是打在最新提交的commit上的,补打标签可根据commit:
git tag v0.2 commit
带有说明的标签:
git tag -a v0.1 -m "shuoming" commit
查看说明文字:
git show <tagname>
删除标签:
git tag -d v0.1
git push origin v1.0 推送远程
git push origin --tags 推送所有标签到远程
删除远程标签:
git push origin :refs/tags/<tagname>