git使用

一 下载安装

官网下载安装:https://git-scm.com/downloads

二 git工作流程

在这里插入图片描述

三 基础命令

在要托管的文件夹下右击以Git Bash Here打开
在这里插入图片描述

将文件夹初始化为git仓库

git init

在这里插入图片描述
初始化成功后会多一个.git文件夹

** 设置全局用户**

git config --global user.name '用户名'
git config --global user.email '用户邮箱'

C:\Users\用户文件夹.gitconfig新建用户信息,在所有仓库下都可以使用。
在这里插入图片描述

设置局部用户

git config user.name '用户名'
git config  user.email '用户邮箱'

在当前仓库下的config新建用户信息,只能在当前仓库下使用。

注:一个仓库有局部用户,优先使用局部用户,没有配置再找全局用户。

在这里插入图片描述
查看仓库状态

当仓库中有文件增加、删除、修改,都可以在仓库状态中查看。

空文件夹不会被git记录

# 查看仓库状态
git status 

# 查看仓库状态的简约显示
git status -s  

工作区内容提交到暂存区

# 全部提交到暂存区
git add .

# 指定文件提交到暂存区
git add '文件名'

提交暂存区内容到版本库

git commit -m '版本描述信息'

查看历史版本

git log 

# 精简版
git reflog 

# 什么时间之后
git log --after=2022/11/7
git reflog --after=2022/11/7


# 什么时间之前
git log --before=2022/11/9
git reflog --before=2022/11/9

# 查看指定开发者的记录
git log --author '用户名'
git reflog --author '用户名'

撤销工作区操作:改、删(了解)

# 将所有修改的文件和删除的文件恢复
git checkout .

# 指定回复的文件
git checkout '文件名'

撤销暂存区提交:add的逆运算(很少使用)

# 将所有暂存区的文件拉回工作区
git reset HEAD .
git reset .

# 将指定文件从暂存区的文件拉回工作区
git reset HEAD '文件名'
git reset '文件名'

回滚到指定版本

# 回滚到上一个版本
git reset --hard HEAD^
git reset --hard HEAD~

# 回滚到上两个版本
git reset --hard HEAD^^
git reset --hard HEAD~~

# 回退到指定版本号
git reset --hard 版本号

(git log 和git reflog) ( git reset --hard,–mix,–soft)的区别
git log::命令可以显示所有提交过的版本信息如果感觉太繁琐,可以加上参数 --pretty=oneline,只会显示版本号和提交时的备注信息。
在这里插入图片描述
git reflog: 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

git reset --hard:全部删除,会彻底返回到回退前的版本状态,了无痕迹。

git reset --mix:保留工作目录,文件回退到未commit的状态。

git reset --soft:保留工作目录、暂存区 ,文件会回退到未 add(未到暂存)的状态。

总结:soft是撤销commit的提交,但工作区未提交的更改还是保留;mixed是撤销暂存区的提交,工作区的更改同样也保留;而hard是把工作区、暂存区、commit到仓库的三个版本都回滚了。

四 忽略文件

在仓库跟目录下创建.gitignore文件。

过滤文件内容

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

示例:

.idea  项目中的.idea文件和文件夹被忽略
*.log  项目中所有的.log文件和文件夹被忽略
__pycache__  项目中的所有__pycache__文件和文件夹被忽略
script  项目中的script文件和文件夹被忽略

/a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤
/b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤
*x*:名字中有一个x的都会被过滤(*代表0~n个任意字符)
空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件)

五 多分支开发

分支操作

# 创建分支
git branch 分支名

# 查看分支
git branch

# 切换分支
git checkout 分支名

# 创建并切换分支
git checkout -b 分支名

# 删除分支
git branch -d 分支名

# 查看远程分支
git branch -a

# 合并分支
# 把dev分支合并大master分支上
# 切换到master分支
git merge 分支名

六 git远程仓库

新建空的gitee仓库
在这里插入图片描述
连接远程仓库
在这里插入图片描述
在这里插入图片描述
第一次push需要输入gitee账号和密码,以后就不用了。输入的信息永久保存在Windows凭据里。
在这里插入图片描述

新建不是空的gitee仓库
在这里插入图片描述
先将远程仓库克隆到本地

git clone https://gitee.com/xuxiaoxu1/luffy_api.git

