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 分支名 仓库地址
执行上述命令后就将远程分支拉取到了本地。
推荐阅读
- #|git使用踩坑总结
- C语言简明教程(三)(GNU GCC、LLVM Clang和开发环境部署)
- C语言简明教程(二)(C程序编译链接过程和实例对照详解)
- 计算机网络简明教程(四)(网络性能指标分析详解)
- 计算机网络简明教程(三)(网络分类详解)
- 超简单!Linux VIM自动补全YouCompleteMe使用Vundle快速安装
- Wildpackets Omnipeek 11.0.1 64X+注册机 网络抓包分析工具百度网盘下载
- Linux C编程详解(进程原理分析、文件描述符和文件记录表、文件句柄和文件原理)
- 开发者必备!你真的懂Git吗(你知道Git的运行进制吗?)