git 提交代码流程

  • 工作区:当前正在工作的目录,包含了最新的修改。
  • 暂存区(Index):位于工作区和仓库之间,用于暂存即将提交的更改。
  • 本地仓库:存储所有提交的历史记录,每个提交都有一个唯一标识符(SHA-1哈希值)。

1. 公-->私-->本-->私-->公 (一般用于不同团队合作)

缺点:多了一个步骤,就多了一次申请时间,首先在公仓申请合并到私仓,私仓同意合并,获取到公仓最新版本;

优点:不容易污染公仓

8552da0703f74f8ca7dd359522f43404.png

2. 公-->本-->私-->公 

优点:简化操作,因为每次都可以直接pull都是最新代码

缺点:因为放开了公仓的权限,如果直接push到公共仓库躲过代码公审,容易造成公仓污染

4b33f1f9f6444920befacf6834ea730c.png

公->本->私->公     (分支名称:241107)

# 先将本地修改暂存起来,idea 里修改文件由  蓝-->白

git stash save "暂存2024110701"

# 拉取公仓最新代码,期间要数据账号密码

git pull origin 241107

# 恢复自己最新修改的文件,idea 里修改文件由  白-->蓝

git stash pop

# 查看修改文件,显示红色相对路径

git status

# 复制红色修改的文件相对路径,添加到暂存区,(如果修改文件多,一个一个添加)

git add <红色相对路径>

# 检查是否add完毕,红色相对路径应该全变绿色

git status

# 提交暂存区

git commit -m "提交注释"

# 推送到私仓(person名称是我自定义的,它映射一个仓库地址,idea的可以配置的)

b8b51cf0530e41ba8ddaf38dbd7d65b5.png

git push person 241107

# 最后在私仓的web页面申请合并到公仓,公仓审核员审核通过,就可以合并

总结:企业里一般采用 第一种方式,还有是下面这种,与上面两种主要区别是多了一个私仓

c24f298acfc74b24b017564c0a490e55.png

3. 代码回滚

代码冲突定义:修改同一个文件的相同行或者相邻行,就会包冲突

 参考: Git恢复之前版本的两种方法reset、revert(图文详解)【学习】_git还原到上一个版本CSDN博客

3.1 手动删除

适用场景:只想回滚自己那部分代码,并且量比较少,不想要也没关系,要也可以再巴巴拉拉写出来的。

具体做法把你要删除的代码,先拷贝出来,拷贝目的是能恢复修改代码,然后删除你bug代码,最后push到远程仓库

3.2 reset重置

适用场景:本地仓库恢复到指定版本,且这个版本之后的提交都不要了,能不用就不用!必须用要慎用!

例子:个人提交垃圾到远程仓库而且量比较大,如那些什么说明文件等,不好通过手动删除垃圾的方式解决问题

7219255d687e4deb8dddba71c356c395.png

# 查看版本号 (idea也可以操作,自行百度)

git log

# 重置指定版本

     --hard 本地版本仓库回退指定版本,工作区和暂存区3区全部回退

     --soft  本地版本仓库回退指定版本,工作区和暂存区不回退

    --mixed 本地版本仓库回退指定版本,暂存区也回退,工作区不回退

git reset --hard <版本号>

# 使用-f 强制低版本覆盖高版本 (如果已经提交到远程,需要更新远程)

git push -f  origin <分支名称>

3.3 revert 撤销 (更符合实际场景,推荐使用)

适用场景:要撤销之前某个bug版本2,又不想把后面版本3删除

原理:生成个新的版本4,版本4会保留bug版本2后面的提交,但是撤销了bug版本2

23e44a2053264e69ab3b2e50d89a3ae6.png

# 查看版本号 (idea也可以操作,自行百度)

git log

# 本地撤销

git revert -n <bug版本号>

# 同步远程仓库

git push origin xxxx分支

git 常用命令

# 将当前目录交给git 管理
git init

# 克隆代码 (1.初始化本地库 2.拉取代码 3. 创建别名 )
git clone  <远程仓库地址>

