一.分支操作
1.分支创建与切换
普通创建,以工作分支创建一个新分支
git branch <branchname>
创建与切换,以本地或者远程分支创建一个新的本地分支,然后切换到这个分支
git checkout -b branchname [local_branchname |remote_branchname]
2.分支删除
普通删除
git branch -d <branch_name>
强制删除,只是改变了指向分支的head
git branch -D <branch_name>
恢复被删除的分支,hash_val(删除分支的散列值)
git branch <branchname> <hash_val>
3.查看分支与远程分支追踪状态
git branch -vv
git remote show origin
4.本地分支创建远程分支
git push origin <local_branchname>:<remote_branchname>
5.远程分支删除
git push origin :remote_branchname
6.远程分支的删除的同步
git remote prune origin
7.git在本地新建分支后,可以选择做远程分支关联。关联后,在本地分支下进行git pull 和 git push操作时 ,不需要在命令行指定远程的分支
git branch --set-upstream-to origin/remote_branchname local_branchname
8.提交记录查看
按补丁显示每个更新间的差异
git log -p
查看commitid、描述、文件修改详情
git show commitid
只查看commitid和描述
git log --pretty=oneline
查看分支的提交历史
git log branchname
9.查看所有分支的所有操作记录(包括commit、reset等操作)
git reflog
10.本地仓库的版本回退
清除commitid之后的所有提交记录,可以向前回退;
回退后也可以撤销,通过git reflog指令查看上次回退的commiid_before之后的某个commiid_after,然后再次执行git reset commiid_after指令,回退到该版本。
git reset commitid
提交反转,commitid之后的提交记录不会删除
git revert commitid
11.从本地仓库HEAD中检出文件,将工作区文件的更改、移除恢复成未修改状态
git checkout .
12.查看分支指针
cat .git/HEAD
二.文件操作
1.文件删除
a.删除分支上的文件
git rm filename
git commit -m 'delete somefile'
git push
b.只删除暂存区、本地仓库及远程分支上的文件,保留工作区的文件并使其成为不被版本追踪的文件
git rm --cached filename
git commit -m 'delete remotefile'
git push
三.git开发流程
1.创建dev分支
git push origin dev:dev
2.在feature分支开发
a.创建远程分支dev的子分支function_first,并切换到该分支
git checkout -b feature/function_first origin/dev
b.创建远程分支function_first
git push origin feature/function_first:origin/feature/function_first
c.在本地feature分支开发
3.develop分支合并feature分支
a.功能没有完成,可以直接在feature分支推送
git push # 提交到feature远程分支
b.功能开发完成后,合并分支
在function_first分支提交
git add .
git commit
切换到develop分支;
拉取其他人的提交代码,确保合并前,工作区的代码是最新的
git checkout develop
git pull
分支合并,出现冲突时,解决冲突
git merge function_first
提交到远程分支,用来测试
git push
切换到function_first分支
git checkout function_first
推送到feature远程分支
git push
注意:
1.在分支切换之前最好先commit全部的改变;
2.功能开发完成—-测试人员测试通过—-function_first分支代码合并后,function_first分支可以删除;
3.function_first分支开发未完成时,测试人员需要测试,也可以通过分支合并操作,将代码合并到dev分支;
4.一般地,父分支可以合并子分支,而子分支不可以合并父分支。如,dev合并feature分支。