回顾下GitHub新分支创建
2020-02-28 本文已影响0人
Coding测试
-
前言:用习惯了IntelliJ IDEA自带的git功能,最近疫情在家办公使用git命令行模式工作,命令长时间不用真的快废掉了,就简单记录下git的使用。
- 如何在 GitHub 的项目中创建一个分支呢? 其实很简单啦,直接点击 Branch,然后在弹出的文本框中添加自己的 Branch Name 然后点击蓝色的Create branch就可以了,这样一来,你这个项目就有2个分支了(master 和 reademe-edits)。
注:由上面的分支合并的流程图可以发现,1 个库可以有多个分支并行的进行开发,但是最后只有 1 个会被 merge 进来,因此当某一个分支被合并到进 master 分支后,其他的并行分支的提交都会被是作为冲突 conflict,解决这个冲突的唯一办法就是,每次做修改之前,记得更新版本库,使自己的分支与 master 分支保持一致*
创建新分支具体步骤如下:
上传一个独立的分支(比如代码是从工程中直接DOWNLOAD ZIP文件如Interface-automation-dev.zip,该文件与原MASTER分支是独立的)
GitHub默认为master分支,下面通过Git Bash命令框创建一个dev新分支。
- 首先拉取默认分支,然后git init (初始化在本地工程目录下),生成.git 文件夹
Administrator@ZGC-0709202624 MINGW32 /b/JAVA/test/Interface-automation (master)
$ git init
Reinitialized existing Git repository in B:/JAVA/test/Interface-automation/.git/
- 切换创建新分支
$ git checkout -b dev
Switched to a new branch 'dev'
Administrator@ZGC-0709202624 MINGW32 /b/JAVA/test/Interface-automation (dev)
- 与远程分支相关联
git remote add origin https://github.com/rootczy/Interface-automation.git
#('Interface-automation' 为工程名)
(此时会跳出来让你输入GitHub的账号密码,输入自己的账号密码即可)
- 执行结果(可以看到已经成功创建dev分支)
remote: https://github.com/rootczy/Interface-automation/pull/new/dev
remote:
To https://github.com/rootczy/Interface-automation.git
* [new branch] dev -> dev
- 此时查看GitHub项目已经有了新建的dev分会了
(此时创建的新分支是空白的,需要合并默认master分支,但是新建的分支和默认分支是两个不同的库,需要进行强制合并:--allow-unrelated-histories) - 强制合并失败提示(当前分支在dev):
Administrator@ZGC-0709202624 MINGW32 /b/JAVA/test/Interface-automation (dev)
$ git merge master --allow-unrelated-histories
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'Administrator@ZGC-0709202624.(none)')
(此时提示找不到提交者,因为本地没有配置全局的GitHub邮箱和用户名,按照提示执行自己的邮箱和用户名即可:git config --global user.email "you@example.com"| git config --global user.name "Your Name")
- 再次执行强制合并命令(已经成功合并)
$ git merge master --allow-unrelated-histories
Merge made by the 'recursive' strategy.
.idea/.name | 1 +
.idea/compiler.xml | 14 ++
.idea/encodings.xml | 6 +
.idea/misc.xml | 14 ++
$ ll
total 6
-rw-r--r-- 1 Administrator 197121 81 二月 28 11:43 Interface-AutoTest.iml
-rw-r--r-- 1 Administrator 197121 861 二月 28 11:43 pom.xml
-rw-r--r-- 1 Administrator 197121 81 二月 28 11:33 README.md
drwxr-xr-x 1 Administrator 197121 5294 二月 28 11:43 src/
$git push
-
附git 常用命令查找表
fetch 与 pull对比说明
1、git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
2、git pull 则是将远程主机的最新内容拉下来后直接合。
即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。