美文网首页
使用Git管理项目 使用总结

使用Git管理项目 使用总结

作者: 疯狂的冰块 | 来源:发表于2017-07-11 13:29 被阅读181次

此文作为在工作工使用git的一篇笔记防止遗忘。长期更新,如果有错误,请指正,不胜感激。

工欲善其事必先利其器,我同时使用的git命令行和GUI的方式使用git,原因是:命令行在多分支查看与多文件提交时,比对效率不如gui工具高;但是GUI的功能上不如命令行强大,某些操作速度上不如命令行快。
我处理命令行git外,用的GUI工具主要有两个,一个是jetbrains家族软件的idea自带的git插件,一个是GitKraken(界面比较华丽,专业版收费,个人使用免费版本就行)

系列文章:
1、《git入门教程》http://www.jianshu.com/p/d22d1a517f93

安装好git后的的第一步(如果不设置后面不允许提交):

git config --global user.email "bsqql123@163.com"
git config --global user.name "ice blue"

1、基础命令

由于是基础命令,就不进行介绍了,很多文章都介绍的比较详细。

git config --list 查看当前的配置
git add .
git commit -m "init" # init 为你的提交信息,可以任意填写,但是团队开发时建议制定规范,并按规范填写。

2 、快捷命令

对于已经加入缓存区中的文件,可以使用git commit -am ""# 省去了git add .这一步操作。
从缓存区移除 ,文件。
git rm --cache <file>

展示所有被追踪的文件
git ls-files -t

git push origin

上面命令表示,将当前分支推送到origin主机的对应分支。如果当前分支只有一个追踪分支,那么主机名都可以省略。如下:

git push

git branch --set-upstream my_branch origin/my_branch 这条命名设置远程追踪。

常用的alias:

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all"
git config --global alias.co checkout
git config --global alias.st status

git rebase -i

git checkout -b name-of-new-branch 169d2dc

查看全局的配置(包括alias):
git config --global --list

3、分支管理

分支管理是git比较有特色的地方。

下面介绍一些常用的git 分支操作命令。

1)创建分支

git branch mystudygit1.0

创建分支并且切换到分支
git branch -b mystudygit1.0
创建指定版本的分支,并且切换到此分支(-b表示切换的意思)
git checkout -b name-of-new-branch 169d2dc

git checkout -- file 表示将已经加入 缓存区的文件的改动删除,用的比较少,具体参考如下链接:
http://www.cnblogs.com/Calvino/p/5930656.html

  1. 切换分支
    git checkout mystudygit1.0

  2. 删除分支
    git branch -d mystudygit1.0 //如果该分支没有合并到主分支会报错
    或者
    git branch -D mystudygit1.0 //强制删除

删除本地远程分支
git branch -r -d origin/branch-name
删除服务器远程分支

1、
git push origin :<branch-name>

 2 、
git push origin --delete <branchName>

3、git 推送本地分支test到远程feature_add_querymodel

git push origin test:feature_add_querymodel

4、重命名分支
git branch -m devel develop

git cherry <sha1> 命令

如果发生了冲突,需要手工解决冲突,
然后使用 git cherry-pick --continue 告知 git 已经解决完冲突或者
使用 git cherry-pick --abort 取消,並且回到 cherry-pick 前的状态

要选择多个提交,可以给git cherry-pick命令传递-n选项,比如:

git cherry-pick –n 321d76f
git cherry-pick –n c87fc86

此时所有的321d76f 版本会应用到当前的暂存区和工作目录但是不会提交,head指针不会发生移动。改变
这样在拣选了这个改动之后,进行暂存而不立即提交,接着可以进行下一个拣选操作,一旦拣选完需要的各个提交,就可以使用git commit命令 一并提交。

idea 自带git插件rebase,rebase操作:

image.png

点击右下角的git:xxx 即可出来弹窗。

image.png

如果出现冲突的换会出现类似弹窗。

image.png

双击文件名称即可进行手工解决冲突,idea非常人性化的对比文件

image.png

点击图中箭头即可accept代码。
中间为合并的版本,最右边为远程版本,图中也显示了出来。具体可以操作一下试试。

