Git:分布式版本控制工具,每个电脑都有完整的版本记录,在没联网的情况下也能够进行版本的回退
提交
创建分支
等所有版本控制操作
SVN:集中式版本控制工具,完整的版本记录只存在于中央仓库中,没联网的情况下不能够正常使用
git 仓库的常见状态
1.untracked
:未被添加到git仓库管理
2.not staged
:未被添加到暂缓区
3.to be committed
:将要被提交到git仓库
常用操作
1.创建仓库(该操作会创建.git
的文件,git能够管理该文件所在的目录以及所有的子目录下的文件)
git init
2.添加文件使用到git管理(或者把已经添加到git管理的文件,但是有修改的文件重新添加到暂缓区)
git add name
添加对应name的文件
git add .
添加所有文件
3.把文件修改信息提交到git仓库
git commit -m '这里是此次提交的注释'
git status
:查看git库的状态
git diff name
:查看文件在上次提交之后所做的修改,在暂缓区的文件无法查看
git reset HEAD name
:把文件从暂缓区移出到not staged
状态
git log
:查看提交日志
git reflog
:查看提交和回退记录
git reset --hard 版本号
:会退到指定版本
git checkout --name
:(用于清除所做的修改)1.未被提交到暂缓区,则回到和版本库中的一样 2.添加到了暂缓区,则回到和暂缓区中的一样(可以先通过git reset HEAD
先移出暂缓区,再清除修改)
git rm name
:从版本库中删除管理文件,把删除信息提到暂缓区,之后需要commit(错删了文件可以通过,git checkout --name
来恢复)
远程仓库管理
git remote add origin 地址
:添加一个远程库(origin
为给远程库取的一个名字,以后推送需要用到)
git remote remove name
:移除远程库
git push origin master
:把本地git仓库推送到远程(origin
:需要推送到的仓库,有时候可能有几个远程仓库,需要选择 master
:需要推送的是哪个分支)
git clone 地址
:把远程仓库clone到本地(只会clone
master分支)
tag操作
git tag
:查看本地所有的tag
git tag -a 'tag号' -m '标签注释'
: 在本地添加一个tag并添加注释
git push --tags
:把本地的tag全部推送到远程库
分支操作
git branch
:查看分支
git branch name
:创建分支
git checkout name
:切换分支
git checkout -b name
:创建+切换分支
git merge name
:把name
分支合并到当前分支中
git branch -d name
:删除一个分支
git branch -D name
:删除一个还没被合并的分支
git stash
:由于未被提交的工作在切换分支的时候会被带到新的分支,所有需要把尚未完成的工作stash
起来
git stash apply
:恢复工作现场,并且不删除stash
git stash drop
:删除stash
git stash pop
:恢复并删除stash
高级远程操作
1.拉取远程仓库固定分支
git clone 地址
:clone远程库的master分支到本地
git branch -r
:列出远程所有分支
git checkout -b 本地名 origin/远程名
:clone远程库的分支到本地
2.拉取远程更新
git pull origin 分支名
3.取得tag并创建分支
git checkout -b 分支名 tag名
4.解决push远程库Rejected
git pull:直接把远程库更新合并到本地
若有冲突,解决后:git add . git commit
git push
git fetch origin 分支名:拉取远程分支到本地
git merge origin/master -m '合并的注释':把远程库的分支合并到当前代码
若有冲突,解决后:git add . git commit
git push
git fetch origin 分支名
git rebase origin/master
若有冲突,解决后:git add . git rebase --continue
git push
总结:三种方法都能够解决问题,前两种在查看项目分支结构的时候会有合并的结构,第三种则没有(推荐使用第三种)