Git踩坑集锦(小白作者在工作场景使用git的总结)

1

工作场景:某项目有master分支和dev分支,dev分支原本是从master分叉而来的,dev分支不断延伸,在这过程中master分支已经有了新的提交;现在问题是,我需要将dev分支与master分支同步,也就是说dev分支现在要将master分支最新的提交同步到dev这边来,使得dev的开发时刻是建立在最新的master基础上的。

关键词概括:同步主分支

跳坑指南:对于以上工作场景,也分两种情况:一种是master新的提交修改的与你dev分支的提交修改的不是相同的文件,也就是说两者修改的文件不同,这种情况下,可以直接在dev分支执行git rebase master将master分支的新提交同步到dev分支来,不会产生冲突,而且最终的提交历史是线性的。 第二种是两者修改了相同的文件,那么无论如何都会产生冲突,冲突较多时解决起来就很容易出错,因此应当尽可能避免这种情况出现!

https://blog.csdn.net/qq_28584889/article/details/117264005

参考: https://cythilya.github.io/2018/06/19/git-merge-branch-into-master/

2   

工作场景:由于公司的机器ssh的默认端口不是22(假设是33000),在执行git远程库操作的会提示超时,比如

[magnumu@node03 ~]$ git clone git@github.com:test_proj/keeper.git
Cloning into 'keeper'...
ssh: connect to host github.com port 33000: Connection timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

跳坑指南:

(1)修改ssh配置,config文件如果不存在则创建

[magnumlu@node03 ~]$ cat ~/.ssh/config 
Host github.com
Port 22

(2)更改端口配置之后,修改配置文件的权限

chmod 600 ~/.ssh/config

3

工作场景:在某一分支上有了改动但是没有提交,这时如果想切换到其他分支,将会被拒绝执行;如果你既想切换到另外一个分支,又想保存当前分支的工作状态,当前分支的改动暂时又不想提交,这时你就需要用到stash。

git stash会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。

跳坑指南:

(1)暂存当前修改

$ git stash

实际应用中推荐给每个stash加一个message,用于记录版本,使用git stash save取代git stash命令。示例如下:

$ git stash save "test-cmd-stash"
Saved working directory and index state On autoswitch: test-cmd-stash
HEAD 现在位于 296e8d4 remove unnecessary postion reset in onResume function
$ git stash list
stash@{0}: On autoswitch: test-cmd-stash

(2)使用git stash pop 恢复缓存的工作状态,这个指令将缓存堆栈中的第一个stash删除,并将对应修改应用到当前的工作目录下。
你也可以使用git stash apply命令,将缓存堆栈中的stash多次应用到工作目录中,但并不删除stash拷贝。

(3)可以使用git stash list命令查看现有stash,使用git stash drop命令删除某个stash,后面可以跟着stash名字。

参考:git-stash用法小结

4

关联某个issue到某个提交commit

提交的时候,可以使用feat、fix、fixed等关联到某个issus,比如

git commit -m "optimize a problem, feat  #1"

5

拉取远程某分支到本地

a、当本地有其他分支的代码仓库时

通过下述命令查看所有的远程分支:

git branch -r

下面有2种方法来拉取远程分支代码:

(1).需要本地分支和远程分支建立映射关系

执行如下命令:

git checkout -b 本地分支xxx  origin/远程分支xxx

使用这种方式会在本地仓库新建本地分支xxx,并自动切换到新建的本地分支xxx,当然了远程分支xxx的代码也拉取到了本地分支xxx中。采用这种方法建立的本地分支会和远程分支建立映射关系。

(2).不需要本地分支和远程分支建立映射关系

执行如下命令:

git fetch origin 远程分支xxx:本地分支xxx

使用这种方式会在本地仓库新建本地分支xxx,但是并不会自动切换到新建的本地分支xxx,需要手动checkout,当然了远程分支xxx的代码也拉取到了本地分支xxx中。采用这种方法建立的本地分支不会和远程分支建立映射关系。

b、当本地没有其他分支的代码仓库时

执行如下命令:

git clone -b 分支名 仓库地址

执行上述命令后就将远程分支拉取到了本地。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值