image.png

apply all non-confliction changes 这个功能也是十分的好用。

当然可以手工操作,不过觉得界面操作更为快捷,解决冲突更易。

参考文档:https://git-scm.com/docs/git-cherry-pick

4、git规范

rebase准则:

“No one shall rebase a shared branch” — Everyone about rebase
mingl
翻译一下就是:
不要在公共分支上rebase,因为会使分支变得混乱。

具体参见:
https://github.com/wxyyxc1992/Coder-Essentials/blob/master/VersionControl/Git/Branch/Rebase/git-rebase-and-the-gloden-rule-explained.md

5、开发流程

在工作中,用git管理项目需要走一下流程。

1、Release分支: 稳定分支,由master leader 负责merge。用于生产环境的部署。

2、Master分支: 开发分支。定期 merge 到 release 分支。

3、Pre分支:预生产分支,测试通过后,可以申请merge到master分支。Pre 分支用于 Preview 环境的部署。

4、Feature 分支:开发分支。开发完后 cherry-pick 到 staging 分支进行测试,测试通过后 cherry-pick 到 Pre 分支进行 Preview 环境的测试。feature 分支名以 feature_ 开头,后面跟简短的英文说明。比如,某次修改为了添加测试,可将分支名命名为 feature_add_unit_tests 。

git config --global user.email "bsqql123@163.com"
git config --global user.name "ice blue"

git reflog 可以查看历史操作命令,非常好用。

image.png

git reset --soft sha-id 即可返回到指定操作前。

pull request 的操作步骤,首先完成提交后,一定要记得rebase 公共分支代码,
比如我在
dev分支checkout的feature分支,commit后,pull request前记得rebase dev分支的代码。

当 pull request后,别人审核你的代码不通过,这时你要重新修改,可以使用

git add <file> #一定要先把文件放到暂存区
然后使用
git commit --amend
这个命令,只能修改最后一次提交,如果想修改前几次的提交,请使用reset。

操作步骤

git fetch
git rebase -i dev

或者使用更为简洁的命令:

git pull --rebase devx

常见问题:

! [rejected] dev -> dev (non-fast-forward)
一般出现这个问题是由于本地远程分支和服务远程分支不同步造成的,
有两种解决办法:
1、强制推送到远程
2、先fetch 后merger,或者直接git pull

相关文章

  • 使用Git管理项目 使用总结

    此文作为在工作工使用git的一篇笔记防止遗忘。长期更新,如果有错误,请指正,不胜感激。 工欲善其事必先利其器,我同...

  • AD 使用 Git 的注意事项

    使用 Git 管理项目 Altium Designer 支持使用 Git/SVN 用以版本控制。如果使用 Git,...

  • pycharm 同时使用多种版本管理工具(git+svn)

    一直依赖项目版本管理都使用git,目前项目使用svn管理,这里出现一个‘伪’需求:使用pycharm同时管理git...

  • git 的使用

    有关git的使用总结一下,留着使用 git、svn区别 使用过程 svn基本使用过程 git基本使用过程 管理模式...

  • Android项目中Git的使用

    Android项目中Git的使用 git项目 git分支管理 git远程分支 git状态图 git项目 一、自己新...

  • git使用

    Git安装和使用 Git使用总结 如何将本地项目上传到Github Windows中git bash完全可以替代原...

  • git 的使用

    <一>git 安装和使用。 通过git 管理项目代码。 https://www.git-scm.com/. git...

  • Git 半小时入门 <第二章>

    1.新项目如何使用 git ? 2.已有项目如何使用 git 管理代码? 3. 如何回退版本? 4. 如何撤销修改...

  • 使用git管理项目

    关于版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 采用版本控制系统(V...

  • 如何用终端将本地项目和git项目关联

    进入本地项目的文件夹中,使用git init 命令将本地项目变为可以用git管理的项目 把项目添加到版本库中,使用...

网友评论

      本文标题:使用Git管理项目 使用总结

      本文链接:https://www.haomeiwen.com/subject/bidzcxtx.html