版本控制的作用

♢ 记录每次改动,可以退回到之前版本。
♢ 协助共同管理代码
♢ 解决代码冲突问题

分布式

集中式:版本库放在中央服务器中,编写时先从服务器获取到最新版本,修改完场之后,再上传到中央服务器。需要联网才能操作。

分布式:所有参与者的电脑都是一台中央服务器,每个人都有一个完整的版本库,多人协作时,互相推送自己的修改的部分,就可以看到对方修改的地方.

git 三大分区

工作区

直接编辑的地方

缓存区

数据暂时存放的取余

版本库

已经提交的数据

Git - 图1

  1. 修改了多个文件,在不放弃任何修改的情况下,其中一个文件不想提交,如何操作?
  2. (没add操作 : git add 想提交的文件
  3. 已经add: git reset soft 将文件从暂存区回滚到工作区,重新add
  4. 修改到一半的文件,突然间不需要或者放弃修改了,怎么恢复未修改前文件?
  5. (git checkout) 检查与上次提交有区别的文件的位置
  6. 代码写一半,被打断去做其他功能开发,未完成代码保存?
  7. (git stash 提交到缓存区)
  8. 代码写一半,发现忘记切换分支了?
  9. (git stash & git checkout)
  10. 代码需要回滚了?(git reset
  11. git reset soft commit_xxid
  12. 暂存区->工作区 commit_xxid提交从暂存区回滚到工作区
  13. git reset mixed commit_xxid 版本库->暂存区
  14. commit_xxid提交从版本库回滚到暂存区
  15. git reset hard commit_xxid
  16. 版本库->暂存区->工作区 三个区都清除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                //删除远程仓库