分支介绍
master :这个分支的代码是发布到生产的代码
develop :这个分支的代码是预发布到生产的代码
release :这个分支的代码是新版本发布到生产的代码
feature :这个分支的代码是新需求开发的代码
hotfix :这个分支的代码是紧急修复生产 bug 的代码
分支切换
查看本地分支
>git branch
* master
查看所有远程分支
>git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/coraline
remotes/origin/developer
remotes/origin/feature/
remotes/origin/master
切换分支
>git checkout -b dev origin/developer
Switched to a new branch 'dev'
Branch 'dev' set up to track remote branch 'developer' from 'origin'.
>git branch
* dev
master
查看本地分支和远程分支的关联
>git branch -vv
* dev ****** [origin/developer] code
master ****** [origin/master] code
分支合并
在dev分支怎加一个项目说明,这里加入一个文件代替。
[root@VM_0_15_centos gittest]# git branch
dev
* dev2
master
[root@VM_0_15_centos gittest]# git checkout dev
Switched to branch 'dev'
[root@VM_0_15_centos gittest]# ls
dev.txt info.txt project README.md
[root@VM_0_15_centos gittest]# echo "this is a information for project" > infors.txt
[root@VM_0_15_centos gittest]# ls
dev.txt infors.txt info.txt project README.md
此时master分支还是能看到infos.txt 这个文件
[root@VM_0_15_centos gittest]# git checkout master
Switched to branch 'master'
[root@VM_0_15_centos gittest]# ls
infors.txt info.txt project README.md
[root@VM_0_15_centos gittest]#
切换到dev分支对代码进行本地提交,此时master分支的info.txt就只属于dev分支
[root@VM_0_15_centos gittest]# git add info.txt
[root@VM_0_15_centos gittest]# git commit -m "这是dev提交的一个项目添加说明"
[dev 513bd5d] 这是dev提交的一个项目添加说明
1 file changed, 1 insertion(+)
create mode 100644 infors.txt
[root@VM_0_15_centos gittest]# ls
dev.txt infors.txt info.txt project README.md
[root@VM_0_15_centos gittest]# git checkout master
Switched to branch 'master'
[root@VM_0_15_centos gittest]# ls
info.txt project README.md
切换至 master 对dev分支进行合并
[root@VM_0_15_centos gittest]# git merge dev
Updating 35ad065..513bd5d
Fast-forward
dev.txt | 0
infors.txt | 1 +
2 files changed, 1 insertion(+)
create mode 100644 dev.txt
create mode 100644 infors.txt
[root@VM_0_15_centos gittest]# ls
dev.txt infors.txt info.txt project README.md
删除dev分支
[root@VM_0_15_centos gittest]# git branch -D dev
Deleted branch dev (was 513bd5d).
[root@VM_0_15_centos gittest]# git branch
dev2
* master
最后上传我们的代码至远程仓库
git push origin 本地分支名
[root@VM_0_15_centos gittest]# git push origin master
Username for 'https://github.com': *********
Password for 'https://******@github.com':
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 352 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/ake698/gittest.git
35ad065..513bd5d master -> master
本地分支:远程分支 (如果本地分支为空的话则代表删除远程分支)
git push origin dev:CT-83
更新本地仓库
1. git fetch:相当于是从远程获取最新版本到本地,但不会自动 merge
git fetch origin master:tmp
git diff tmp
git merge tmp
2.git pull:相当于是从远程获取最新版本并 merge 到本地
git pull origin master
上述命令其实相当于 git fetch + git merge,
3.git checkout -b 本地分支:远程分支
git checkout -b dev origin/master //拉去master分支为本地 dev分支
4.当git branch -a 无法查看最新的分支时
有时候当同事刚提交自己的分支,但是自己使用 git branch -a 却无法查看到同事刚提交的分支的时候,可以使用 git fetch origin 来刷新本地缓存
git fetch origin
提交管理
修改最近一次的提交,将本次修改的内容追加到最近一次提交中,然后总体就不会多出一次commit记录。
git add.
git commit --amend
合并本地提交记录
通过 git rebase
来合并本地提交记录,这里记录一下本人最喜欢的方式。
- 首先要通过
git log
获取提交记录 - 然后通过
git rebase -i id
,值合并特定id之后的所有提交,并不包含。 - 会出现如下页面,将需要合并的提交从pick 改为 s 保存退出即可,过程中可通过
git rebase --abort
放弃。
pick id1
pick id2
pick id3