内部git常用总结
摘要:介绍一下高效率上库的方法,省去合代码的流程。 推荐在linux服务器上完成代码的clone,切分支,编写,编译,提交,push的全部流程。 1、clone:git clone git@rnd-isourceb.huawei.com:TACS/td_utfp.git test (test为文件夹名) 2、设置库: git remote -v 查看当前库 添加远程本地库:git remote add origin git@rnd-isourceb.huawei.com:w00424187/utfp.git 添加远程主干库:git remote add upstream git@rnd-isourceb.huawei.com:TACS/td_u
介绍一下高效率上库的方法,省去合代码的流程。
推荐在linux服务器上完成代码的clone,切分支,编写,编译,提交,push的全部流程。
在linux服务器上生成key:
ssh-keygen
然后将自己对应用户路径下的.ssh文件夹中id_rsa.pub文件内容复制,并在isource上配置ssh key。
参考文档:http://3ms.huawei.com/km/blogs/details/2330371
http://3ms.huawei.com/km/blogs/details/5230201
先将以下基础看完,最后再看上库最简单的三部曲
1、clone:git clone git@rnd-isourceb.huawei.com:TACS/td_utfp.git test
(test为文件夹名)
2、设置库:
git remote -v 查看当前库
添加远程本地库:git remote add origin git@rnd-isourceb.huawei.com:w00424187/utfp.git
添加远程主干库:git remote add upstream git@rnd-isourceb.huawei.com:TACS/td_utfp.git
origin 和 upstream看个人习惯相反设置
如果地址或者名称取错了,不能修改,只能先移除再重新添加
git remote remove origin
3、更新库上库到本地
git fetch upstream
git fetch origin
或者 git remote update
ps:用小乌龟Pull操作等于:git fetch upstream + git merge
ps:为了避免冲突,所以最好采用先fetch,再切分支方式,不要直接pull拉取
4、基于库上最新代码develop分支切分支
ps:此处强烈建议每次fetch库上最新的代码,然后基于最新的远端分支创建一个分支来进行特性开发
git checkout -b test upstream/develop
(test为本地分支取名)
本地切分支:git checkout test1
查看当前分支:git branch
删除分支:git branch -D test1
5、在当前分支修改代码
查看当前文件变更情况:git status
放弃变更文件所有更改:git checkout .
(将.换成某个文件的全路径,表示放弃该文件的修改)
ps:git checkout 只会放弃没有add commit的文件的修改(也就是git status中红色部分的文件)
删除未追踪(untracked)文件:
git clean -f 删除文件
git clean -n 显示要删除的文件和目录
git clean -df 删除文件和目录
批量删除分支:
git branch |grep 'branchName' |xargs git branch -D
将更改添加到缓存:git add .
(将.换成某个文件的全路径,表示添加某一指定文件)
6、add后提交
提交:git commit
此时进入提交界面
输入 i : 进入插入模式,将commit信息补全后
输入 esc : 退出插入模式
输入 shift + ; :再输入 wq 保存并退出
7、提交后查看提交情况:git log 可以查到所有的commit id
8、若提交后又有些更改,更改后继续add
提交时输入 git commit --amend
表示将当前更改合入上一次commit,此时虽两次提交,但只会有一个commit号
也可以理解成修改上一次commit,可以修改commit信息
9、若提交后发现多提交了一个文件
git log:查找所有commit号,找到上次你提交的commit的号的上一个commit号(通常为别人提交的)
git reset commit_id(上一步找到的commit号)
表示回到那个commit点,你修改的代码不会丢,会回到add前的状态
此时用git checkout 或者rm将不想要的删了 ,或者在add时不要全部添加,重新添加想要提交的文件
然后重新git commit提交(注意不是git commit --amend,因为你的提交已经被reset了)
10、上传到远端库
git push origin test:test --force
(git push origin(远端本地库) test(本地分支名):test(远端分支名,没有会自动创建) --force)
现在就可以提pr了
11、如果想向publish和develop各提一个pr,这样避免合代码:
步骤1,按以上操作先向develop提一个pr
步骤2,基于远端库的publish切一个本地分支:
git checkout -b test_pub upstream/br_utsv1r5_publish
步骤3,找到修改的向远端库develop推的commit号(两种方式,一种是pr了、链接有,直接复制,一种是切到提develop的分支,然后git log)
git cherry-pick commit_id
这句话就完成了合入代码并以相同commit信息提交的流程
步骤4,push到远端库上重新提pr即可
ps:cherry-pick 相当于把之前的commit id提交到最新的那个分支上面了,还可以继续用amend ——强大
12、解决冲突
git cherry-pick commit_id
这句有时候会失败,原因是遇到了冲突
步骤1,输入:git mergetool
步骤2,输入:shift + ;
此时进入了查看冲突文件的修改的界面,但是这个界面很花不好看,我通常不习惯在这里解决冲突
步骤3 ,输入:wqa
不做任何更改就退出
步骤4,此时会提示是否已解决冲突,选择已解决
ps:其实并未真的解决,文件里还有些head <<<<之类的冲突符号,用本地打开冲突文件,然后将你想保留的真实更改在本地重新编辑保存即可
步骤5,git cherry-pick --continue
不输这句继续是无法做别的操作的
冲突成功解决
小窍门
1、只要将每次提交push到远端本地库上,commit号就一定会保留,换一个库也能将更改cherry-pick过来
2、每次开发新特性不必重新clone代码,先fetch再切分支,就是库上最新代码了
3、不要用pull,pull意味着把库上所有的commit(包括别人的)全部cherry-pick过来,
每次只需要切一个最新分支代码,将你的commit部分cherry-pick过来就可以了,免得冲突太多太难解决。
这种方式可以始终基于最新的分支验自己的本地代码。
4、git show commit_id 可以看到这个commit所更改的所有内容
5、服务器上推代码真的非常快,一是不用合代码,用git status可以看到所有变更,一目了然,二是push的速度真的很快
上库三部曲:
1.git status查看变更
git add 添加需要的更改
2.git commit (不是第一次提交就git commit --amend)
3.git push
ps:git commit --amend 太好用了,特别是对一个分支的反复修改,可以使用同一个commit id。
有写的不对的地方,或者更好的提高效率的办法,请大家指正,多交流,谢谢
关于Binary file forbidden解决方案:
如果是合入个人仓(如上图的z00383539仓),可以取消或修改个人仓的二进制门禁,修改方法如下:
点击左上角的按钮 --> Git Hooks/Web Hooks ,配置 Binary file gate页信息,在Allowed files中新增待提交的二进制文件类型,并在Privileged users中新增自己的工号信息。或者直接把Enable binary file gate前的勾去掉关掉二进制门禁。(找不到这个选项,是因为没点击edit按钮)
git stash
保存当前工作进度,会把暂存区和工作区的改动保存起来。执行完这个命令后,在运行git status命令,就会发现当前是一个干净的工作区,没有任何改动。使用git stash save 'message...'可以添加一些注释
https://www.cnblogs.com/tocy/p/git-stash-reference.html
git stash list
显示保存进度的列表。也就意味着,git stash命令可以多次执行。
git stash save 'build files'
#恢复但不删除stash拷贝
git stash apply
git stash pop
#删除stash分支
git stash drop stash@{0}
git stash clear
内部git常用总结的更多相关文章
- git常用命令2
一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...
- 转 Git 常用命令大全
一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch ...
- git常用命令3
一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态git commit 提交git branch -a 查看所有的分支git branch -r 查看 ...
- Git 常用命令速查表(图文+表格)【转】
转自:http://www.jb51.net/article/55442.htm 一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git comm ...
- Git常用操作指南
目录 前言 Git简介 安装之后第一步 创建版本库 本地仓库 远程仓库 版本控制 工作区和暂存区 版本回退 撤销修改 删除文件 分支管理 创建与合并分支 解决冲突 分支管理策略 状态存储 多人协作 R ...
- Git常用命令及方法
https://blog.csdn.net/web_csdn_share/article/details/79243308 Git常用命令及方法大全 下面是我整理的常用 Git 命令清单.几个专用名词 ...
- Ubuntu常用命令及git常用命令
1. CMakeLists.txt中指定OpenCV路径 set(OPENCV_DIR /***/***/opencv-2.4.9) 2. cmake工程编译安装 mkdir build cd bui ...
- Git 常用命令大全-转载
一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...
- 10年阿里自动化测试架构师帮您收集的:git常用命令大全以及git原理图【泣血推荐,建议收藏】
一.Git分布式版本控制简介 Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.本来想着只把最有用.最常用的 Git 命令记下来, ...
随机推荐
- LODOP打印控件进行批量打印
Lodop打印控件批量打印的方式:1.批量打印每页内容相同的:(1)批量打印相同内容的很多纸张,可以设置打印份数,把该内容打印出多份.2.批量打印每页不同内容的:(1)通过在一个任务中分页,循环添加页 ...
- 【python练习题】程序7
#题目:将一个列表的数据复制到另一个列表中. l = [1,2,3,4,5,6,7,8] m = [] m = l[:] print (m)
- KKT条件
kkt条件背下来容易.理解上还有问题 主要是lambda≥0和lambda*f(x)=0这两个条件懵逼. 下面说明一下为什么 参考:https://blog.csdn.net/newthinker_w ...
- 灰度图Matlab
[转载]matlab中pcolor绘图“少画一行”的问题 本文是关于matlab pcolor函数(slice,surf函数的情况与这个类似)绘图的问题的一些解决方案,在此记录备用 经 常处理三维(或 ...
- Bash 5.0 发布及其新功能
导读 邮件列表证实最近发布了 Bash-5.0.而且,令人兴奋的是它还有新的功能和变量.如果你一直在使用 Bash 4.4.XX,那么你一定会喜欢 Bash 的第五个主要版本. 第五个版本侧重于新的 ...
- a标签实现锚点功能
a标签实现锚点功能 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- 使用poi将Excel文件转换为data数据
pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:// ...
- Python中csv模块解析
导入模块 import csv 2.读取csv文件 file1 = open('test1.csv', 'rb') reader = csv.reader(file1) rows = [row for ...
- 洛谷P1083借教室题解
题目 这个难度感觉并没有那么高,因为这个题暴力也好打,但是比较难想出正解,因为如果你不看标签是很难想到这个题竟然是二分,当然前缀和应该很好想,毕竟让你求的是在某段时间内借教室的和是否满足. 这样我们可 ...
- [LightOJ1038] Race to 1 Again
传送门:>出错啦< 题意:给你一个整数n,每一次可以随机选择一个n的因子x(包括1和它自己),让n除以x——不停重复此过程,直到n==1. 问n被除到1的期望次数. 解题思路: 今天刚学的 ...