关于GIT工作中使用汇总

常用指令

git init //初始化本地git环境
git clone XXX//克隆一份代码到本地仓库
git pull //把远程库的代码更新到工作台
git pull --rebase origin master //强制把远程库的代码跟新到当前分支上面
git fetch //把远程库的代码更新到本地库
git add . //把本地的修改加到stage中
git commit -m 'comments here' //把stage中的修改提交到本地库
git push //把本地库的修改提交到远程库中
git branch -r/-a //查看远程分支/全部分支
git checkout master/branch //切换到某个分支
git checkout -b test //新建test分支
git checkout -d test //删除test分支
git merge master //假设当前在test分支上面,把master分支上的修改同步到test分支上
git merge tool //调用merge工具
git stash //把未完成的修改缓存到栈容器中
git stash list //查看所有的缓存
git stash apply //恢复本地分支到缓存状态
git blame someFile //查看某个文件的每一行的修改记录()谁在什么时候修改的)
git status //查看当前分支有哪些修改
git log //查看当前分支上面的日志信息
git diff //查看当前没有add的内容
git diff --cache //查看已经add但是没有commit的内容
git diff HEAD //上面两个内容的合并
git reset --hard HEAD //撤销本地修改
echo $HOME //查看git config的HOME路径
export $HOME=/c/gitconfig //配置git config的HOME路径

常见情况之寻常工作流程

第一步:克隆项目
	克隆你的项目(通常只是在新项目接手的时候会使用)
		git clone https://github.com/defnngj/project-name
第二步:创建dev的分支
	创建dev分支(这步通常是管理员做的dev和beta之类的分支创建)
		git checkout -b dev
	创建自己的分支(从master上)
		git checkout -b feature/OSSPRM-852-BugFix  # 创建分支
		上面的一步等于下面的两步骤
			git branch feature/OSSPRM-852-BugFix  # 创建分支  feature/demo2
			git checkout feature/OSSPRM-852-BugFix  # 切换到分支  feature/demo2
	查看分支
		git branch -a  # 查看所有的分支
		git branch -r  # 查看远端的分支
		git branch  # 查看本地都有哪些分支
	切换分支
		git pull (这边会更新分支信息)
		git checkout feature/OSSPRM-852-BugFix #切换分支
	切换分之后推荐pull一下代码,
	以防这条分支你之前切换过而且别人也在这条分支上push了新的代码
		(一个良好的习惯)
		git pull
	然后开始你的开发写你的代码
		开发中......
    开发过程中如果有新的文件创建级的使用
        git add .     保存新的添加和修改,但是不包括删除
	    git add -u    保存修改和删除,但是不包括新建文件。
	    git status    查看状态(随时可以查看)
	    暂存的使用
			git stash save "最后代码的暂存"(commit之前可以有这个save暂存的习惯)
			git stash list 所有的暂存
			git stash apply 暂存名称(通过list查看)
	    git commit -m “feat: 数据库查询优化”
	    git push  提交代码到自己的分支上
	 	git push -u origin master //把本地库的所有内容推送到远程库上

暂存的作用

	1.暂存的价值
		当你在提交代码前进行了暂存
		然后你的分支进行了任何的操作之后
		你想恢复到提交的时候的那份代码
		就可以使用
			git stash list 所有的暂存
			git stash apply 暂存名称(通过list查看)
		这样子你的代码就可以恢复到你想要的样子
	2.暂存的特性
		a.当你	 git stash save "最后代码的暂存" 之后,
		你的本地代码会撤回到你没有做任何修改的线上你这条分支的样子
		b.这时候要提交你的修改可以把暂存取出
			git stash list 所有的暂存
			git stash apply 暂存名称(通过list查看)
		c.然后进行提交
	3.清除暂存
		git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
		git stash clear :删除所有缓存的stash
	4.暂存的优势
		一个良好的暂存习惯一定会给你带来你意想不到的惊喜

冲突解决(merge)

1.当你的分支与测试分支有冲突的时候
	a.切换到dev分支
		git checkout dev
	b.更新dev分支的代码
		git pull
	c.将自己的分支合并进来
		git merge 自己的开发分支
	d.手动解决冲突
	e.commint和push dev的代码
2.当你的分支和上线分支有冲突的时候
	a.切换到自己的分支
		git checkout 你自己开发的分支
	b.将beta的分支合并进来
		git merge beta
	c.手动解决冲突
	d.commint和push 自己开发分支的代码

多人开发常见的坑

1.多个分支不同顺序更新到master,这时候你要提交的代码已经不是master上最新的,master上有和你同文件修改的代码,这时候就会出现冲突,而你要进行的就是解决冲突
2.在提交之前如果不做好暂存,代码覆盖会产生不可挽回的丢失
3.合并冲突的时候要找到相关代码的参与者进行沟通防止逻辑上的冲突
	关于代码是谁更新的可以使用gitk和IDE自带的相关工具等
4.merge完代码手动修改或者IDE的apply后一定要记得push
5.关于用户的话以及参与开发的人员注册的git用户要有统一的命名规范才是最正确的

git更新版本

git tag
git tag -a v0.3 -m "第三个版本"
git push origin v0.2

git回退

git log --pretty=oneline查看前置commit_id
git reset --hard e377f60e28c8b84158
强推到远程:
	$ git push origin HEAD --force

扩展

1.关于分支
	master
		稳定分支,打完tag后,用户生产环境运行
		打tag都需要基于这个分支上的commit id
		该分支只接受JIRA上的PR,禁止在该分支上直接commit
		bitbucket上应设置相关的分支保护策略(禁止重写历史,禁止deleted,禁止没有pull request的修改)
	beta
		基本稳定的分支,用于预发布环境运行,以检验代码是否会对现有的功能造成影响或是否有BUG
		该分支只接受JIRA上的PR,禁止在该分支上直接commit
		bitbucket上应设置相关的分支保护策略(禁止重写历史,禁止deleted,禁止没有pull request的修改)
		在当前状态下(运营支撑内部项目,基本没有预发布环境),该分支等价于master分支
	dev
		不稳定分支,主要用户测试环境的运行,用于测试以及前后端联调
		该分支只接受JIRA上的PR,禁止在该分支上直接commit
		bitbucket上应设置相关的分支保护策略(禁止重写历史,禁止deleted,禁止没有pull request的修改)
		在有冲突无法通过合并master分支解决的情况下,允许项目经理进行手工merge并提交
	feature-xxx
		功能或版本分支
		从master检出,开发完成后,合并到dev进行测试,然后合并到beta,master
2.关于IDE选择
	phpstorm
	sourcetree
3.git入门需要注意的是在最后一步push之前一切都可以挽回
发布了83 篇原创文章 · 获赞 18 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/HoeWang/article/details/99068570