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

1 工作场景:某项目有master分支和dev分支,dev分支原本是从master分叉而来的,dev分支不断延伸,在这过程中master分支已经有了新的提交;现在问题是,我需要将dev分支与master分支同步,也就是说dev分支现在要将master分支最新的提交同步到dev这边来,使得dev的开发时刻是建立在最新的master基础上的。
【Linux|Git踩坑集锦(小白作者在工作场景使用git的总结)】关键词概括:同步主分支
跳坑指南:对于以上工作场景,也分两种情况:一种是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 本地分支xxxorigin/远程分支xxx
使用这种方式会在本地仓库新建本地分支xxx,并自动切换到新建的本地分支xxx,当然了远程分支xxx的代码也拉取到了本地分支xxx中。采用这种方法建立的本地分支会和远程分支建立映射关系。
(2).不需要本地分支和远程分支建立映射关系
执行如下命令:
git fetch origin 远程分支xxx:本地分支xxx
使用这种方式会在本地仓库新建本地分支xxx,但是并不会自动切换到新建的本地分支xxx,需要手动checkout,当然了远程分支xxx的代码也拉取到了本地分支xxx中。采用这种方法建立的本地分支不会和远程分支建立映射关系。
b、当本地没有其他分支的代码仓库时
执行如下命令:
git clone -b 分支名 仓库地址
执行上述命令后就将远程分支拉取到了本地。

    推荐阅读