前言
git是在公司工作中必不可少的开发工具之一,也是围绕着GitHub进行代码更新等操作。所以学会git和github的相关操作是开发必不可少的步骤。而对于新人来说,或许平日里对与GitHub的使用,只是进行了代码的存储和搜索,但是要说维护却不一定会有。
所以,新人的进公司的第一课,就是要学会怎么样去使用git和GitHub。
接下来,将分成三个模块进行讲解工作中如何去使用GitHub和git的命令操作等。
第一块:Github和工作的场景概览
步骤说明:
注意:upstream 为约定公司代码上游的命名,而origin为自己forked的公司代码库名。两者都可以随意定义,但是建议按照约定的说法进行设定。
-
Forked:需要将公司的远程代码upstream库复制一份到自己的GitHub当中,方便以后的pull requst 从自己库到公司代码库
-
Git clone upstream’s repo to local :克隆公司代码文件到本地一份
-
Checkout a new branch for your work from ’test’(branch):确定本地要使用的主要分支,一般克隆下来的公司代码库,默认当前分支是master,如果有特别的需要,比如某个分支是特别的存在,或者这个分支才是主要要维护的,必须先checkout到这个分支上,例如,本例中使用’test’作为需要的分支名。然后从’test’ checkout 出一个新的分支,比如是’test_a'
-
Push the change of new branch to your personal repo:将修改的分支是要push到自己的origin库中,不允许直接提交到upstream
-
Create a pull request(new branch) to upstream target branch:此时提交上的分支名为’test_a’(origin),要提出pull request合进去到upstream中的’test’分支中!对应哪个分支修改的内容必须提到哪个分支中去!
-
Rebase last code:如果pull requst被code reviewer批阅并且添加修改意见,而自己本地也进行了修改,但是还请注意,必须rebase下最新的代码(也即从upstream的test分支进行rebase),以防止自己提交过程当中,其他人的代码进库,而可能造成冲突的情况(会需要再次修改,这样会很糟糕)
-
Rebase last code:对于本地上,强烈建议和推荐,就是要维护一个永远干净的主要分支代码,但凡需要进行修改代码的相关操作,请从该干净且实时的local branch ‘test’ 分支checkout出新的分支,再进行后续的操作。
第二块:常见git操作场景
-
Pull Request需要修改的场景 (对应第一块中的步骤即为: 6 -> 4 ,没有其他步骤!)
-
删除分支的操作
git push ${repo_url} --delete ${branch_name} * ${repo_url}表示远程的库名 * ${branch_name}表示是远程库名下的分支
-
git rebase最新代码的步骤 (对应第一块中的步骤即为:6 , 7 两种的rebase)
git pull -r remote_repo_name branch_name samples : git pull -r upstream master
第三块:常用git命令
git branch -v # 效果:看本地有多少分支
git log —all # 效果:查看所有分支记录
git checkout -b newBranchName oldBranchName # 效果:基于oldBranchName创建新的分支newBranchName,并且切换过去
git diff commitIdOne commitIdTwo # 效果:比较两个commitId的区别
git diff $branchOne $branchTwo -- <filename> # 效果:查看不同提交的指定文件的差异,此时比较的是两个不同分支当中的某一个文件的具体差异!
git commit --amend --no-edit # 效果:对应在修改pr过程当中,或者多次修改,但是只保留一次commit message,不再重写commit message的情况