Git学习笔记】基础操作 & 协作开发(补充)

  1. 当前修改未 add 时,切换分支,修改会被带过去覆盖
  2. 当前修改 add 了,但是没有commit,切换分支还是会被带过去
  3. 只有 git status看不到有修改的东西的提示时,切换分支才不会被带过去
  4. git clone -b <branch_name/ tag_name> --depth=1 url 克隆指定分支或者tag的仓库
  5. git blame <filename> [-L a,b] 列出文件中每一行的commit id, 作者,提交日期等;-L 参数表示后面接的是行号(Line), a,b代表查询文件的第a行到第b行之间的文件内容情况。
  6. git rebase -i <base-commit> 在一个分支上产生了很多的无效的提交,这种情况下使用 rebase 的交互式模式可以把已经发生的多次提交压缩成一次提交,得到了一个干净的提交历史 git rebase vs git merge
    也可以用于将之前的一个提交重新添加message,相当于重新提交一下
  7. 使用rebase进行pull
    直接使用git pull拉取代码,被同事狠狠地diss了
    git pull --rebase 或设置默认git config --global pull.rebase true
  8. 5条提高效率的命令
    https://mp.weixin.qq.com/s/J4Q6YpuOSAy3GvIXdqmMfQ
stash:存储临时代码,不止 stash pop 还有 stash apply等
reset --soft:软回溯,回退 commit 的同时保留修改内容。
cherry-pick:复制某次 commit 到别的分支。
revert:撤销某次 commit 的修改内容,不同于reset,revert只会应该指导的commit提交的内容。
reflog:记录了 commit 的历史操作。
  1. 需要从别的repo上提取某次的提交,将其应用到我自己的repo上
# 进到自己的目录
cd xupeng
# 添加源仓库,命名为source(之前我们熟悉的都是origin)
git remote add source <URL>
# 获取源仓库指定分支
git fetch source <source_branch>
# 找到需要提交的commit id
git log source/source_beanch
# 在我的repo分支上合并特定提交
git cherry-pick <commit id>
# 推送
git push
  1. git status默认会显示文件内容和文件权限修改,如果只想显示文件内容,忽略文件权限
git config core.fileMode false
或
git config -add core.fileMode false
或
git config --global core.fileMode false

几个高级技巧
https://mp.weixin.qq.com/s/JI49F5nr7xeOBAAj3Q3agg

# add & commit,不用先add 再 commit,可以使用 -am 合并成一个命令
git commit -am "new project"

# amend
# 可以在将当前提交推送到远程存储库之前对其进行其他更改,要保留以前的提交消息,要使用 “--no-edit” 标志
git add . 
git commit --amend 

# 我们想推送本地提交并覆盖远程历史记录(不推荐)
git push origin master --force

# 要撤消 Git 中的提交,可以使用 revert 命令。但是,此命令不会删除任何提交。相反,它会创建一个新的提交来撤消原始提交所做的更改。
git log --oneline
git revert 8f184d5

# 重命名分支
git branch -M main

# 查看日志
git log --graph --decorate --oneline

# 切回上一个分支
git checkout -

# 用远程存储库覆盖本地
git fetch origin
git reset --hard origin/master
如果仍有未跟踪的文件,可以使用以下命令将其删除:
git clean -df
  1. git基础操作
    https://mp.weixin.qq.com/s/DCzrPDCVetymlazpRBYANw

GIT开发流程

https://mp.weixin.qq.com/s/1iR4XgxDeO08NZFMEGdRBw

1. 拉取代码

git clone https://code.xxx.com/xxx/xxx.git

2. 初次开发需求前,要先拉取生产/预发分支,然后基于这个分支之上,创建自己的特性分支进行开发

git fetch origin release:release

git checkout release

git checkout -b feat-0131-jie

如果不是初次开发,本地已有生产/预发分支,则需要重新拉取远程的最新代码,然后再创建

git checkout release

git pull origin release

git checkout -b feat-0229-jie

分支名规范

分支责任-需求日期/需求号-开发人姓名,一般按部门规范来,常见的有以下几种。

  - feat:新功能

  - fix:修补bug

  - doc:文档

  - refactor:重构(即不是新增功能,也不是修改bug的代码变动)

  - test:测试

  - chore:构建过程或辅助工具的变动

注意2:为啥拉取的是生产/预发分支 之所以要拉取 release/uat 分支而不是拉取
dev/test,是因为后者可能包含着一些其他成员还未上线或者可能有 bug
的需求代码,这些代码没有通过验证,如果被你给拉取了,然后又基于此进行新的需求开发,那当你需求开发完成,而其他成员的需求还没上线,你将会把这些未验证的代码一起发送到
uat/release 上,导致一系列问题。

3. 需求开发完成,提交&合并代码

首先先在本地把新的改动提交,提交描述的格式可以参考着分支名的格式

git add .
git commit -m "提交描述"

在合并代码时,我们要将四种分支模型(dev、test、uat、release)作为参照物,而不是把关注点放在自己的分支上。比如我们要在 dev 上调试,那就需要把自己的分支合并到 dev 分支上;如果我们需要提测,则把自己的分支合并到 test 分支上,以此类推。

第一种:线上合并,也是推荐的规范操作

git push origin feat-0131-jie

先按照上面命令将自己的分支推送到远程仓库。
然后在线上代码仓库中,申请将自己的分支合并到 xx 分支(具体是哪个分支就根据你当前的开发进度来,如 test),然后在线上解决冲突。

第二种,本地合并(前提你要有对应环境分支 push 的权限)

## 先切换到你要提交的环境分支上,如果本地还没有就先拉取下来
git fetch origin test:test

git checkout test

## 然后将自己的分支合并到环境分支上(在编辑器解决冲突)
git merge feat-0131-jie

## 最后将环境分支推送到远程仓库
git push origin test

4. 验收完成,删除分支

git branch -d <分支名>

## 如果要强制删除分支(即使分支上有未合并的修改)
git branch -D <分支名>

代码合并错误,并且已经推送到远程分支,如何解决?

首先切换到特性分支合并到的错误分支,比如是 release
git checkout release
然后查看最近的合并信息
git log --merges
撤销合并
git revert -m 1 <merge commit ID>
最后,撤销远程仓库的推送
git push -f origin release
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值