将项目文件复制到本地克隆的文件里,再将项目代码copy到克隆文件里

七 remote源操作

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

# 删除远程源
git remote remove 源名

# 添加远程源
git remote add 源名 源地址

# 提交代码到远程源
git push 源名 分支名

# 克隆远程源
git clone 远程源地址

pull和push都可以提供选择不同的源,和不同的远程仓库交互。

八 采用ssh协议连接远程源

生成/添加SSH公钥:https://gitee.com/help/articles/4181

你可以按如下命令来生成 sshkey:

ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"  
# Generating public/private ed25519 key pair...

在这里插入图片描述

注意: 这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。

按照提示完成三次回车,即可生成 ssh key。会在C:\Users\用户\.ssh文件夹下生成公钥和私钥。

在这里插入图片描述
复制生成后的 ssh key,通过仓库主页 「管理」->「部署公钥管理」->「添加部署公钥」 ,添加生成的 public key 添加到仓库中。
在这里插入图片描述

添加后,在终端(Terminal)中输入

ssh -T git@gitee.com

首次使用需要确认并添加主机到本机SSH可信列表。若返回 Hi XXX! You’ve successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。
在这里插入图片描述

添加成功后,就可以使用SSH协议对仓库进行操作了。

九 协同开发

  1. 作为开发者,克隆仓库项目。
    git clone 项目地址
    
  2. 保证自己本地有dev分支,且与远程仓库版本同步(没有就自己新建)。
  3. 本地开发的代码,必须add、commit到本地版本库后,才和远程仓库进行交互。
  4. 交互顺序:必须 先拉(pull)后提(push)。
  5. 必须切换到要交互的分支,在与远程同名的分支进行交互,如本地dev与远程dev交互。
    git checkout dev
    git add .
    git commit -m '提交信息'
    git pull origin dev
    git push origin dev
    

十 冲突解决

10.1 多人同一分支开发产生冲突

出现冲突的原因:不同的人和你在同样的位置修改了代码,他先提交到远端仓库。你在提交的时候,先拉取代码,因为修改了相同地方的代码,产生了冲突。

解决:修改代码,如果功能一致,沟通出提交谁的代码。功能不一致,可都提交。修改完后,先提交到本地版本库,在推到远端。

10.2 分支合并产生冲突

  1. 新建dev分支并切换到dev分支
  2. 修改dev分支里的代码
  3. 提交到dev版本库
  4. 切换到master分支,修改相同地方的代码
  5. 提交到master版本库
  6. 在master分支上合并dev分支,会产生下面冲突
    在这里插入图片描述
  7. 解决冲突,提交到版本库和远端。

十一 线上分支合并(pr mr)

  1. 在远端仓库创建分支(dev)。
    在这里插入图片描述

  2. 把远程分支pull到本地。
    在这里插入图片描述

  3. 本地div分支修改代码并提交到远端
    在这里插入图片描述

  4. 远端远程分支合并
    提交pr,mr申请。
    在这里插入图片描述

  5. 审查通过,接受Pull Request即可合并。
    在这里插入图片描述

十二 pycharm操作git

在这里插入图片描述

在这里插入图片描述

十三 为开源项目贡献代码

  1. 将开源项目fork到你的仓库。
  2. 克隆到本地,修改后提交到远程仓库。
  3. 提交pr,作者同意后就可以合并了。

十四 git相关

  1. 公司分支方案是什么样的?
    有一个master主分支,用来发版的。开发者在dev分支开发,开发完一个版本在合到master分支上。还有一个bug分支,用来修改bug和发布小版本。
  2. git开发,遇到过冲突怎么解决?
    在pull远程仓库的代码时,发生冲突,选择保留自己的或者别人的,提交到版本库,push到远程仓库。
  3. git 变基。
    使用merge合并,这样就导致分支图就非常的难看了。所以就用了git rebase命令先进行变基,整个图就变成一条直线。把多次提交变成一次。
  4. git pull 和git fetch的区别。
    pull是拉取并合并
    fetch是拉取
  5. git flow。
    git工作流
  6. git 的操作流程。
    克隆远程仓库,编写代码,提交本地版本库,推到远程仓库。
  7. pr和mr。
    提交合并分支的请求,在GitHub和gitee上叫pr,在gitlab上叫mr。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值