# 查看文件状态,红色:未被跟踪的文件,绿色:已经被跟踪的文件
git status

# 要添加的修改文件
git add <未被跟踪的文件(红色)>

# 删除缓存区的文件
git rm -cached <已经被跟踪的文件 (绿色)>

# 提交代码前,先同步远程代码
git pull <远程仓库地址 or 别名>  <远程分支名称>

# 提交本地库,记录跟踪历史
git commit -m  <提交日志信息> <已经被跟踪的文件>

# 推送远程仓库
git push <远程仓库地址>

# 查看精简信息
git reflog

# 查看详细信息
git log

# 推送到远程代码托管中心
git push <远程仓库地址 or 别名> <远程分支名称>

# 版本穿梭
git reflog
git reset --hard <版本号>


# 分支操作

1.查看分支 git branch -v

2.创建分支 git branch <新分支名称>

3.切换分支 git checkout <新分支名称>

4.合并分支 
git checkout <主分支>
git merge <新分支名称>

# 查看远程分支
git remote -v
标准工作流程:

1.开始修改前先执行 pull:确保本地代码是最新的

2.进行功能开发或 bug 修复,完成后提交本地更改(git add + git commit)

3.在推送远程仓库之前,再次执行 pull:确保远程没有新提交导致冲突

4.解决可能出现的问题后,最后执行 push。


第二次 pull 有时会失败的原因及处理方式

成功情况:

即便远程有新的提交,只要这些提交不涉及你正在工作的文件或者它们之间的修改不重叠,Git 可以自动合并这些更改,不会引发冲突。

失败情况:

1. 工作区存在未提交的更改
分析:
当你在本地对文件进行了新增、修改或删除操作,但尚未将这些更改提交到本地仓库时,Git 认为直接进行 pull 操作可能会覆盖你尚未保存的工作,因此阻止了这一操作。

解决:
完成提交:如果你对当前的更改感到满意,可以通过以下步骤来提交它们:
git add . 将所有修改添加到暂存区。
git commit -m "描述你的更改" 来提交更改。


如果修改还未完成,可以使用 git stash 来暂时保存它们:
git stash 暂存更改:
git stash save "临时保存未提交的更改"。
git pull origin master(或你正在工作的分支名)。
git stash pop。

2. 暂存区存在未提交的文件
分析:
如果你已经通过 git add 命令将某些文件添加到了暂存区,但是还没有执行 git commit 提交这些更改,Git 同样认为当前状态不干净,并阻止 pull 操作。

解决:
直接提交:如果决定保留当前的更改,可以直接完成提交过程:
执行 git commit -m "描述你的更改"。
取消暂存:如果你希望先拉取最新代码,可以选择取消暂存:
执行 git reset,这将把暂存区的所有更改移回工作区,之后你可以根据需要决定是先 pull 还是先处理这些更改。

3. 代码自动合并冲突
分析:

当远程仓库中的文件与本地文件在同一部分发生了不同的修改时,Git 无法自动决定如何合并这些更改,这时就会产生冲突。通常这种情况发生在你和团队成员同时对同一文件的相同部分进行了修改。
解决:

查看冲突文件:使用 git status 查看哪些文件存在冲突。
手动解决冲突:打开每个冲突文件,按照提示编辑文件,选择保留哪些更改。例如,你可能看到类似如下的标记:
Diff
深色版本
<<<<<<< HEAD
// 你的本地更改
=======
// 远程的更改
>>>>>>> branch-name


根据实际情况编辑文件,决定保留哪些更改。完成后,标记冲突已解决:git add <file>。
完成合并:一旦所有冲突都已解决并且相应的文件已被标记为解决,你可以完成合并过程:git commit -m "解决了合并冲突"。
沟通协作:如果有疑问或者不确定如何处理某些冲突,最好与团队成员讨论,确保所有人都同意最终的解决方案。


