我们就需要借助git merge –squash命令参数来重新准备提交。(这是一个明确的merge操作不同于git rebase,不要搞混淆这两个命令的作用。) git merge --squash develop_newfeature_ImportDataInterface Updating cc1fea6..e6fb522 Fast-forward Squash commit -- not updating HEAD 1.txt | 3 +++ 1 file changed, 3 insertions(+) --squash
为什么使用 squash merge? 首先,我们可能需要解释一下,为什么我们采用 squash merge 而不是传统的 merge 合并代码。 实际上我们的解决方法是: 控制 master 分支权限,所有分支均需要通过 MR / PR 才允许合并 通过 MR / PR 后,默认使用 Squash Merge 模式进行合并 Squash 合并模式 为此,在第五人的开发过程中,我提出了另一种分支模式,我称为 rebase & squash 模式。 在 rebase & squash 模式下也是一样的,但不同的是,传统模式下,develop 分支创建之后,会一直存在于远端,继续合并;而 rebase & squash 模式下,这个分支只会临时地存在于远端 比如说,小团队开发阶段采用 rebase & squash,但最终合并到大项目的关键分支中则采用项目模式。
tanh-squash 的 log_prob 未修正、α 自适应错写、没有双 Q 取最小的三连坑场景:在连续控制(Pendulum/HalfCheetah/Walker 等)上复现 SAC。 场景复现(tanh-squash log_prob 校验脚本)保存为 sac_tanh_logprob_check.py,CPU 即可运行,观察两种写法的数值差异。 alpha": float(log_alpha.exp().item()), "entropy": float((-logp_pi).mean().item()), }要点回顾tanh-squash 结语SAC 的“隐形三连坑”——tanh-squash log_prob 未修正、α 自适应断梯度缺失、没有双 Q 最小与 target bootstrapping——足以让曲线长期低迷或随机游走。
*: /backup *(rw,sync,no_root_squash) 若要指定特定ip,配置如下: /backup 172.27.9.17(rw,sync,no_root_squash) 172.27.9.227 (rw,sync,no_root_squash) 172.27.34.37(rw,sync,no_root_squash) 典型参数说明 ro:共享目录只读 rw:共享目录可读可写 all_squash :所有访问用户都映射为匿名用户或用户组 no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组 root_squash(默认):将来访的root用户映射为匿名用户或用户组 和root_squash为默认设置,前者表示客户端访问用户先与服务器端本机用户匹配,匹配失败后再映射为匿名用户或用户组,后者表示root用户也映射为匿名用户或用户组。 ,no_all_squash) /backup 172.27.9.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash
# root_squash:将客户端使用的是root用户时,则映射到NFS服务器的用户为NFS的匿名用户(nfsnobody) # no_root_squash:将客户端使用的是root用户时,则映射到 和 no_root_squash,其中 no_root_squash 和 root_squash的效果如下: ruler@ruler-virtual-machine:/nfs$ ls -alh total -rw-r--r-- 1 nobody nogroup 0 5月 31 22:12 root_squash exportfs主要用于管理当前NFS服务器的文件系统,用法如下: # 显示共享目录 三、总结 1.关于NFS文件夹权限问题 实际上就是上面提到的root_squash和no_root_squash root_squash:客户端以root用户访问nfs下的文件,在服务器看来都是nfsnobody no_root_squash:客户端以root用户访问nfs下的文件,在服务器看来还是以root用户访问,所具有的权限也是root权限。
(ro,no_root_squash) /root/mysource 192.168.56.102(rw,no_root_squash) ############################## #2.允许访问的主机可以是ip地址或域名,有以下几种写法: 192.168.56.102(rw,no_root_squash) 192.168.56. *(rw,no_root_squash) *(rw,no_root_squash) 192.168.56.0/24(rw,no_root_squash) #3.主机后面应直接跟相应的权限。 权限的种类: #权限有下面几种: rw :读写 ro :只读 sync :数据会同步写入到内存与硬盘中, async :数据会先存于内存中, root_squash :使用nfs时,如果用户是root, ,root_squash,no_subtree_check) showmount 指令可以查看nfs服务器的分享信息,该指令是在客户端使用的。
reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log pick:正常选中 reword:选中,并且修改提交信息; edit:选中,rebase时会暂停,允许你修改这个commit(参考这里) squash:选中,会将当前commit与上一个commit合并 fixup:与squash相同,但不会保存当前commit的提交信息 exec:执行其他shell命令 上面这6个命令当中,squash和fixup可以用来合并commit。 先把需要合并的commit前面的动词,改成squash(或者s)。
--------------------------------------------------------- /home 192.168.78.0/24(rw,fsid=0,sync,all_squash ) #导出虚拟根下的子目录1 /home/data 192.168.78.0/24(rw,sync,all_squash) #导出虚拟根下的子目录2 -------------------- -------------------- #rw :读写; #ro :只读; #sync :同步模式,内存中数据时时写入磁盘; #async :不同步,把内存中数据定期写入磁盘中; #no_root_squash 不安全,不建议使用; #root_squash :和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root; #all_squash :不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份 2.4 对导出的目录赋予权限 #改变文件的属主属组,结合/etc/exports/中的all_squash使得客户端使用NFS的用户被限定为指定用户nfsnobody的权限 chown -R nfsnobody
nfs-server ~]# cat /var/lib/nfs/etab /data/nfs192.168.1.215(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash ,no_all_squash,no_subtree_check,secure_ocks,acl,anonuid=65534,anongid=65534,sec=sys,rw,no_root_squash ,no_all_squash)/data/nfs192.168.1.0/24(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash ,no_subtree_check,secure_lcks,acl,anonuid=65534,anongid=65534,sec=sys,ro,root_squash,no_all_squash)[root
#echo“ / mnt / pg_master / wal_archives 10.20.20.5(rw,sync,no_root_squash)” >> / etc / exports#echo“ / mnt / pg_master / wal_archives 10.20.20.5(rw,sync,no_root_squash)” >> / etc / exports 或者,您可以使用printf #printf“ / mnt / pg_master / wal_archives 10.20.20.5(rw,sync,no_root_squash)\ n” >> / etc / exports#printf “ / mnt / pg_master / wal_archives 10.20.20.5(rw,sync,no_root_squash)\ n” >> / etc / exports 您还可以使用cat # echo "/mnt/pg_master/wal_archives 10.20.20.5(rw,sync,no_root_squash)" | tee -a /etc/exports OR
reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log pick:正常选中 reword:选中,并且修改提交信息; edit:选中,rebase时会暂停,允许你修改这个commit(参考这里) squash:选中,会将当前commit与上一个commit合并 fixup:与squash相同,但不会保存当前commit的提交信息 exec:执行其他shell命令 上面这6个命令当中,squash和fixup可以用来合并commit。 先把需要合并的commit前面的动词,改成squash(或者s)。
undefinedyum install nfs-utils -y 配置文件路径undefined/etc/exports 配置文件语法格式 /data 172.0.0.0/24(rw,sync,all_squash 1000) 共享目录 允许挂载网段 配置参数 配置参数说明 rw #读写权限 ro #只读权限-不常用 root_squash #当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用) no_root_squash #当NFS客户端以root管理员访问时, 映射为NFS服务器的root管理员(不常用) all_squash #无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用) no_all_squash 保证不丢失数据 async #优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 anonuid #配置all_squash
可读写 ro 只读 sync 文件同时写入硬盘和内存 async 文件暂存内存,不立刻写入磁盘 no_root_squash root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份; all_squash ,no_all_squash,sync) /nfsfile 192.168.59.0/24(rw,sync,all_squash,anonuid=2000,anongid=2000) # 生产环境建议这样写 #注意:要想让客户端也能写入数据,配置时候需要加no_all_squash权限 # 启动NFS服务 servicerpcbind start # 注意这两个服务的启动的顺序。 可以给多个客户端不同的授权,如 /home192.168.2.11(rw,sync,no_root_squash,no_all_squash) /home192.168.2.7(ro,sync) 服务端端执行
安装 NFS 服务器 服务端节点: yum -y install nfs-utils mkdir /nfs-{1..6} cat /etc/exports /nfs-1 *(rw,no_root_squash ,no_all_squash,sync) /nfs-2 *(rw,no_root_squash,no_all_squash,sync) /nfs-3 *(rw,no_root_squash,no_all_squash ,sync) /nfs-4 *(rw,no_root_squash,no_all_squash,sync) /nfs-5 *(rw,no_root_squash,no_all_squash,sync) /nfs-6 *(rw,no_root_squash,no_all_squash,sync) systemctl enable nfs-server systemctl restart nfs-server
no_root_squash、root_squash 客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份? 预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。 但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行! , root_squash 等等, # 其实还有 anonuid 及 anongid 等等的设定! 192.168.100.0/24(ro) *(ro,all_squash) /home/upload 192.168.100.0/24(rw,all_squash,anonuid=210,anongid
每行的网段和后面括号的权限要紧挨着、不能有空格;否则挂载后是只读文件系统 $ vim /etc/exports #设置只读权限 共享目录1 192.168.66.0/24(ro,async,root_squash ) #可写、将客户端登录的用户在服务器映射为匿名用户 共享目录2 192.168.66.0/24(rw,async,root_squash) #可写、将客户端登录的用户在服务器保留 root身份 共享目录3 192.168.66.0/24(rw,async,no_root_squash) #可写、将客户端登录的用户在服务器映射为指定的用户 共享目录4 192.168.66.0/24(rw,async,all_squash,anonuid=xx,anongid=xx) $ mkdir -p 共享目录n $ echo "123" >>共享目录 yum -y install rpcbind nfs-utils $ vim /etc/exports /shares 192.168.66.0/24 (rw,async,no_root_squash
; ro: 只读的权限; no_root_squash:客户机用root访问nfs共享文件夹时,保持root权限,root_squash 是把root映射成nobody,no_all_squash :将远程访问的所有普通用户及所属组都映射为匿名用户或用户组,通常也就是nobody(nfsnobody); no_all_squash:与all_squash取反(默认设置); root_squash ,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,no_root_squash ,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec =sys,rw,no_root_squash,no_all_squash) 开启nfs的RCP服务和查看rpcbind服务端口 [root@dev-huanqiu ~]# /etc/init.d/rpcbind
install -y nfs-utils 共享文件夹在/etc/exports文件中配置,在文件末尾添加: /root/zhangyiwei/ 192.168.10.219(rw,no_root_squash ,no_all_squash,sync) /root/zhangyiwei/ 为共享的路径 192.168.10.219 为主机名,一般用以下设置 可以使用ip或网络号:例如 192.168.12.20 都可以 可以使用主机名,但是这主机名必须在/etc/hosts内配置 访问权限选项 rw表示(read-write)可读写,ro表示(read-only)只读 用户映射选项 all_squash :将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody); no_all_squash:与all_squash取反(默认设置); root_squash:将root用户及所属组都映射为匿名用户或用户组 (默认设置); no_root_squash:与rootsquash取反; anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx); anongid=xxx
(这个使用后不会合并为一次commit) git merge --no-commit dev.master // dev.master 是要合并的分支名称 --squash --squash 参数当一个合并发生时,从当前分支和对方分支的共同祖先节点之后的对方分支节点,一直到对方分支的顶部节点将会压缩在一起,使用者可以经过审视后进行提交,产生一个新的节点。 git merge --squash dev.master // dev.master 是要合并的分支名称 在PhpStorm中的使用: 其中勾选"No commit":相当于使用--no-commit 勾选"Squash commit":相当于使用--squash
) /nfs/app 192.168.0.0/255.255.0.0(rw,sync,all_squash) /nfs/app 读写 /nfs/public 只读 /etc/exports 参数说明 rw:可读写 ro: 只读 no_root_squash:对root用户不压制,如果客户端以root用户写入,在服务端都映射为服务端的root用户 root_squash:默认情况使用的是相反参数root_squash ,如果客户端是用户root操作,会被压制成nobody用户 all_squash: 不管客户端的使用nfs的用户是谁,都会压制成nobody用户 insecure: 允许从客户端过来的非授权访问 sync ,all_squash) /nfs/app 192.168.0.0/255.255.0.0(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure ,root_squash,all_squash) [root@nfs-server nfs]# exportfs -rv exporting 192.168.0.0/255.255.0.0:/nfs