内部git常用总结

Posted lixuwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内部git常用总结相关的知识,希望对你有一定的参考价值。

上库git常用命令总结  

摘要:介绍一下高效率上库的方法,省去合代码的流程。 推荐在linux服务器上完成代码的clone,切分支,编写,编译,提交,push的全部流程。 1、clone:git clone [email protected]:TACS/td_utfp.git test (test为文件夹名) 2、设置库: git remote -v 查看当前库 添加远程本地库:git remote add origin [email protected]:w00424187/utfp.git 添加远程主干库:git remote add upstream [email protected]: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 [email protected]:TACS/td_utfp.git test

(test为文件夹名)

 

2、设置库:

git remote -v 查看当前库

添加远程本地库:git remote add origin [email protected]:w00424187/utfp.git

 

添加远程主干库:git remote add upstream [email protected]: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

为了避免冲突,所以最好采用先fetch,再切分支方式,不要直接mege

 

4、基于库上最新代码develop分支切分支

 

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 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即可

 

 

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

 

有写的不对的地方,或者更好的提高效率的办法,请大家指正,多交流,谢谢

以上是关于内部git常用总结的主要内容,如果未能解决你的问题,请参考以下文章

集合set内部常用功能和使用方法-课堂笔记及课后总结

1w+ 字总结 Java 常用类,整理太全了,建议收藏..

集合中常用算法总结

1w+ 字总结 Java 常用类,整理太全了,建议收藏..

1w+ 字总结 Java 常用类,整理太全了,建议收藏..

body内部标签总结