Git - 分布式版本控制系统,每台电脑上都可以离线存一个仓库,但总是设立一台服务器作为远程库 SVN - 集中式版本控制系统,无本地仓库,push pull 必须通过中央服务器
git init # 初始化,创建仓库
git add . # 添加所有文件(添加单一文件写文件名)到缓存区
git commit -m "message" # 将缓存区所有任务保存到仓库,并添加本次修改的信息(注释)
git status
# 查看当前仓库状态,会显示无修改、有修改但未提交缓存、提交缓存但未提交仓库多种状态
git diff <filename> # 查看当前文件与最新版本的差异
git log # 显示历史记录
git log --pretty=oneline # 一行显示历史记录(显示全部id)
git log --oneline # 一行显示历史记录(显示id前7位)
git reflog # 显示所有命令记录
git log --graph # 显示分支合并图
git reset --hard <commit ID> # 退回某一版本,HEAD为最新版本
git checkout -- <filename> # 丢弃缓存区某文件的修改
git rm <filename> # 删除某文件并提交到缓存区
git tag v1.0 # 给最新commit创建tag
git tag v0.9 f52c633 # 给f52c633创建tag v0.9
git tag -d v1.0 # 删除这个tag
git remote add <name(origin)> [email protected]:ewdager/learngit.git
# 从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联
git push -u origin master
# 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,
# Git不但会把本地的master分支内容推送的远程新的master分支,
# 还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
git clone [email protected]:ewdager/learngit.git # 克隆版本库
git checkout -b dev # 创建dev分支并切换,等于一下两条命令
git branch dev # 创建dev分支
git checkout dev # 切换至dev分支
git branch # 查看当前分支
git nerge dev # 把dev分支合并到master
git branch -d dev # 删除dev分支
git merge --no-ff -m "merge with no-ff" dev
# 强制禁用Fast forward模式,Git就会在merge时生成一个新的commit。删除分支后,不会丢掉分支信息
git stash # 储存当前“状态”,供后续恢复,不会影响缓存区和仓库
git stash list # 查看储存列表
git stash apply <stashid> # 恢复某次状态
git stash drop <stashid> #删除某次状态
git stash pop <stashid> # 恢复并删除某次状态
git branch -D <name> # 强制删除没被合并过的分支
git rebase # 让分支变得更美观!
id_rsa
为私钥,id_rsa.pub
为公钥。
git status
查看冲突文件,然后手动修改冲突文件,最后将冲突文件add
、commit
即可合并成功。可用git log --graph
查看分支合并图。