git玩法

前言:

作用:可以通过git来进行多人项目的版本管理,管理的是对于文件的修改记录

范围:git就像一种同步机制,在本地环境的工作区和暂存区、本地环境与远程环境间同步修改。而远程仓库通常部署在平台上,远程仓库间的同步在平台上完成,例如github、gitlab等

1. 项目远程仓库映射关系维护

        项目通过git clone从远程仓库A下载下来时,默认会将项目的origin设置为仓库A的网络地址,个人项目使用默认配置即可,但有时我们需要在本地项目与多个远程项目间建立修改的通道,例如以fork方式来参与开源项目开发,这时便需要我们自己维护仓库间的映射关系。        

1.1 查看/设置 远程仓库 

git 的相关配置可以通过命令查看,也可以查看git的配置文件,git配置文件生效规则是最优先使用仓库配置文件(一般在仓库的根目录下),再次是用户配置文件(在用户文件夹下的.gitconfig文件),最后是系统配置文件(在git安装目录下):

详谈git配置文件_大强家的猫的博客-CSDN博客_git 配置文件

文件中,其内容格式如下

[core]
	repositoryformatversion = 0
	filemode = false
	bare = false
	logallrefupdates = true
	ignorecase = true
[remote "origin"]
	url = https://github.com/printlnCout/learn_git.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master
[branch "my-test"]
	remote = origin
	merge = refs/heads/my-test

 使用命令行方式进行查看

git remote:查看已配置的远程服务器的缩写
git remote -v: 显示配置的远程服务器缩写及对应的上传、拉取地址

当团队仓库地址与个人仓库地址不一致时,可以通过git remote add 远端项目缩写 远端项目详细地址建立映射关系

1.2 产生自己开发仓库

开发方式因团队而异,有的通过git的分支操作来进行团队协作,有的通过fork子项目来协作

相同点:

  • 两种方式都能产生相对独立的新副本作为开发环境,来分离不同团队成员的修改

差异点:

  • 创建方式:fork为代码托管平台(如GitHub)的实现,branch为git的命令。所以fork项目需要在平台上操作,而branch可以在本地通过git branch + ... 操作
  • 生成的新副本:fork产生一个自己的仓库,不影响团队项目,而branch产生团队项目某分支的一个副本会包含在团队项目中
  • 权限控制:fork权限控制更容易做到比branch严格,因为fork生成独立的仓库,所以权限分配比较明确,项目所有者管理主仓库,并处理来自子仓库的合入申请。普通成员在子仓库中开发,开发完成后申请合入主仓库,合入完成后不需要删除分支。而branch的话需要删除分支
  • 开发方式:
  1. fork方式会创建个人仓库,开发人员维护个人仓库的提交记录,与远程仓库保持提交记录,并在完成开发时将修改提交到个人仓库,再提交mr到团队仓库。
  2. branch方式会创建一个新分支,虽然能也可以像fork方式将分支视为仓库,但因为这个新分支是包含在团队项目中的,同步主分支修改会使得项目整体过大不利于维护,推荐用branch方式时,将每个分支的任务视为解决某个实际问题或开发某个功能,提交mr到主分支时保证修改的可解释性,并在合并完后删除该分支

2. 合并多次commit

使用目的:通常我们的修改不会是一次直接通过,但这些提交记录都会有强烈的目的性,这在项目的提交树上可以直观的体现,而多次提交可能会分散我们的目的。我们可以通过git提供的指令,来修剪我们的本地提交记录,如果要同步到远端的个人仓库需要git push -f强制覆盖

方法:git rebase

3. 将修改转移到别处

目的:当在错误的分支或项目上做了修改,想转移到正确的分支上,而又不想重新将修改敲一遍,就需要将修改转移

  • 转移到同一项目不同分支:git cheery-pick、git stash

        两者区别:

  1. 修改未提交时,可使用git stash缓存修改,然后切换到正确分支使用git apply/pop将修改应用
  2. 修改已提交,可切换到目标分支,使用git cherry-pick将指定的commit应用到当前分支。使用stash的话需要先在错误分支上reset提交,再stash缓存需要转移的修改

3. 提交时处理冲突

先检测团队仓库该分支有没有更新:git fetch 团队仓库缩写 具体分支名

有更新的话拉取更新:git pull 团队仓库缩写 具体分支名 --rebase

其中“团队仓库缩写”是在项目远程仓库映射关系中配置,表示关联到哪个仓库。使用rebase选项,可以将他人已合入的修改放到自己修改前面,让自己的修改更集中。

当有代码冲突时,rebase过程会暂停,将冲突的代码一起加入文件,等待我们处理。我们需要将冲突的部分修改完,再git add为这些新创建的修改添加跟踪。这次冲突解决后,需要使用git rebase --continue,通知git可以继续处理

4. 多目标修改

场景:工作中来个紧急需求或缺陷需要马上处理,而已经做了的工作又要保留以便解决这次插入的工作后能继续上手

4.1 保存目前工作区中缓存的修改 git stash -m "该修改相关介绍信息"

      直接使用git stash也可以缓存,但缓存时带的信息对本次修改内容相关性不大,加message的目的是让自己去记更有价值的东西

其他人博客:git 中stash的实用方法_码龙-的博客-CSDN博客_git stash 列表

后续补充:

打tag: 好用的git命令_江小虫儿的博客-CSDN博客_git好用的命令

最常用的 35 个 Git 命令 - 知乎

 git diff比较差异

git commit提交规范:git高级用法_亚里的博客-CSDN博客_git高级用法

分支跳转与切换 git branch git 中stash的实用方法_码龙-的博客-CSDN博客_git stash 列表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值