Git操作

版本控制器

"""
完成 协同开发 项目,帮助程序员整合代码

软件:SVN 、 GIT

git:集群化、多分支
"""

工作流程图

git工作流程

安装

"""
1.下载对应版本:https://git-scm.com/download
2.安装git:在选取安装路径的下一步选取 Use a TrueType font in all console windows 选项
"""

搭建本地git仓库

将已有的文件夹作为git仓库
"""
>: cd 目标文件夹内部
>: git init
"""
在指定目录下创建git仓库
"""
>: cd 目标目录
>: git init 仓库名
"""

配置操作git的用户信息

当前仓库:局部
"""
>: git config user.name '用户名'
	-- 用户名
>: git config user.email '用户邮箱'
	-- 用户邮箱
	
注:在当前仓库下的config新建用户信息,只能在当前仓库下使用
"""
所有仓库:全局
"""
>: git config --global user.name '用户名'
>: git config --global user.email '用户邮箱'

注:在全局文件 C:Users用户文件夹.gitconfig新建用户信息,在所有仓库下都可以使用
"""

常用指令

查看仓库状态
"""
# 当仓库中有文件增加、删除、修改,都可以在仓库状态中查看
>: git status  
	-- 查看仓库状态
>: git status -s  
	-- 查看仓库状态的简约显示
"""
工作区操作
# 通过任何方式完成的文件删与改
# 空文件夹不会被git记录
撤销工作区操作:改、删
"""
>: git checkout .
	-- 撤销所有暂存区的提交
>: git checkout 文件名
	-- 撤销某一文件的暂存区提交
"""
工作区内容提交到暂存区
"""
>: git add .  
	-- 添加项目中所有文件
>: git add 文件名  
	-- 添加指定文件
"""
撤销暂存区提交:add的逆运算
"""
>: git reset HEAD .
	-- 撤销所有暂存区的提交
>: git reset HEAD 文件名
	-- 撤销某一文件的暂存区提交
"""
提交暂存区内容到版本库
# git commit -m "版本描述信息"
撤销版本库提交:commit的逆运算
"""
回滚暂存区已经提交到版本库的操作:
    查看历史版本:
        >: git log
        >: git reflog
    查看时间点之前|之后的日志:
        >: 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~1
        回滚到上三个版本:
            >: git reset --hard HEAD^^^
            >: git reset --hard HEAD~3
        回滚到指定版本号的版本:
            >: git reset --hard 版本号
            >: eg: git reset --hard 35cb292
"""

过滤文件

# .gitignore 文件
# 1)在仓库根目录下创建该文件
# 2)文件与文件夹均可以被过滤
# 3)文件过滤语法

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

线上线下协同操作

源操作

"""
查看所有源
>: git remote

查看源信息
>: git remote -v

添加源
>: git remote add 源名 源地址
>: git remote add origin https://gitee.com/doctor_owen/luffy.git

删除源
>: git remote remove 源名
>: git remote remove origin
"""

选择线上仓库

"""
1.注册码云账号并登录:https://gitee.com/
2.创建仓库(课堂截图)
3.本地与服务器仓库建立连接
"""
"""
1)本地配置线上的账号与邮箱
>: git config --global user.name "doctor_owen"
>: git config --global user.email "doctor_owen@163.com"

2)在本地初始化仓库(git init),并完成项目的初步搭建(项目架构)(一般都是项目负责人完成项目启动)
# 这个过程就是git的基础部分的本地操作

3)采用 https协议 或 ssh协议 与远程git仓库通信提交提交代码(一般都是项目负责人完成)
	i) https协议方式,无需配置,但是每次提交都有验证管理员账号密码
	>: git remote add origin https://gitee.com/doctor_owen/luffy.git  # 配置远程源
	>: git push -u origin master  # 提交本地仓库到远程源
	
	ii) ssh协议,需要配置,配置完成之后就可以正常提交代码
	>: git remote add origin git@gitee.com:doctor_owen/luffy.git  # 配置远程源
	>: git push -u origin master  # 提交本地仓库到远程源
	
	iii)查看源及源链接信息
	>: git remote
	>: git remote -v
	
	iv)删除源链接
	>: git remote remove 源名字 
	
注:origin远程源的源名,可以自定义;master是分支名,是默认的主分支
"""
生成公钥
"""
1.参考帮助文档:https://gitee.com/help/ 
	-- 仓库管理 => 公钥管理 => 生成/添加SSH公钥
	
>: ssh-keygen -t rsa -C "owen@163.com"
"""

添加公钥

多分支开发

分支操作
"""
1.创建分支
>: git branch 分支名

2.查看分支
>: git branch

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

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

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

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

7.合并某分支到当前分支
>: git merge 分支名
"""

解决冲突

"""
# 准备新的feature1分支,继续我们的新分支开发:
>:  git checkout -b feature1 
Switched to a new branch 'feature1'

# 修改readme.txt最后一行,改为:
Creating a new branch is quick AND simple.

# 在feature1分支上提交:
>:  git add readme.txt 
>:  git commit -m "AND simple" 
[feature1 75a857c] AND simple 
 1 file changed, 1 insertion(+), 1 deletion(-)

# 切换到master分支:
>:  git checkout master
Switched to branch 'master'

# 在master分支上把readme.txt文件的最后一行改为:
Creating a new branch is quick & simple.

# 提交:
>:  git add readme.txt 
>:  git commit -m "& simple"
[master 400b400] & simple
 1 file changed, 1 insertion(+), 1 deletion(-)

# 这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试 试看:
>:  git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

# 果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突 的文件:
>:  git status 
# On branch master 
# Your branch is ahead of 'origin/master' by 2 commits. 
# 
# Unmerged paths: 
#   (use "git add/rm <file>..." as appropriate to mark resolution) 
# 
#       both modified:      readme.txt 
# no changes added to commit (use "git add" and/or "git commit -a")
no changes added to commit (use "git add" and/or "git commit -a")

# 我们可以直接查看readme.txt的内容:
Git is a distributed version control system. 
Git is free software distributed under the GPL. 
Git has a mutable index called stage. 
Git tracks changes of files. 
<<<<<<< HEAD Creating a new branch is quick & simple. 
======= 
Creating a new branch is quick AND simple. 
>>>>>>> feature1

# Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改如下后保存:
Creating a new branch is quick and simple.

# 再提交:
>:  git add readme.txt 
>:  git commit -m "conflict fixed" 
[master 59bc1cb] conflict fixed

# 用带参数的git log也可以看到分支的合并情况:
>:  git log --graph --pretty=oneline --abbrev-commit 
*   59bc1cb conflict fixed 
| 
| * 75a857c AND simple 
* | 400b400 & simple 
|/ 
* fec145a branch test 
...

# 最后,删除feature1分支:
>:  git branch -d feature1 
Deleted branch feature1 (was 75a857c).


当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log --graph命令可以看到分支合并图。
"""

合并分组

合并分支

原文地址:https://www.cnblogs.com/gaohuayan/p/11555932.html