上库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. CDH 6.0.1 集群搭建 「Process」

    这次搭建我使用的机器 os 是 Centos7.4 RH 系的下面以流的方式纪录搭建过程以及注意事项 Step1: 配置域名相关,因为只有三台机器组集群,所以直接使用了 hosts 的方法: 修改主机 ...

  2. 关于Select2下拉框组件

    文档如下: https://select2.org/configuration/options-api

  3. delphi中adoquery控件中某个字段Onvalidate事件的用法?

    procedure TForm2.ADOQuery1TestFieldValidate(Sender: TField);begin// Sender就是当前字段,可以在这里对Sender字段进行各种操 ...

  4. 开发中遇到的css兼容问题

    1. overflow: scroll(平台兼容) 在Mac中的Chrome浏览器中,内容不超过容器时不会出现滚动条: 在Wins中的Chorme浏览器中,内容不超过容器时也会出现滚动条. 解决方法: ...

  5. Javassist之使用字节码在运行时生成新的类 01

    介绍 Javassist是一个开源的分析.编辑和创建Java字节码的类库.是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的.它已加入了开放源代码JBoss 应用 ...

  6. Python——Flask框架——程序的基本结构

    一.安装 pip install flask 二.初始化 from flask import Flask app = Flash(__name__) 三.路由:处理URL和函数之间的关系的程序称为路由 ...

  7. Deploy .NET Core with Docker

    Creating a .NET Core project If you already have an existing .NET Core project you are more than wel ...

  8. 关闭VS2017脚本调试 已启用 Visual Studio 中的 Chrome 脚本调试

    转载:https://blog.csdn.net/lilinoscar/article/details/79114721 每当调试项目时,都是重新打开一个浏览器窗口,而且关闭调试后,也会关闭窗口,很麻 ...

  9. Voltage Keepsake CodeForces - 801C (贪心 || 二分)

    C. Voltage Keepsake time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  10. ans Single VIP LLB and SLB config

    ans Single VIP LLB and SLB config 配置命令: # 配置设备工作模式和开启的功能 > enable ans mode FR MBF Edge USNIP L3 P ...