svn vs git
svn:集中式版本控制系统:文件内容、版本信息,修改信息放在中央服务器上,拷贝的是某一特定版本,存储文件的变化。递增编号作为版本号
git:分布式版本控制系统:拷贝整个服务器代码,所有版本。交互在本地仓库完成,需要共享代码才推送到远程。最初Linux源代码的维护,分支开发。根据文件内容,生成hash值作为版本号
git状态
已修改状态,工作区,修改,但并未打算提交
已暂存状态,暂存区,未提交,放到下次要提交的快照中
已提交状态,远程区,已经在本地仓库中,可以在分支中查看
git status 查看工作区中文件状态
git diff 查看分支间区别
git merge 、解决冲突、git push 推送最新代码
http:每次会让重新输入用户名、密码
ssh:需要本机的ssh公钥添加到远程
.gitignore:忽略一些文件,当文件没有被跟踪,不会提示:logs/、a.md
.git: 本地仓库,保存git对象、logs等
git 常用命令:
git clone 克隆
git init 创建空的本地仓库、重新初始化存在仓库
git remote
管理相关远程仓库,origin;-v 查看详细信息,rename、remove::

git remote rename origin o

git remote remove o

git log 记录提交,本地远程同步保存
git status 工作区域状态
git reflog 所有分支所有操作,包括clone,checkout,存在于本地仓库
git reset HEAD file.txt 将文件从暂存区撤回到工作区(撤销git add)
git config
修改git配置信息:作者邮箱,作者

git config –add user.name lily

git config

git diff
默认显示工作区与暂存区中文件差异

git diff –cached(–staged)(暂存区与最新本地仓库差异)

git diff 版本号1 版本号2

git diff master jing.quan

git add 推到暂存区
git commit 暂存区到本地仓库
git push
本地仓库到远程仓库:本地建立jing.quan分支,没有对应上游分支

git push –set-upstream origin jing.quan(-u)

git merge 合并分支(合并本地工作区的branch和本地的origin/branch)(checkout master, 合并branch到本地master)
git fetch 拉取远程到本地(拉取远程的branch到本地的origin/branch)
git pull 拉取远程到本地,再合并分支
git branch
管理分支

新建:git branch jing.quan (-b)

删除:git branch -d jing.quan

查看分支详细信息: git branch -v

git checkout
切换分支、撤销文件:

git checkout -b jing.quan(新建、切换)

git checkout –jing.quan.txt(工作区还原成暂存区,放弃自己的更改)

git checkout 版本号 文件名(还原到某一版本中的某一个文件)

git checkout HEAD(当前)~n(没有n:上一次的提交,n代表上几次) 文件名(同上)

git reset
重置HEAD到指定的状态(当前分支)

–mixed(默认)撤出缓存区的变更,变回原来本地仓库的版本

–hard 覆盖暂存和工作区

–soft 改变HEAD指针,改变工作区

git revert
回滚(撤销commit)操作将被当做一次提交

git revert 版本号(同git reset –hard 版本号,区别在reset会抹除目标版本号以后的提交)

git cherry-pick
某次提交内容合并到当前分支(git branch)

git cherry-pick 某次提交版本号

git merge 冲突解决:
继续合并:先git pull,拉取最新的,再解决冲突,再add、commit、push
取消合并:git merge –abort
合并时,一个分支的所有commit都变成一个commit,放到当前分支的前面
git rebase:一个分支的修改合并到当前分支,一个分支的所有commit都连接到当前分支的前面