上库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常用总结的更多相关文章

  1. git常用命令2

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...

  2. 转 Git 常用命令大全

    一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态  git commit 提交  git branch -a 查看所有的分支 git branch ...

  3. git常用命令3

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态git commit 提交git branch -a 查看所有的分支git branch -r 查看 ...

  4. Git 常用命令速查表(图文+表格)【转】

    转自:http://www.jb51.net/article/55442.htm 一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git comm ...

  5. Git常用操作指南

    目录 前言 Git简介 安装之后第一步 创建版本库 本地仓库 远程仓库 版本控制 工作区和暂存区 版本回退 撤销修改 删除文件 分支管理 创建与合并分支 解决冲突 分支管理策略 状态存储 多人协作 R ...

  6. Git常用命令及方法

    https://blog.csdn.net/web_csdn_share/article/details/79243308 Git常用命令及方法大全 下面是我整理的常用 Git 命令清单.几个专用名词 ...

  7. Ubuntu常用命令及git常用命令

    1. CMakeLists.txt中指定OpenCV路径 set(OPENCV_DIR /***/***/opencv-2.4.9) 2. cmake工程编译安装 mkdir build cd bui ...

  8. Git 常用命令大全-转载

    一. Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r ...

  9. 10年阿里自动化测试架构师帮您收集的:git常用命令大全以及git原理图【泣血推荐,建议收藏】

    一.Git分布式版本控制简介 ​ Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.本来想着只把最有用.最常用的 Git 命令记下来, ...

随机推荐

  1. LODOP打印控件进行批量打印

    Lodop打印控件批量打印的方式:1.批量打印每页内容相同的:(1)批量打印相同内容的很多纸张,可以设置打印份数,把该内容打印出多份.2.批量打印每页不同内容的:(1)通过在一个任务中分页,循环添加页 ...

  2. 【python练习题】程序7

    #题目:将一个列表的数据复制到另一个列表中. l = [1,2,3,4,5,6,7,8] m = [] m = l[:] print (m)

  3. KKT条件

    kkt条件背下来容易.理解上还有问题 主要是lambda≥0和lambda*f(x)=0这两个条件懵逼. 下面说明一下为什么 参考:https://blog.csdn.net/newthinker_w ...

  4. 灰度图Matlab

    [转载]matlab中pcolor绘图“少画一行”的问题 本文是关于matlab pcolor函数(slice,surf函数的情况与这个类似)绘图的问题的一些解决方案,在此记录备用 经 常处理三维(或 ...

  5. Bash 5.0 发布及其新功能

    导读 邮件列表证实最近发布了 Bash-5.0.而且,令人兴奋的是它还有新的功能和变量.如果你一直在使用 Bash 4.4.XX,那么你一定会喜欢 Bash 的第五个主要版本. 第五个版本侧重于新的 ...

  6. a标签实现锚点功能

    a标签实现锚点功能 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  7. 使用poi将Excel文件转换为data数据

    pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:// ...

  8. Python中csv模块解析

    导入模块 import csv 2.读取csv文件 file1 = open('test1.csv', 'rb') reader = csv.reader(file1) rows = [row for ...

  9. 洛谷P1083借教室题解

    题目 这个难度感觉并没有那么高,因为这个题暴力也好打,但是比较难想出正解,因为如果你不看标签是很难想到这个题竟然是二分,当然前缀和应该很好想,毕竟让你求的是在某段时间内借教室的和是否满足. 这样我们可 ...

  10. [LightOJ1038] Race to 1 Again

    传送门:>出错啦< 题意:给你一个整数n,每一次可以随机选择一个n的因子x(包括1和它自己),让n除以x——不停重复此过程,直到n==1. 问n被除到1的期望次数. 解题思路: 今天刚学的 ...