Git总结

参考

https://www.liaoxuefeng.com/wiki/896043488029600

概念

  1. 工作区(Working Dictionary)
    –除了.git文件夹之外的文件和文件夹
  2. 版本库(Repository)
    – .git文件夹
  3. 暂存区(Stage)
    – 位于版本库中,存放文件更变,如git add等命令将文件更变存入暂存区,git commit后清空暂存区
  4. 解决merge冲突
    – 当在master分支合并dev分支时,如果有冲突的话, Git会用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,这时需要人工修改,保存后执行add,commit提交.然后可以用git log --graph --pretty=oneline --abbrev-commit查看分支的合并情况
  5. 分支策略
    – 在实际开发中,我们应该按照几个基本原则进行分支管理:首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
  6. bug分支
    适用场景:在dev分支工作时,未完成工作不能commit,但此时需要修复master分支的一个bug。
    解决方案
    (1) 在dev分支保存现场git stash
    (2)新建fixbug分支,解决bug后merge到master分支
    (3)此时dev分支还是有bug的,需要将fixbug的提交复制到dev分支git cherry-pick fixbug_commit_id
    (4)恢复dev现场git stash pop
    (5)dev完成后合并到master分支
    Note:(4)(5)中的合并可能需要手动解决冲突

命令

命令功能
git init新建git仓库
git add file添加一个文件到暂存区
git commit -m ‘msg’提交
git status当前git状态
git diff file查看file与HEAD更变的内容
git diff commit_id/HEAD~n --file查看file与某个提交更变的内容
git reset --hard HEAD^回退到上一个版本
git reset --hard HEAD^^回退到上两个版本
git reset --hard HEAD~n回退到上n个版本
git reset --hard commit_id回退到指定commit_id的版本
git log查看提交历史,以便确定要回退到历史的哪个版本
git reflog查看命令历史,以便确定要回到未来的哪个版本
git checkout – file放弃工作区的修改(包括删除等),还原为HEAD版本
git reset HEAD file放弃暂存区的修改,还原为HEAD版本,工作区还存在文件更变
git reset --hard HEAD放弃工作区的修改和暂存区的修改
git rm file从版本库中删除文件(如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容)

命令功能
git remote add origin git@github.com:用户名/项目名.git添加远程仓库
git push -u origin master第一次推送master分支所有内容
git push origin master推送修改到远程,如果远程有其他人的提交,需要先git pull,解决冲突后再提交
git clone git@github.com:用户名/项目名.git克隆远程项目到本地
git pull拉取最新的
git branch --set-upstream-to=origin/master master远程master分支和本地master分支建立关联
git pull --allow-unrelated-histories本地和远程单独建立的时候,从远程pull需要这个命令

命令功能
git branch查看分支,带*号为当前分支
git branch name创建分支
git checkout name或git switch name切换分支
git checkout -b name或git switch -c name创建+切换分支
git merge name合并某分支到当前分支
git branch -d name删除分支
git log --graph --pretty=oneline --abbrev-commit查看分支合并情况
git merge --no-ff -m “merge with no-ff” dev强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息
git stash储存工作现场
git stash list查看储存的工作现场
git stash pop/apply/drop恢复工作现场并删除stash/恢复工作现场/删除stash
git stash apply stash@{0}恢复指定的stash
git cherry-pick commit_id复制一个特定的提交到当前分支
git rebase可以把本地未push的分叉提交历史整理成直线,目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比
git tag tagname为HEAD新建标签
git tag tagname commit_id为某次提交新建标签
git tag -a tagname -m “msg” commit_id为某次提交新建标签并指定说明文字
git show tagname查看标签信息
git tag查看所有标签
git push origin tagname推送本地标签到远程
git push origin --tags推送全部未推送过的本地标签
git tag -d tagname删除一个本地标签
git push origin:refs/tags/ tagname删除一个远程标签

技巧

  1. 创建alias
  2. 编辑~/.gitconfig
  3. 添加
[alias]
    co = checkout
    ci = commit
    br = branch
    st = status
    unstage = reset HEAD
    last = log -1
    lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值