git理解大致流程

git:分布式

所谓分布式,就是每个开发者的本地客户端都是一个完整的仓库,都能记录历史版本信息,不需要联网也可以生成版本记录,也可以快速回退到某个版本。

如果只有一个人开发,可以不把本地历史版本记录上传到中央服务器,但如果多人协同开发则需要。

命令

git status

查看当前修改的文件处于哪一个区域:

红色–工作区,

绿色–暂存区,

看不见–已经提交到历史区(生成版本了)(commit过了)三区保持一致了。

git rm --cached xxx.xx

把暂存区某个文件删除

  1. git rm --cached . -r : 删除暂存区中所有提交的

    如果在删除过程中,发现从暂存区删除的文件在工作区已经被修改,只有加上 -f 才能强制从暂存区把内容删除

  2. 让暂存区内容覆盖工作区:

    git checkout xxx.xx

回滚

git checkout .

把暂存区内容回滚到工作区(一旦回滚,工作区内容无法恢复)

git reset HEAD .

把当前暂存区内容(删除掉)回滚到上一个暂存区,目的是为了把上一个暂存区内容回滚到工作区

git reset --hard 版本号

在历史区(执行commit之后的)中回退到某一个版本(强制把暂存区和工作区都变成回退后的版本)

团队协作

注:master代表分支名

客户端A,客户端B,…,中央仓库

git push origin master :把本地历史区中的信息推送同步到中央服务器

git pull origin master :拉取–把中央仓库中的信息和本地仓库保持同步

基础流程:

  1. 创建一个中央仓库:可以基于GitHub(最好不要创建空仓库,因为没有任何分支,建议创建一个master分支)

  2. 创建客户端本地仓库(一个开发者就是一个单独仓库),还需要让本地仓库和远程仓库保持关联,以便实现后续的信息同步。

    1. 新建目录,然后git init 初始化一个仓库
    2. 本地仓库和远程仓库建立连接:git remote add origin 远程仓库地址(git://github.com/xxxx)||| git remote rm origin :移出本地仓库和远程仓库的连接

    另:有更直接的方式–只要把远程仓库克隆到本地,就相当于创建本地仓库,而且自动创建了连接,并把远程仓库中的内容也同步到了本地。

    ​ $ git clone “远程仓库地址”

  3. 各自和中央服务器同步信息 (第一次:仓库的分支都是生成历史版本记录才有的)

    推送:git push origin master (推送之前先拉取一下,避免冲突)

    拉取:git pull origin master

单独分支

​ 分支指的是历史区的分支。创建分支就是创建不同的线路,来管理历史版本。

  1. 新创建分支(会自动同步本地master分支中的内容到新分支上),切换到指定分支下

    git branch :查看本地存在的分支

    git branch -a :查看全部分支(远程和本地)

    git checkout -b dev :创建并切换到这个dev分支 || 删除分支:git checkout -D dev

  2. 把自己本地分支内容,合并到自己本地master分支上,然后提交。

    • git stash :暂存文件(分支内容有更改,不能直接切换分支,需要把修改的内容暂存)
    • 切换到master分支上 git checkout master
    • git stash pop :还原暂时存储的内容
    • git merge dev(此时在master分支上):把dev分支内容合并到master分支上
    • git pull origin 远程分支名
    • git push origin 远程分支名(有冲突,i->ESC->:wq 1.把两份代码都保存在本地文件中;2.自己手动选择,重新提交)

补充

合并 :

​ 1.merge 在开发过程中,多个分支产生了修改并进行了提交pull(会更改HEAD的指向到当前),然后需要进行合并(merge)到主分支(当前在主分支上),在合并分支的时候,由于产生了冲突,需要修改冲突,重新提交:(这种是no fast-forward)

add 把变更录入到索引中
commit 记录索引的状态

​ 2.rebase 在当前上对主分支使用rebase命令 ,然后修改冲突提交(此时不是用commit,而是执行rebase命令指定 --continue选项。),这样就可以执行 fast-forward合并了,此时切换到master分支,执行merge合并.

令 ,然后修改冲突提交(此时不是用commit,而是执行rebase命令指定 --continue选项。),这样就可以执行 fast-forward合并了,此时切换到master分支,执行merge合并.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值