【Git】代码管理最详细讲解

Git使用手册

git官网地址:https://git-scm.com/book/zh/v2

一, 安装

  • Linux
# centOS安装
$ sudo dnf install git-all

# Ubuntu安装
$ sudo apt install git-all
  • Windows安装

下载后,直接点击安装,一直默认点击到最后完成即可

二, 配置

1)项目配置文件:项目/.git/config

git config --local user.name "your name"
git config --local user.email "[email protected]"

2)全局配置文件:当前用户~/.gitconfig

git config --global user.name "your name"
git config --global user.email "[email protected]"

3)系统配置文件:/etc/.gitconfig

git config --system user.name "your name"
git config --system user.email "[email protected]"

# 需要有root权限

注意:以上设置用户名和邮箱,主要用来确保提交版本的人是谁?该命令仅仅执行一次就行!

4)免密登录

  • URL 实现
原来地址:https://gitee.com/mei_mayun/note.git
修改地址:https://用户名:密码@gitee.com/mei_mayun/note.git

#例如:
git remote add origin https://用户名:密码@gitee.com/mei_mayun/note.git
git push origin master        
  • SSH 实现(企业推荐)
# 1,生成公钥和私钥命令(默认保存在 当前用户/.ssh/目录下,id_ras.pub为公钥,id_ras为私钥):
ssh-keygen 

# 2,拷贝公钥里的内容,添加到gitee.com的仓库后台

【Git】代码管理最详细讲解_第1张图片

# 3,在git本地配置中,配置ssh地址
git remote add origin git@gitee.com:mei_mayun/note.git
git push origin master

【Git】代码管理最详细讲解_第2张图片

  • git 自动管理凭证(系统)

5)忽略推送文件

在项目根目录下,创建文件 .gitignore ,在推送线上时候,将忽略的文件

# .gitignore

# pycharm
.idea/
.DS_Store

__pycache__/
*.py[cod]
*$py.class

# Django stuff:
local_settings.py
*.sqlite3

# database migrations
*/migrations/*.py
!*/migrations/__init__.py

6)任务管理相关

  • issues

【Git】代码管理最详细讲解_第3张图片

用于对项目的跟踪待办事项、bug、功能需求等!

  • wiki

【Git】代码管理最详细讲解_第4张图片

用于对项目的深入了解,展示整个功能的内容等!

7)给别人代码做贡献

通过fork源码,将对方的代码拷贝到本地,当自己二次开发或者修复bug以后,通过new pull request 提交申请,对方一旦通过,即可有自己提交记录
【Git】代码管理最详细讲解_第5张图片

【Git】代码管理最详细讲解_第6张图片

三, 命令

1) git 基本命令

  • 初始化
git init
  • 管理目录下文件夹的状态
git status

# 新增加的文件和修改过的文件都是红色
  • 管理指定文件( 红变绿 )
git add 文件名
git add .
  • 生成一个版本
git commit -m '项目第一次提交'  
  • 查看所有版本信息
git log									

2) git 回滚

情况一

第一次 回滚:在执行 git log 命令后,看到版本号

git log
git reset --hard 版本号

第二次 恢复回滚:需要新的命令 git reflog 命令后,看到版本号进行回滚

git reflog
git reset --hard 版本号

情况二

  • 【将红色变回无色】

    工作开始(A状态),从线上拉下代码后,在没有执行任何git命令时, 发现本地写代码出现问题状态(B状态)。此时,想要恢复回滚到刚开始工作时的状态(A状态)时,执行命令:

git checkout -- 文件名
  • 【将绿色变回红色,再回无色】

    工作开始(A状态),从线上拉下代码后,修改文件后(B状态),执行了**git add . ** 命令时(C状态)。此时,想要恢复回滚到修改后文件(B状态)时,执行命令:

git reset HEAD 文件名

​ 再次回到未更改的开始文件(A状态)时,执行命令:

git checkout -- 文件名

3) 分支

  • 查看/创建/切换 分支(dev)
git branch           #查看
git branch dev       #创建dev
git checkout dev     #切换dev
  • 合并分支

    如果打算将dev分支,合并到master主分支上,需要先切换回master主分支后,再执行合并命令:

git checkout master   # 切换回主分支
git merge dev         # 将dev分支合并回master主分支
  • 删除分支
