Linux-05 git

一、版本控制

    用文档记录每个模块的改动,存储、追踪修改历史。方便恢复版本以及版本查看。

二、版本控制软件

- SVN 集中式版本控制系统

    SVN服务器在公司(内网)

    SVN服务器在外网

    版本库是集中放在SVN服务器中,每次操作都要从SVN服务器获取最新的,每次操作完之后都要上传到SVN服务器;

    如果SVN服务器崩了,全部人都不能干活!

    完整项目代码只有在SVN服务器!


- GIT 分布式版本控制系统

    每个人的电脑都是一个完整的版本库!

    团队操作,只需要互推代码即可!

    为了方便还是会有一个 GIT服务器,服务器更多就是备份一个份代码,更多是方便代码交换!

    就算GIT服务器崩溃,不会影响到任何人!

三、git和GitHub

    git 分布式版本控制系统

    GitHub 网站(提供了git服务,开源项目免费提供Git存储)

四、git安装

    $ sudo apt install git

五、git使用【本地】

- 版本库

    就是一目录,目录中有文件专门用于记录一个删除、添加、修改等操作!

- 设置git (标识你是谁)  【只需要配置一次】

    git config --global user.email "zyz@qq.com"

    git config --gloabl user.name "zyz"

- 创建仓库(版本库)

    // 切换到项目目录中

    cd Meituan

    // 初始化本地仓库(版本库)  创建.git目录

    git init

- 忽略清单 .gitignore

    // 创建忽略清单

    touch .gitignore

    > 一个行,表示一个忽略规则

- 查看仓库状态

    git status

    git status -s // 输出简要变更日志

    备注:

    ? 没有添加到版本库中(即不会记录改动操作)

    A 已添加到本地代码仓库中

    D 被删除

    M 被修改

    I 被忽略(忽略清单中添加)

- 添加版本库(本地托管)

    git add hello.c // 将hello.c文件添加到本地版本库(托管)

    git add . // 将当前中所有未托管的文件 全部添加到本地版本库中

- 从版本库中删除

    git rm -r --cached . // 删除所有托管

    git rm -r --cached world.c // 将world.c从托管中移除

- 提交到本地仓库(版本库)

    git commit -m "提交版本说明"

- 查看提交日志

    // HEAD

    git log

    git log --pretty=oneline (一行查看)

- 对比差异

    git diff filename // 对比当前版本和存储版本库中最新版本进行对比

- 版本回退

    // 时光倒流

    git reset --hard HEAD^ // 回退到上一版本

    git reset --hard HEAD^^ // 回退到上上版本

    git reset --hard HEAD~30 // 回退到上30版本

    git reset --hard xxxxxx // 对应版本的hash值的前6位

    git reset --hard xxx...  // 对应版本的hash值

    // 回到未来(用reset回到之前版本后)

    git reflog // 查看git历史操作

    git reset --hard xxxxxx

    备注: HEAD 指向当前版本

- 撤销操作

    // 编辑该文件

    $ vi 01-test.c

    a. 未添加到缓存区

    git checkout // 查看 (git status)

    git checkout -- 01-test.c

    b. 添加到缓存区

    git add .

    git reset --hard HEAD

    c. 添加版本库

    git add .

    git commit -m "01test编辑"

    git reset --hard HEAD^

六、git使用【远程】

- GitHub创建代码管理仓库

 

- 添加远程仓库

    // 添加远程仓库,远程仓库名叫 origin

    git remote add origin https://github.com/iphone3/python1807.git

- 查看远程仓库

    git remote -v

- 删除远程仓库

    git remote rm origin

- 推送本地仓库内容 到 远程仓库

    // master主分支

    git push -u origin master

- 拉取(获取)远程仓库  到  本地仓库(github中的README.md文件不在本地代码目录中)

    git pull origin master

  (git pull --rebase hehe master)

- 克隆

    // 默认仓库名就为目录名

    git clone https://github.com/iphone3/python1807.git

    // 指定目录

    git clone https://github.com/iphone3/python1807.git Meituan

    备注: 一般项目开始,可以在GitHub中先创建,再将整个代码仓库克隆下来

七、HTTPS方式和SSH方式

- HTTPS

    git remote add origin https://github.com/iphone3/python1807.git

    git push origin master

    git pull origin master

   // orgin为库名,随意取

【每次操作都需用户名和密码】


- SSH 【前提是有配置SSH】

    git remote add origin git@github.com:iphone3/python1808.git

    git push origin master

    git pull origin master

    GitHub中ssh配置:

- 创建.ssh目录

    mkdir ~/.ssh

- 切换目录

    cd ~/.ssh

- 配置全局name和email 【已经配置,直接忽略】

    - 生成KEY

    // 上面配置全局和这里的邮箱与之对应

    ssh-keygen -t rsa -C "zyz@1000phone.com"

    - 配置GitHub的key 【id_rsa.pub】

    settings >> SSH AND GPG Keys >> New SSH Key >>

    - 检测是否配置成功

    ssh git@github.com

八、分支管理

- 查看分支

    git branch

- 新建分支

    git branch dev

- 删除分支

    git branch -d dev

- 切换分支

    git checkout dev

    git checkout master

- 新建并切换分支

    git checkout -b test // 创建test分支,并切换到test分支

- 推送分支

    git push origin master // 推送到主分支

    git push origin dev // 推送到dev分支

- 合并分支

    // test分支合并到master分支

    git checkout master

    // 合并(在master分支)

    git merge test

- 抓取分支(默认是master分支)

    git checkout -b test origin/test

九、补充

-删除git

删除隐藏在文件夹中的.git 隐藏文件(ls -a 可以看到),使用 -rf 强制删除

删除库也要用 -rf

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容