git及开发工作流的详细讲解

git 基本操作

1.安装与配置

下载安装

  • git下载地址 根据自己的平台下载,如果是windows,下载的安装包一直下一步就可以了

配置基本

  • 一把我们会选择用户级别的配置 --global
# 当前项目配置文件 ./.git/config
git config --local user.name "your name"
git config --local user.email "email"

# ~/.gitconfig
git config --global user.name "your name"
git config --global user.email "email"

# 系统配置文件 /etc/.gitconfig
git config --system user.name "your name"
git config --system user.email "email"

2.初始化git仓库

  • 本地初始化仓库

    • 创建一个项目(空的文件夹)或者已有的项目,在终端中(CMD、等)打开这个项目

    • 执行初始化git仓库命令

      • git init
        
  • 克隆远程已有的项目

    • 在终端中打开你要存放这个项目的目录

    • 执行克隆命令

      • # url 是远程仓库的地址
        git clone [url]
        

3.开发操作(工作区、暂存区、版本库)

工作区

  • 工作区就是被git管理的目录下有新增文件、已经跟踪的文件内容有变化的区域

  • git会自动监测被改动的文件

  • 撤销修改

    # 撤销改动的语法
    git checkout -- 文件名
    
  • 隐藏修改内容

    # 临时保存
    git stash save -a 注释
    
    # 查看临时保存的记录
    git stash list
    
    # 恢复,num是可选项,通过git stash list可查看具体值。只能恢复一次,恢复完之后就会把这次的记录删除
    git stash pop stash@{num}
    
    # 恢复,num是可选项,通过git stash list可查看具体值。可回复多次
    git stash apply stash@{num}
    
    # 删除 保存的记录
    git stash drop stash@{num}
    
    # 删除所有的记录
    git stash clear
    

暂存区

  • 被git跟踪并且添加到缓存里面的文件

  • 将工作区的内容添加到暂存区

    # 语法
    git add 文件名
    
    # 示例 使用 . 表示当前目录下面的所有文件(包括子目录里面的所有文件)
    git add .
    
    # 添加指定的文件 xxx.txt yyy.txt README.md
    git add xxx.txt yyy.txt README.md
    

版本库

  • 缓存区东内容被提交

    # 将暂存区的内容提交到版本库
    git commit -m "这次提交的注释"
    
  • 查看提交记录

    # 简介显示最近提交
    git reflog
    
    # 详细显示所有提交记录
    git log
    
  • 版本库回退

    # 选择以前提交的版本库
    # 版本号可以在提交记录中查询
    git reset --hard 版本号
    
  • 合并(修改)提交记录

    git rebase -i 版本号
    

分支

  • 新建分支

    git branch 分支名字
    
  • 查看已有的分支

    git branch
    
  • 切换分支

    git checkout 分支名字
    
    # 创建并切换分支
    git checkout -b 分支名字
    
  • 删除分支

    git branch -d 分支名字
    
    # 强制删除
    git branch -D 分支名字
    
  • 合并分支

    git meger 被合并的分支名字
    
  • 合并分支可能产生冲突

    • 产生冲突会有warning:提示内容很详细
    • 产生的冲突需要我们自己解决,可以通过git status查看那么文件有冲突
    • 找到有冲突的文件手动解决冲突并提交 git commit -am "解决冲突"

远程仓库

  • 一般我们会用 SSH地址,这样可以省去使用的时候频繁输入账号密码

    配置git-ssh

  • 远程分支:托管在github、gitlab、coding、码云等这样的第三方服务层库上的仓库

  • 与远程仓库建立连接

    git remote add 远程仓库别名 远程仓库地址
    
    # git clone 的方式不用配置
    
  • 向远程仓库提交记录

    git push 远程仓库别名 分支名
    
  • 从远程仓库拉去最新的提交记录

    # 一步拉去
    git pull 远程仓库别名 分支名
    
    # 两部拉去
    git fetch 远程仓库别名 分支名
    #有冲突解决冲突
    git git merge 远程仓库别名/分支名
    
    
    # 或者 下面会用到rebase的讲解
    git rebase 远程仓库名字/分支名
    
  • 远程仓库操作

    • 查看已有的远程仓库

      # 远程仓库别名列表
      git remote
      
      # 带有url的
      git remote -v
      
    • 删除远程仓库

      git remote rm [别名]
      
    • 修改

rebase(变基)

  • 场景一:多个记录整合成一个记录

    git rebase -i 某一次的几条记录  # 从某一次的提交记录信息 合并到当前提交记录
    git rebse -i HEAD~3  # 最近的三次提交记录合并
    
    # 出现 vi 编辑区域
    根据下面提示选择
    一般我们会将pick 修改为 s
    
    # 保存退出  再次出现 vi 的编辑区
    列出要合并的提交记录
    例如修改为  v1 & v2 & v3
    
    # 保存
    git log # 查看提交记录
    
    • 注意 尽量不要合并已经提交到远程仓库的(提交记录)
  • 场景二:

    • master c1 - c2 - c4 -c5

      dev C3

    • Master c1 - c2 - c3 -c4 -c5

    将c3在其他分支上的提交记录 合并到master 分支上

    git checkout dev
    git rebase master  # 变更当前dev分支的基
    
    git checkout master
    git merge dev
    
  • 场景三:远程拉取代码 会有合并冲突 产生分叉

  • # 可能产生记录分叉
    git pull origin dev
    
    # 不产生记录分叉
    git fetch origin dev
    git meger origin/dev
    
    git rebase origin/dev
    
  • 注意事项

    • git rebase 产生冲突怎么办?
    • 会提示
        1. 解决冲突
        1. git add .
        1. Git rebase --continue

标签tag

  • 开发完成到一定阶段的打包

    # 提交记录的版本号 默认是当前最新的提交记录 也可以指定某次提交记录的版本号标识
    git tag -a v1.4 -m "描述信息" [提交记录的版本号]
    
  • 将tag上更新到远程仓库

    # 推送单个tag到远程仓库
    git push 远程仓库地址别名(origin) v1.4
    
    # 推送所有的
    git push 远程仓库地址别名(origin) --tags
    
  • 查看已有的标签

    git tag
    
  • 查看某个标签的详细内容

    git show v1.4
    
  • 删除 某个tag

    git tag -d v1.4
    

忽略文件

  • 在git仓库的根目录下添加.gitignore文件

  • 文件内容写不想向远程仓库提交的内容

    • ide编辑器的缓存目录
    • 个人配置文件
    • 编译解释器的缓存文件
    • 打包的可执行文件
  • 实例

    a.py
    
    !a.py
    
    dir/
    
    *.py
    
    *.h[a|c|d]
    
    
    #提供各种各样的 .gitignore
    github上查看
    

rm 操作删除文件、git缓存

  • 删除缓存

    git rm --cached [文件名]
    
  • 删除文件及缓存

    git rm [文件名]
    
    # 强制删除
    git rm -f [文件名]
    

4.开发工作流

mkdir mpro
cd mpro
# 初始化仓库
git init

touch app.py
git add .
git commit -m "开启服务"

# 远程推送
git remote add origin 远程地址
git push origin master

git tag -a v1 -m "v1版本"
git push origin --tags


cd ~
mkdir p1mp
git clone 远程仓库

git checkout dev

git checkout -b "p1dev"

touch fun1.py
git add .
git commit -m "fun1.1"
git push origin p1dev


# 提交 review

# leader 在 dev 分支 切换出 release 分支  进行测试

# 同步本地 master

# 打标签
git tag -a v2 -m "v2版本"
git push origin --tags


git checkout -b ""

工作流示意图

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容