<think>好的,用户想了解Git提交代码的具体步骤和命令。首先我需要整理一下用户提供的引用内容,看看各个步骤是怎么描述的。引用3和引用5比较详细,可能可以综合一下。 用户提供的引用3提到创建分支、提交到本地缓存区、commit、push,还有合并到主分支的流程。引用5则是更简略的四步:修改代码git add、git commit、git push。引用4还提到了使用stash和rebase来保持代码同步,这可能是在团队协作中的好习惯。 用户的问题需要详细步骤和命令,所以应该分步骤说明。可能的结构是:准备阶段(切换分支、拉取最新代码)、提交代码(add、commit)、推送到远程、合并到主分支的流程。另外需要注意是否需要处理冲突,以及如何保持分支与主分支同步。 还要考虑是否需要包括创建分支的步骤,因为用户可能从新功能开发开始。引用3里提到了创建分支、切换分支,然后提交。所以步骤可能需要分为几个部分:创建并切换分支、提交代码、推送代码、合并到主分支。 另外,用户可能对每个命令的具体作用不太清楚,可以适当解释每个步骤的目的。比如git add的作用是将修改加入暂存区,commit是提交到本地仓库,push是推送到远程。 还需要注意是否有常见问题,比如首次推送时需要git push --set-upstream,或者处理冲突的方法。不过用户的问题主要是步骤,可能不需要深入问题解决,但可以简要提及。 可能还需要参考引用4中的好习惯,比如在提交前拉取最新代码,使用rebase来保持历史整洁。这部分可以作为最佳实践补充。 综合以上内容,步骤大致分为: 1. 准备分支(创建并切换) 2. 代码提交(add、commit) 3. 推送至远程仓库 4. 合并到主分支(pull request或merge) 5. 同步主分支到本地(pull) 6. 可选的最佳实践(stash、rebase) 需要检查是否有遗漏的步骤,比如处理冲突,但可能在详细步骤中提及。同时,每个步骤给出对应的命令和解释,确保用户能按步骤操作。最后,生成相关问题,如如何处理冲突、优化提交历史等。</think>以下是Git提交代码的详细步骤及命令说明,包含基础流程和协作规范: --- ### 一、基础提交流程 #### 1. 创建并切换分支(适用于新功能开发) ```bash git branch feature-xxx # 创建分支 git checkout feature-xxx # 切换分支(或简写 git switch feature-xxx) ``` #### 2. 提交代码到本地仓库 ```bash git add . # 将所有修改添加到暂存区(或指定文件 git add <文件名>) git commit -m "功能描述" # 提交到本地仓库,需填写清晰的注释[^5] ``` #### 3. 推送代码到远程仓库 ```bash git push origin feature-xxx # 首次推送需添加参数:git push --set-upstream origin feature-xxx[^3] ``` --- ### 二、协作规范流程(推荐) #### 1. 同步主分支最新代码 ```bash git checkout master # 切换到主分支 git pull origin master # 拉取远程主分支最新代码[^4] ``` #### 2. 变基合并(保持提交历史整洁) ```bash git checkout feature-xxx # 切回开发分支 git rebase master # 将主分支最新代码合并到当前分支[^4] ``` #### 3. 处理冲突(若有) - 手动解决冲突文件 - 标记冲突已解决: ```bash git add <冲突文件> git rebase --continue ``` #### 4. 强制推送变基后的分支 ```bash git push origin feature-xxx -f # 仅适用于私有分支[^4] ``` --- ### 三、合并到主分支 1. 通过Git平台(如GitHub/GitLab)发起 **Pull Request/Merge Request** 2. 代码审核通过后,管理员执行合并操作[^3] --- ### 四、撤回操作 | 场景 | 命令 | |-----------------------|----------------------------------------------------------------------| | 撤回未push的commit | `git reset --soft HEAD~1`(保留修改)或 `git reset --hard HEAD~1`(丢弃修改)[^4] | | 撤回已push的commit | `git revert <commit-id>` 生成反向提交,再推送[^4] | --- ### 最佳实践 1. 提交前使用 `git diff` 检查修改内容[^4] 2. 频繁使用 `git stash` 暂存未完成的工作 3. 保持提交信息规范(如`feat: 新增登录功能` `fix: 修复支付bug`) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值