版本控制的作用
♢ 记录每次改动,可以退回到之前版本。
♢ 协助共同管理代码
♢ 解决代码冲突问题
分布式
集中式:版本库放在中央服务器中,编写时先从服务器获取到最新版本,修改完场之后,再上传到中央服务器。需要联网才能操作。
分布式:所有参与者的电脑都是一台中央服务器,每个人都有一个完整的版本库,多人协作时,互相推送自己的修改的部分,就可以看到对方修改的地方.
git 三大分区
工作区
缓存区
版本库
已经提交的数据
修改了多个文件,在不放弃任何修改的情况下,其中一个文件不想提交,如何操作?
(没add操作 : git add 想提交的文件
已经add: git reset –soft 将文件从暂存区回滚到工作区,重新add)
修改到一半的文件,突然间不需要或者放弃修改了,怎么恢复未修改前文件?
(git checkout) 检查与上次提交有区别的文件的位置
代码写一半,被打断去做其他功能开发,未完成代码保存?
(git stash 提交到缓存区)
代码写一半,发现忘记切换分支了?
(git stash & git checkout)
代码需要回滚了?(git reset)
git reset –soft commit_xxid
暂存区->工作区 将commit_xxid提交从暂存区回滚到工作区
git reset –mixed commit_xxid 版本库->暂存区
将commit_xxid提交从版本库回滚到暂存区
git reset –hard commit_xxid
版本库->暂存区->工作区 三个区都清除commit_xxid提交
git 命令使用方式
git config
指定用户信息
$git config --global user.name
$git config --global user.email
$git config list //展示信息
$git config user.name
git add/commit
$git add [目录] //可以有多个,或者一个,添加到缓存区
$git add . //将当前目录下所有文件添加到缓存区
$git commit -m "info" //将缓存区内容添加到仓库
$git status //查看上次提交之后是否对文件进行更改
♢ git add 时有一个当前目录,可以提交这个目录下的文件或者文件夹
♢ git status 和
git remote
$git remote add hw https://github.com/Mqying/hello-world
//git remote add [<options>] <name> <url>, 加上 hw 代表别名为 hw
//没有的话,添加失败
$git remote //展示远程仓库,只展示仓库名
$git remote -v //展示仓库名,展示链接的 URL
$git remote remove <name> //删除远程仓库
//设置远程仓库之后,只能在 git pull 时使用,git clone 时显示不存在
♢ 每个文件下建立自己的 remote
♢ git pull 之后要用到仓库名
git checkout
$git checkout //显示当前与上一次提交内容发生变化的文件的地址信息
M package/package_in/txt
M txt
♢ 检查发生变化的位置
git clone
$git clone URL //从无到有的过程,从远程服务器克隆一个代码库,第一步先克隆
git fetch
$git fetch //从远程获取代码库
$git merge //远程分支到自己所在的分支
git pull
$git init
$git clone <url>
$git remote add vapp <url>
$git pull vapp
//修改后
$git add .
$git commit -m "info"
$git push
git restore
$git restore . //当前目录下所有文件回退到上一次提交情况
$git restore [destination] //修改目标地址
♢ 这里注意 restore 的位置,包含关系与特指目的
♢ 第一行的提交指的是提交到缓存区,而不是提交到版本区
git diff
$git diff //展示尚未预存的修改
$git diff --staged //对比预存和最后提交内容
git rm
$git rm txt //删除文件
$git remote rm name //删除远程仓库