项目版本控制-git

项目版本控制-git

Posted by ysy on September 23, 2017

##前言

开发过程中版本控制是必须的,这个是git的一个笔记

简介

Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件

开始git

新项目

git init

编写完功能后,提交到github

git remote add origin git@git-pd.megvii-inc.com:ysy/ysy.git    //指定远程git
git add .                                //提交全部文件
git commit -m '这是这次commit的描述'       // commit的时候要提交备注
git push origin master                  

已经存在的项目

git clone git@git-pd.megvii-inc.com:ysy/ysy.git           // 从远端克隆代码到本地
git add .                                //提交更改的文件
git commit -m '这是这次commit的描述'       // commit的时候要提交备注
git push origin master    

常用命令

分支相关 对于分支管理,要求是不同更新需要创建(忽略已存在)一个不同的分支,然后提交到远端(master分支不允许更改,只允许合并),自己创建的分支合并后自己要删除

查看分支

git branch             //查看本地分支
git branch -r          //查看远端分支

开启一个分支

git branch ysy          //创建一个名为ysy的分支
git checkout -d ysy     //创建一个名为ysy的分支,并切换到该分支

切换分支

git checkout ysy       //切换到ysy分支

merge分支(对于已经确定更新完成的功能需要merge)

git checkout master    //切换到master
git merge ysy          //将ysy merge到master分支上      

解决冲突后上传到远端

删除分支

git branch -D ysy              //删除本地分支
git push origin :ysy     //删除远端分支

基本命令 查看文件修改

git status           //查看所有修改的文件名
git diff             //查看所有文件修改的具体内容
git diff readme.md   //查看readme修改的文件内容

取消修改(删除修改内容)

git checkout .              //取消所有文件修改
git checkout readme.md      //取消readme的文件修改

注意:git checkout 操作不可逆,属于硬操作,谨慎使用

查看log

git log

commit 8141b716ed258fd12c877b035c90dfdcafcf4ad8
Author: yangshuyu <810043299@qq.com>
Date:   Fri Nov 8 18:55:50 2019 +0800

    cookie名字重新设置

commit ce141e1e136e4b6caa76cc49e68fceea131c90bc
Author: yangshuyu <810043299@qq.com>
Date:   Fri Nov 8 18:18:09 2019 +0800

    报表与第三方登录:

commit a44db2aa643eb455a634086b70aee31d3933a0a0
Author: yangshuyu <810043299@qq.com>
Date:   Fri Nov 8 18:16:56 2019 +0800

    第三方登录增加回调

commit 414f79d47a67acde9f2bf77095da9be562b24680
Author: yangshuyu <810043299@qq.com>
Date:   Fri Nov 8 17:12:46 2019 +0800

    第三方登录

代码回滚(新上的功能有问题,需要回滚到前面)

git log                      //查看所有版本相关记录
git checkout a44db2aa643eb455a634086b70aee31d3933a0a0   //切换到这次commit

进阶

保存当前本地更新到缓存区 我们有时会遇到这样的情况,正在dev分支开发新功能,做到一半时有人过来反馈一个bug,让马上解决,但是新功能做到了一半你又不想提交,这时就可以使用git stash命令先把当前进度保存起来,然后切换到另一个分支去修改bug,修改完提交后,再切回dev分支,使用git stash pop来恢复之前的进度继续开发新功能

git stash 
git stash save '描述信息'
以上两条是将代码保存到缓存区,第一条是没有注释

查看所有stash

git stash list

回复缓存区的代码

git stash pop 恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
git stash pop --index 恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
git stash pop stash@{1}恢复指定的进度到工作区。stash_id是通过git stash list命令得到的

强制回滚代码

git reset a44db2aa643eb455a634086b70aee31d3933a0a0

强制回滚到某一个版本,硬操作,不建议使用

查看当前远程库地址

git remote -v 

origin	git@git-pd.megvii-inc.com:yangshuyu/itop-backend.git (fetch)
origin	git@git-pd.megvii-inc.com:yangshuyu/itop-backend.git (push)

修改远程仓库地址(指定新的远程仓库)

git remote rm origin
git remote add origin git@git-pd.megvii-inc.com:yangshuyu/mtco-web.git        //指定新的远程库