代码版本管理工具,定要先更新后提交,git提交本地,推送远程

集中式版本控制系统---中央服务器(不安全)--图书馆借书--必须要联网--提交代码到中央

CVS

SVN

----受限与网络,回退,多版本分支

Maven--https://mvnrepository.com

分布式版本控制系统-----git----这个 “中央服务器” 只是为了方便大家“交换”修改,每个人的电脑上都是一个完整的版本库(安全),不需要联网--提交代码到本地

1 配置全局属性-用户名密码

git config --global user.name "----"

git config --global user.email "---"

git  config --list 

git  config -l 

2设置仓库目录--初始化

该目录下直接 git init 生成隐藏文件夹*.git

或者git init --bare 直接是设置git仓库,不生成隐藏目录--用于搭建自己git远程服务

3 仓库基本操作

a 当前仓库状态 git status

b 添加暂存库 git add 文件名/批量全部添加 git add .

c 提交到本机本地版本库 git commit -m ”注释"

不区分暂存库版本库,一步直接提交到版本库 git commit -a -m "注释"

* 查看文件改动 git diff 文件名

* 查看文件提交栈历史 git log 文件名--可得到 commit ID--用于版本回退

注意:

git 三区-工作区 暂存库 版本库Master       --历史穿越HEAD

虽是同一文件,但要注意不同区域的修改!提交的结果

添加后再修改,然后提交。此时后面的提交不应被提交。提交的是第一次添加的结果。

* 版本穿越--回退切换--commit ID 与Master分支上的HEAD指针

git log --pretty =oneline

HEAD指的是当前正在使用的版本。最新的提交点

改变了HEAD的指针--回退指定版本--  git reset --hard~1

* 查看删除的提交点日志 git reflog  针对版本的操作,恢复指定版本

git reset --hard id值   提交点就是恢复点

* 撤销修改

未add--工作区撤销--git checkout 文件名

已add未commit--暂存区撤销--先撤到工作区,再回退内容

git reset HEAD 文件名 + git checkout 文件名

区域操作

工作<——>暂存  git add /git reset HEAD

暂存——>master分支 git commit

* 文件删除

工作区 del 文件名 再提交 git commit -a -m "删除"

再恢复文件 git reflog --> git reset --hard id值

未提交 git checkout 文件名

总结:工作区恢复checkout,Master分支上用版本穿越git reset --hard id值

远程仓库服务器----国内外代码托管网站----在线的基于Git的代码托管服务平台

github

git remote add origin git@github...

git push -u origin master

注意仓库初始化,远程初始化就克隆,远程没有初始化就本地初始化然后推送过去

gitee

 ......

 模块代码与分支代码

每个模块可能都有不同分支

多个模块多个分支

* 分支创建与合并

Git规定所有要使用的分支将其定义在Master分支上。Master里的代码是提供给用户使用的,稳定!

开发过程会不断变化调试。所有的合作开发要在子分支上。最后反合主分支!

维护开发必须要在原有基础上创建新的分支!

所在模块本地分支 git branch

在该版本库创建新分支名 git barach 分支名   (在最后一个提交点创办的)

切换分支 git checkout dev分支名 (HEAD指向修改)

在新分支上开发---新分支比master分支代码更多

开发完毕,切回主分支开始 分支合并/代码返合/

git checkout master  合到哪,切到那!

git merge 分支 即快速合并,前提条件,master分支没有任何变化

其实改变master指向最方便(Fast-forward),HEAD指向随当前分支/操作而改变!

git push -u origin(指代远程)  分支名如master

git push -u origin dev  将分支提交到远程后,在github就可以看见分支信息

* 本地库删除分支 git branch -d 分支名

远程库也删除

git push orgin --delete 分支名 直接删除

git push orgin:分支名 推送空分支覆盖

冲突修改----一个文件被多人修改

git checkout -b dev ==创建并切换到那个分支

git merge 分支名 -->出现conflict,同时该分支上的文件内容会有标记!

解决冲突后,查状态,再git commit -a -m ""

分支合并模式

git log --graph --pretty=oneline

Fast-forward 提交方式没有提交点!不会产生提交信息!

git merge --no-ff -m "注释" 分支名   ; “-no-ff” 参数即no fast forward模式

 

实际中,master分支上不允许进行开发,master分支是要提供给客户,最终形式发布的!

所有人在dev分支上合并后,并且调试完毕后,在合并到主分支,进行测试回归,最后发布!要使用“-no-ff” 参数 即 no fast forward模式。产生新的提交点!

 工作区暂挂,当前分支没搞完,要紧急去处理另一分支的修改提交。

git stash 暂存分支

git stash list

* 恢复挂起

恢复挂起的工作区 git stash apply  + 删除暂挂区 git stash drop

直接一步到位 git stash pop 恢复工作区+删除暂挂区

在主分支上 删除 其他分支!(自己不能删自己)  但git branch -d 分支名->该分支未合并,不允许删除!

分支没合并就删除,用强制删除 -D

 补丁分支----不用分支合并,应用补丁修改主干分支

git diff master > patch    命令行管道输出流,输出patch文件

到master分支上应用这个补丁信息 ,git apply patch ,再添加提交推送(还不如直接在主分支上改

修改需要通知远程开发者本人

git format-patch -M master 该版本目录下会多了一个*.patch文件,里面记录了修改者及代码修改内容等信息

把这个补丁拿到主干master分支上应用  git am *.patch ,再添加提交推送

* 抓取github上xx分支,且变为本地 yy分支

关联分支 git checkout -b yy origin/xx

 git pull 抓取失败

git branch --set-upstream-to=origin/xx yy

 git pull 可以抓取

标签

git tag

git tag v1.0

 git log --pretty=oneline --abbrev-commit

git tag v0.1 7f111fe(commit id)

git tag v0.1 -m "注释"

git show v1.0

git push origin v1.0

git push origin --tags

本地 git tag -d v0.1

远程 git push origin :refs/tags/v1.0

搭建git私服---略

图片参考链接  https://myslide.cn/slides/3023?vertical=1

命令参考链接 lxh

原文地址:https://www.cnblogs.com/daofree/p/13658753.html