git学习

本文详细介绍Git中分支的创建、切换、合并及删除方法,包括常见操作如pull、push、stash等,以及如何在多人协作环境中有效利用Git进行代码管理和版本控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 创建分支
    a. git checkout -b feature_dev //创建并切换分支
    b. git branch feature_dev
    git checkout feature_dev
    在新分支上开发新特性
    本地创建分支,同时开发多个特性方便点

  2. 分支合并
    git checkout master //切换到本地master分支
    git merge feature_dev //合feature_dev分支到本地master分支

  3. git remote -v 显示远程仓库
    git push origin master 推当前分支到远程的master分支

  4. 多人协作
    a. 准备提交代码
    b. 合本地开发分支到本地master分支
    c. git pull origin master 获取远程最新代码
    d. 解决冲突,手动进行冲突解决
    e. 解决冲突后本地代码比远端更新了,可以执行push操作

工作区是我们正在编辑的代码、stage为暂缓区、HEAD指向git正处于的分支
git diff 判断工作区和分支的差异
git add 把指定文件加入版本管理
git stash 把版本管理的文件丢到缓冲,这时该文件就和分支一致了

  1. git pull 从远程分支拉代码到本地,假如之前stash了所有修改,那么就不会有冲突,接下来把stash里的东西抛出来,才会提示冲突,解决冲突后,工作区代码比远端更新,再add-commit-push
  2. 假如本地先commit了change,那git pull从远程拉分支到本地时,就时马上会有冲突,需要解决再push。

如何实现初始化提交变化(如配置文件夹config),第二次不提交?
截图会把服务器端的这个文件删除。
在这里插入图片描述

好的处理方法是:

git add .
git commit –m “”
git rm --cached config.properties
git push

版本回退:穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

git log

git log --pretty=oneline

git reset –hard HEAD^

git reset –hard HEAD~100

git reset –hard commitId指定回到未来的某个版本

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。

git reflog

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交(参考版本回退一节)不过前提是没有推送到远程库。

git reset –hard HEAD^

git reset HEAD file

git checkout – file。

创建管理分支

查看分支:git branch

创建分支:git branch

切换分支:git checkout

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge

删除分支:git branch -d

用git log --graph命令可以看到分支合并图。

合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

开发一个新feature,最好新建一个分支;

如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用
git rm file_path
当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用
git rm --cached file_path
在这里插入图片描述

回退到某个commitid:
git reset --soft d40d37199c9f123dd93022841c1f6a064c97810b

需要开发一个新的特性,而master分支已经被自己污染:
从远端origin仓库拉取 master到本仓的一个新的分支featue(feature分支就和远端master一致)
git fetch origin master:feature
git rebase feature拉直此分支
进行修改,
git stash保存修改
git pull origin master(同步master)
git commit
git push -f youyou feature:FEATURE(将本仓的feature分支代码提到fork仓的FEATURE分支) -f是覆盖已提交的代码
结束
在这里插入图片描述

Merge request提交到自己的远端分支bootstrapCombine后之后的一个月一直没有跟master分支同步的解决方法:
舍弃本地分支,重新将自己的远端分支bootstrapCombine拉下来。
git fetch youyou bootscriptCombine: bootscriptCombine
切到bootscriptCombine分支
git checkout bootscriptCombine
拉取master的最新代码到lmaster分支,将bootscriptCombine分支变基(就是讲bootscriptCombine分支的底座变成最新的master代码)
git fetch origin master:localmaster
git rebase localmaster
出现冲突解决冲突,每解决一个,就git rebase –continue
然后重新提交自己的merge request。
以后经常更新自己的本地master分支,并将自己的特性本地分支进行rebase

git log --graph

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值