Git难点

Premise:

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.

Git是一个免费且开源的分布式版本控制系统,能够高速且有效的使用在小型到大型项目中.

Git是一款易学(???)且在很小的空间内速度非常优秀。它超越了像Subversion, CVS, Perforce和ClearCase等管理配置工具,拥有者廉价的本地分支,便捷的存储区域(stash),多工作流.

便捷通道->官方免费在线书籍


Purpose:

本文目的旨在收藏高频,或易出错的command lines.


Warnings:

  1. #####不要通过rebase对任何已经提交到公共仓库中的commit进行修改,自己一个人玩的分支除外.

Suggestions:

  1. 合并的时候使用git rebase 代替 git merge, 使分支更清晰整洁
  2. 需要其他分支的代码使用git cherry-pick [commitid]
  3. 灵活使用git stash

Summary:

  • 更新远程分支列表
git remote update origin --prune
  • 查看分支合并图
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"
  • 创建远程分支
git branch [name]
git push origin [name]:[name]
  • 删除远程分支
git push origin:[name]
或者
git push origin --delete [name]
  • 删除本地分支
git branch -D [name]
  • 提交文件目录下所有文件
git add -A
git commit -a -m "log"
git push
  • 撤销当前分支的所有修改(未add)
git checkout .  
  • 撤销单个文件修改(未add)
git checkout -- [filename]  
  • 更新本地分支, 可以避免产生额外的merge log
git pull --rebase    
  • 切换分支
git checkout [branch name]   
  • 将版本库从当前回退到其他版本
git reset --hard [version]    
  • 查看5条提交的历史纪录
git log -5 
  • 清理未add文件
git clean -df
  • 将修改的文件提交到其他分支
git status
git stash
git checkout [other branch]
git stash apply
git commit -a -m "提交内容描述"
git status
git stash drop
  • 直接拉取最新版本,忽略本地修改
git fetch --all 
git reset --hard origin/dev 
git pull
  • 回退单个文件(已提交)
git log [filename]
git reset [version] [filename]
git add [filename]
git commit -m "回退" [filename]
git push
  • 提交时,避免产生合并日志
git add [filename]
git commit -m "内容" [filename]
//这时候提示需要git pull
git stash //暂存本地修改
git pull --rebase //避免产生merge日志
git push
git stash apply
  • 产生冲突时,直接选用某一方的全部修改
git checkout --ours      //使用本地修改
git checkout --theirs     //使用远程方修改

  • 合并多次commit(未push) 注意:只能在单独开发的分支上且还没有push到远程分支的时候使用rebase操作,否则存在风险
git log -5
git rebase -i HEAD~4 --对最近的4个commit进行rebase操作

在弹出的编辑框中,使用以下命令:squash 将注释合并到上一条commit注释中, fixup 放弃当前commit注释, reword 修改注释
编辑后保存退出,git 会自动压缩提交历史,如果有冲突,记得解决冲突后,使用 git rebase --continue 重新回到当前的 git 压缩过程;

git push

  • 暂存当前修改,使用场景:在同一个分支做两个需求,并且需要来回切换的时候

执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别


git stash save "save message"

查看stash了哪些存储


git stash list 

显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}


git stash show 

显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p


git stash show -p 

应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}


git stash apply 

命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}


git stash pop 

丢弃stash@{$num}存储,从列表中删除这个存储


git stash drop stash@{$num} 

删除所有缓存的stash


git stash clear


Quote:

git stash

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值