git branch -d dev     # 删除dev分支

**注意:**对应出现“代码冲突”后,代码管理过程中,在pull或者分支合并过程,均会出现冲突,找到对应文件,手动更改代码解决冲突后需要进行再次提交成为新的版本:

git add .
git commit -m '冲突解决版本'

四,远程仓库(家 – 公司)

1)注册,创建(略)

2)远程仓库地址起别名

  • 地址为码云提取,并给该地址设置别名( 例如:origin )命令:
git remote add origin 远程仓库地址
  • 推送代码到远程仓库
git push 远程仓库地址 master               # 将代码推送到master的分支上
git push origin master                   # 与上面命令相同

3)获取远程仓库代码

A, 第一次本地无代码时

进入自己想要存放代码的目录,执行克隆下载命令:

git clone 远程仓库地址(origin)

注意: a, 在执行 clone 命令后,默认已经将默认别名命名为origin

​ 即执行了命令:git remote add origin 远程仓库地址

​ b, clone到新环境下的代码包括了所有的分支,但是命令查看 git branch 时,只显示master分支!

​ 但是,是可以直接切换 git checkout 其他分支名称 其他分支!

B, 第二次后,本地有代码时

仅仅拉取更改过的代码,不用克隆所有代码:

git pull 远程仓库地址(origin) dev

#此命令相当于一下两个命令:
git fetch origin dev
git merge origin/dev

4) 模拟家 / 公司 开发代码过程

在公司进行开发:
# clone线上仓库代码到本地
git clone 远程仓库地址

# 切换到dev分支
git checkout dev

# 将主分支master合并到dev分支(更新最新代码)
git merge master

# 进行代码开发
....

# 在公司提交代码到dev
git add .
git commit -m '公司开发-分支dev'
git push origin dev
回家后进行开发:
# 切换分支dev进行开发
git checkout dev

# 更新最新代码到本地
git pull origin dev

# 继续开发
....

# 在家提交代码到dev
git add .
git commit -m '家里开发-分支dev'
git push origin dev

第二天,到公司进行开发,重复上面回家开发进行的步骤即可…

开发完后,发布:
# 先切换回master分支后,将dev分支合并到master分支上,进行上线,并且推送到远程仓库:
git checkout master
git merge dev
git push origin master

# 将dev分支也更新最新代码,推送到远程仓库
git checkout dev
git merge master     #(注意此处最好将master分支,再次回并到dev,保证代码完全一致)
git push origin dev

回家后,需要将两个分支分别更新本地:

git pull origin master
git pull origin dev

五,变基(rebase)*

1)多版本合并简化

git rebase 分支

2)多分枝合并简化

  • 查看分支结构 (图形展示)
git log --graph 
  • 查看分支简化结构
git log --graph --pretty=format:"%h %s"

3)拉取代码和本地合并

六,解决冲突

通过使用软件 beyond compare 来快速解决冲突。

1) 安装

下载地址:https://www.beyondcomparepro.com/download/

双击直接安装,记下安装地址

2) 在git中配置

git config --global merge.tool bc4
git config --global mergetool.bc4.cmd "\"D:\\Program Files\\Beyond Compare 4\\BCompare.exe\" \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\" \"\$MERGED\""
git config --global mergetool.bc4.trustExitCode true
git config --global mergetool.keepBackup false

#此路径为安装目录:"D:\Program Files\Beyond Compare 4\BCompare.exe"

注意:此配置后,仅仅在当前项目中生效

3) 应用beyond compare 解决冲突

git mergetool

七,多人协同开发

1)gitflow工作流

创建组织、邀请

2)创建版本号(打标签v1.0)

git tag -a v1.0 -m '第一版本'

3) 代码提交组织查看

通过后台pull request的方法,申请review代码

八、笔记积累

1)强制覆盖远程

强制将本地推送到远程仓库,即覆盖远程仓库(谨慎操作):

git push -f --set-upstream origin dev

2) 强制远程覆盖本地

如果本地代码做了改动,但是又不想保留这些改动,可以使用以下命令强制拉取远程最新代码,覆盖掉本地代码:

git fetch --all  
git reset --hard origin/dev

(完!)

你可能感兴趣的:(git,github)