Git

版本控制器--Git(注意版本号)

什么是版本控制器?

版本控制器就是管理项目的工具,用于记录和存储项目的更新迭代和备份等信息,以更好的控制项目的生命周期,有效减少风险。

如果是团队开发同一个项目,版本控制器可以整合代码,提醒代码的冲突问题

集中式和分布式版本控制器

集中式版本控制器

代表:svn

只有一个集中管理的服务器,保存所有文件的修改,多个客户端连接这个服务器,提交和更新文件

问题:

如果服务器被黑或者出现了异常,代码可能丢失,开发进度将会被拖延,而且必须联网才能正常工作

分布式版本控制器

代表:git

Git只关心文件数据整体变化,保存每次项目的快照,而且是分布式的,每一天电脑都可以作为服务器,也可以同时开发(客户端和服务端整合)

git工作流程

常用命令

cd 
cd ..
ls
ll
编辑文件
vi
i 进入编辑
esc 退出编辑
:wq 保存退出

创建全局用户

首先得创建全局用户,否则不让commit

git config --global user.name
git config --global user.email

全局配置文件在C:Users用户文件夹.gitconfig新建用户信息,在所有仓库下都可以使用,创建的用户就在里面

创建仓库用户-局部用户

git config  user.name
git config  user.email

局部配置文件在.git的config里面
.git就是进行版本控制的核心

git四大核心命令

git init 初始化仓库(.git)
git add  添加改变到暂存区
git status 查看当前仓库的状态
git commit -m ''把暂存区的的变化提交到版本库(生成版本号)

git add .
git status -s 简约显示

回滚

工作区

git checkout filename
git checkout .

放弃文件的修改,相对于上次的版本,只针对于文本内容的修改,新建文件等无效

暂存区

git reset HEAD .
撤销所有暂存区的提交

git reset 文件名
撤销某一文件的暂存区提交

版本库

查看历史版本
git log
git reflog
精简模式显示
git log --pretty=oneline

查看时间点之前|之后的日志:
>: git log --after 2018-6-1
>: git log --before 2018-6-1
>: git reflog --after 2018-6-1
>: git reflog --before 2018-6-1
查看指定开发者日志
>: git log --author author_name
>: git reflog --author author_name
回滚到指定版本:
回滚到上一个版本:
>: git reset --hard HEAD^
>: git reset --hard HEAD~
回滚到上三个版本:
>: git reset --hard HEAD^^^
>: git reset --hard HEAD~3
回滚到指定版本号的版本:
>: git reset --hard 版本号
>: eg: git reset --hard 35cb292

但是回退版本后,git log是看不到回退之前的版本的,如果想回退之前的版本,要确保此窗口没有关闭,然后根据之前打印的版本号回退执行下面命令,版本号写一部分就行

查看区别和删除

命令可以查看工作区和版本库里面最新版本的区别
git diff HEAD -- zx.txt

删除文件,最后也要提交
git rm 

过滤文件 .gitignore

在仓库根目录下创建该文件

过滤文件内容
文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤
/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤(/代表根目录)


a.txt:项目中所有a.txt文件和文件夹都会被过滤
/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤

*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)

空文件夹不会被提交,空包会被提交(python的包)

django

# 过滤条件一定要在第一次提交版本库之前完成
# 各类编辑器产生的配置文件
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# 日志文件
*.log
*.logger

# 本地测试文件
scripts

# 导包缓存文件
*.pyc
__pycache__

远程仓库

前提

1.本地有仓库
2.本地配置了用户信息
3.有ssh密钥
4.配置了远程仓库的源

创建公钥

官网:https://gitee.com/help/articles/4181#article-header0

创建好之后记得在远程仓库配置好,在user文件夹内的ssh内

ssh和https

ssh会自动提交本地的ssh密钥
https需要账号密码

remote 源操作

一般在远程仓库创建好之后就会直接提示源的信息

1)查看仓库已配置的远程源
git remote
git remote -v

2)查看remote命令帮助文档
git remote -h

3)删除远程源
git remote remove 源名

git remote remove origin

4)添加远程源
git remote add 源名 源地址
git remote add orgin git@*.git

git remote add origin git@gitee.com:ZX125/ZX_jy.git

配置完成,可以提交到远程

克隆一次

后面

先拉(处理冲突)在拉(没有冲突的话,交)

后提交

#克隆
git clone git@gitee.com:ZX125/ZX_jy.git

#提交
git push -u origin master

#更新
git pull origin master

乱码问题

[gui]
    encoding = utf-8

git config --global core.quotepath false
git states 乱码

冲突问题-原理

方框内的是版本号,冲突的原理就是版本号

1.如果本地的版本号(1-a)线上版本号是(1-a-b)就直接更新到(1-a-b)

2.如果本地的版本号(1-a)线上版本号是(1-b),版本号冲突,解决冲突后提交,版本(1-a-b-c)

分支操作

创建分支就相当于复制一份当前分支,作为独立的分支,不会相互影响

git合并(merge)

git合并其实也没有什么东西,就是类似于本地和线上master的操作是怎么样,那么本地两条分支之间的操作就是什么样的

git merge zx 就是把zx的修改同步到本分支

1.创建分支
>: git branch 分支名

2.查看分支
>: git branch

3.切换分支
>: git checkout 分支名

4.创建并切换到分支
>: git checkout -b 分支名

5.删除分支
>: git branch -d 分支名

6.查看远程分支
>: git branch -a

7.合并分支
>: git merge 分支名

参考链接

https://www.cnblogs.com/Sungeek/p/9152223.html

https://www.cnblogs.com/best/p/7474442.html

原文地址:https://www.cnblogs.com/zx125/p/11965792.html