Git 操作案例

Git环境初始化配置步骤:

配置只推送对应分支

git config --global push.default simple

配置commit模板,参见下面模板格式设置

git config --global commit.template git_commit.template

配置git pull为git fetch + git rebase

git config --global --add pull.rebase true

简易修改代码步骤:

 git checkout develop #develop分支是需要修改代码的分支,如果已经在这个分支,可以忽略这个步骤

git pull  #先同步最新代码
修改代码
git add .
git commit
# git pull之前保证是clean状态,否则git pull不成功
git pull  #可能有人修改了,需要同步后再提交,如果有冲突会提示,解决冲突后git rebase --continue
git push

特性分支开发参考流程

 以下示例中,远端库的修改会使用命令:git push -f。该命令会强制使用本地库分支的内容,强行覆盖远端库对应分支,如果你不知道你在干什么,请不要随意使用。

git checkout -b testdev      # 创建本地开发分支

git add testdev.cpp

git commit -m "commit1"

git push --set-upstream origin testd         # 首次push到远端特性分支

git add testdev2.cpp

git commit -m "commit2"

git push

git add testdev3.cpp

git commit -m "commit3"

git push

# 本地合并多次提交

git log     # 找到第一条非本任务的commit号,如 abc123

git reset --soft test123           # 将之前已经入库的所有修改回退到test123,差异点保存在暂存区

git commit -m "mycommit message"     # 刷新commit日志

git push -f       # 强制覆盖远程特性分支,这样做的原因是此时本地分支和远程分支已经分叉,必须强制覆盖。该命令只允许在特性分支使用,切记。

#将特性分支变基到最新的develop分支

git fetch  # 获取远端库所有分支最新状态

git rebase origin/develop  # 特性分支修改合入Develop分支,通过变基操作,创造更线性的提交历史。若出现冲突,解决冲突后 git add , git rebase --continue

git push  -f    # 因为此时本地分支和远端分支已经分叉,需要强制提交。该命令只允许在特性分支使用,切记。

## 现在特性分支commit已经在develop分支前面,需要将特性分支修改合入到develop分支上,我们这里使用FastForward模式。

git checkout develop # 切换到develop分支

git merge testdev   # FastForward方式合入特性分支

git push  #更新远端develop分支

让develop分支的提交更加线性

大家在develop分支开发的过程中,时常会发现develop分支会分叉和合并,提交记录并不是很直观。

1,在develop分支push之前,先使用git fetch命令,这个命令会将远端repo的改动拉取到本地,但是不影响工作目录的代码。如下图所示,本地和远端的develop分支有了分叉

2,执行 git rebase origin/develop。这样就将本地的commit变基到远端的develop上。(如果有冲突,需要先解决,rebase流程可以参考git官方参考文档)

3,执行 git push。

注:TortoiseGit使用方式类似,先fetch, 再rebase to origin/develop,最后push。如果你直接push的时候,TortoiseGit会提示你先要pull,你下拉选择fetch即可。

替换方法1:

git pull默认是git fetch+git merge,用这个配置可以改成git fetch+git rebase

git config --global --add pull.rebase true

替换方法2:

直接执行git pull --rebase即可,会将原有的git merge 改为 git rebase

Git增加自定义日志模版

1, 本地D盘新建git_commit_template.txt,内容为:

Linux环境在自己的home目录创建文件,~/git_commit_template.txt

TASK ID:

Description:

Reviewed By:

Notes:

2, 执行Git命令:

git config --global commit.template d:\\git_commit_template.txt

Linux环境命令如下:

git config --global commit.template ~/git_commit_template.txt

3, 后续commit的时候,直接输入git commit,会弹出编辑窗口,里面就是模版内容

修改已提交的commit

  • 远端库没有新的commit

git add . new_modified_files.cpp  # 新增修改代码

git commit --amend -m 'new commit log'  # 如果不需要修改log,这里不用带 日志,回车后弹出窗口直接关闭即可

git push -f    # 强制更新远端库

  • 远端库存在新的commit

找到需要修改的commit的ID

git rebase -i ID^

弹出编辑窗口中将需要修改的ID改为edit,保存关闭窗口。

修改本地文件内容

git add .

git commit --amend -m 'new commit log'    # 如果有冲突,先解决冲突,然后执行git add .标识冲突已经解决完毕

git rebase --continue

git push -f   # 强制更新远端库

撤销本地修改

  • 文件修改未暂存

git restore modified_file.cpp

git checkout -- modified_file.cpp

git checkout .   #  批量撤销,不影响暂存区

  • 文件修改已暂存

git restore --staged modified_file.cpp   # 暂存修改会保留在工作区

git reset HEAD modified_file.cpp   # 暂存修改会保留在工作区

git reset HEAD     # 批量撤销暂存修改

撤销本地Commit

HEAD^指定要回退的版本ID,此处的含义是最新提交的上一个提交。

git reset HEAD^    #修改会保存在工作区
git reset --soft HEAD^    #修改会保存在暂存区
git reset --hard HEAD^    #修改全部丢失

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值