复习Git命令、Git命令使用流程、VSCode+Git插件管理工程源码

目录

[1 引言](#1 引言)

[2 直接整理一个常用的流程,而不是死记硬背各种命令](#2 直接整理一个常用的流程,而不是死记硬背各种命令)

[3 解决冲突的说明和理解](#3 解决冲突的说明和理解)

[4 git fetch的说明和理解](#4 git fetch的说明和理解)

[5 真正开发不用Git命令,而是使用VSCode插件管理工程](#5 真正开发不用Git命令,而是使用VSCode插件管理工程)


1 引言

以前主要用svn,Git用的少,这次再复习一下Git命令。

2 直接整理一个常用的流程,而不是死记硬背各种命令

bash 复制代码
1. 进入项目目录
# 如果是第一次下载项目
git clone 仓库地址.git
cd 项目目录

# 如果不是第一次,直接进入目录
cd 项目目录


git config user.name "cumtchw"                  #不要加--global,
git config user.email "[email protected]"  #不要加--global
#不要加--global以免影响全局,不加--global就相当于只在当前.git/config文件中增加了下面的内容,
[user]
        name = cumtchw
        eamil = xxxx.com


2. 查看 / 操作本地分支
git branch                       # 查看本地分支
git checkout [branch_name]      # 切换到已有分支
git branch [branch_name]        # 创建本地分支  基于当前分支的最新提交,创建一个新的本地分支,但不自动切换到这个新分支
git checkout -b [branch_name]   # 创建并切换分支 基于当前所在的分支创建一个新分支 feature1,并切换到它

3. 切换到主分支并拉取最新代码(确保干净)
git checkout main
git pull

4. 新建功能分支(feature 名可以自由取)
git checkout -b feature-add-xxx

5. 修改代码(新增、修改或删除)

6. 保存并提交改动
git add .
git status                  # commit之前最好执行下git  status查看当前文件差异状态
git commit -m "feat: 修改了某某功能"

7. 如需解决冲突(主分支有更新、你的开发周期较长时)
    # 7.1 回到主分支并拉最新代码
    git checkout main#这一行一定不能省,否则如果当前在feature分支,那么下面的git merge origin/main是直接把/origin/main给合并到当前分支了。
    git fetch origin 
    git merge origin/main

    # 7.2 切换回你的开发分支
    git checkout feature-add-xxx

    # 7.3 将主分支合并进来,触发冲突则解决
    git merge main


8. 查看状态、提交修改
git add .
git status                  # commit之前最好执行下git  status查看当前文件差异状态
git commit -m "修复登录界面崩溃 bug"


#git push <远程主机名> <本地分支名>:<远程分支名>
9. 推送到远程仓库
# 推送本地 feature-add-xxx 到远程同名分支:把我本地的 feature-add-xxx 分支,推送到远程仓库 origin 中去,并让远程也建立一个叫 feature-add-xxx 的分支。
git push origin feature-add-xxx


10. 登录 GitLab / GitHub 网页提交 Merge Request

3 解决冲突的说明和理解

bash 复制代码
Git解决代码冲突
1:将本地分支切换到本地默认主分支:
git  checkout [master|develop]
2:更新本地默认主分支
git  pull [master|develop]
3:切换到提交代码本地分支
git  checkout [branch_name]
4:将本地主分支merge 到当前分支, 此时提示冲突文件
git merge [master|develop]
5:本地解决冲突文件,验证。
6:Git提交代码流程,push到远程分支

问ChatGPT:

这个是不是说,比如我本来git clone了主分支,然后好几个人都创建了自己的分支然后修改代码,

然后可能我改的时间太久了,别人已经有人commit以及push并且merge到master了,

然后这时候我要是commit push merge肯定有冲突,所以我先不commit,我先直接在本地先merge解决冲突,

解决完之后,我再commit push以及申请merge,是这个意思吗,

下面是ChatGPT的理解:

完全正确!你理解得非常到位,这就是这套流程的核心含义,简单总结一下:

你的理解流程细化版

  1. 起点:你从远程仓库clone了代码,基于主分支(master或develop)新建了自己的功能分支,开始开发。

  2. 多人并行开发:别人也基于主分支做了自己的开发,提交(commit)并推送(push)到远程,且已经有人把代码合并(merge)回了主分支。

  3. 你的分支落后了:此时远程主分支比你本地主分支"更新",也就是说远程主分支已经有了你本地功能分支没有的代码。

  4. 直接提交可能冲突:如果你直接把你本地的功能分支代码提交(commit)并推送(push),然后申请合并(merge request),很可能远程主分支与功能分支代码有冲突,合并失败。

  5. 提前合并解决冲突

    • 先切回本地主分支,拉取最新远程主分支代码 git checkout master && git pull origin master

    • 切回你的功能分支 git checkout feature-xxx

    • 把最新主分支合并进功能分支 git merge master

    • 如果有冲突,在本地解决冲突,测试确认无误

    • 提交合并结果 git commit

    • 推送功能分支 git push origin feature-xxx

  6. 申请合并请求:这时你发起合并请求,远程主分支基本不会再出现冲突,可以顺利合并。

4 git fetch的说明和理解

bash 复制代码
git checkout main #一定要有这一步
git fetch origin 
git merge origin/main

解释:

  • git checkout main

    切换到本地的主分支 main,确保后续操作都是基于主分支进行。

  • git fetch origin

    从远程仓库 origin 拉取所有分支的最新信息,包括代码提交、标签等,但不会自动合并到任何本地分支

    换句话说,这一步相当于把远程仓库的最新状态完整下载到本地,并更新远程跟踪分支(如 origin/mainorigin/feature-xxx 等),但不会直接修改你当前所在的本地分支。

    这使得你可以安全地查看远程变化,决定后续如何合并,避免直接自动合并带来的风险。

  • git merge origin/main

    将刚才 fetch 下来的远程主分支 origin/main 的最新代码,合并到当前的本地 main 分支,使你的本地代码更新到远程最新状态。

    如果远程和本地存在冲突,会在这里提示解决。

**注意事项:**但是这里要注意要提前git checkout main,如果没有这一行只有第二第三行,那么假如原来是在本地的feature1分支,那么执行完2 3 行,相当于把远程的main分支合并到本地的feature1里面了。

上面那三行和下面这两行的区别

git checkout main

git pull

  1. git pullgit fetch + git merge 的快捷命令
  • git pull 实际上相当于先执行 git fetch,把远程仓库最新内容拉下来,更新远程追踪分支(比如 origin/main

  • 然后自动执行一次 git merge origin/main,把远程的更新合并到当前分支(这里是 main


  1. 区别在于执行的步骤是否分开
  • git fetch + git merge 可以分两步清晰控制:

    • 先用 git fetch origin 拉取所有远程分支最新信息,但不修改当前分支

    • 然后再决定是否以及什么时候合并 origin/main 到本地 main

  • git pull 是一步完成拉取和合并,自动执行合并,不能中间检查远程变化


  1. 什么时候用哪个更好?
  • 如果你想对远程变化先有个全面了解,或想手动处理合并,避免自动合并导致冲突或意外,推荐先用

    bash

    复制编辑

    git fetch origin git merge origin/main

  • 如果你只是想快速同步本地分支到远程最新状态,且信任远程内容,git pull 更方便快捷

5 真正开发不用Git命令,而是使用VSCode插件管理工程

真正开发的时候不需要敲命令,直接用vscode里面的source control管理工程,进行pull,push,merge以及冲突解决等这些操作。但是前面介绍的这些命令要了解,还有整个流程要理解。

相关推荐
飞翔的猪猪8 小时前
GitHub Recovery Codes - 用于 GitHub Two-factor authentication (2FA) 凭据丢失时登录账号
前端·git·github
顾三殇9 小时前
【编译工具】(版本控制)Git + GitHub Actions:自动化工作流如何让我的开发效率提升200%?
git·自动化·github
绅士玖11 小时前
理解 .env 文件和 .gitignore 文件的作用与最佳实践
前端·git·代码规范
不爱学英文的码字机器13 小时前
[Git] 标签管理
大数据·git·elasticsearch
不爱学英文的码字机器19 小时前
[Git] 配置 Git
git
小慧10241 天前
1.2 git使用
git
m0_635647481 天前
git管理github上的repository(二)
git·github
今夕节度使1 天前
通过 VS Code 连接 GitLab 并上传项目
git·elasticsearch·gitlab