开发过程中常用git
操作很碰到的问题进行总结。
git简介
git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是目前最流行的版本管理系统,学会git几乎成了开发者的必备技能。git是 Linus Torvalds
为了帮助管理 Linux
内核开发而开发的一个开放源码的版本控制软件。
git常用命令
对于这方面的介绍网上都有很全很详细。我就不班门弄斧了。介绍一个比较有用的命令 git help 命令例如:pull`。这么多的命令如果都要全部记住,怎么可能。还是学会查手册来的靠谱。
以下几篇文章都对git常用的命令做了详细说明:
git超级实用命令
git help branch // 查看详细的参数
git config -l 查看配置信息
git clone git@github.com:huixisheng/huixisheng.github.com.git
git commit -C head -a --amend //不会产生新的提交历史记录,复用HEAD留言,增补提交,而不增加提交记录
git branch -d feature_x // 删除feature_x分支
git checkout -b master2 // 切换并新建master2分支
git stash
本地修改暂时存储起来,用于改到一半暂时不想commit
和pull
有冲突。更多参考解决Git stash冲突问题
使用Sublime Text 可以安装 sublime-text-git,超级赞
如何创建 ssh key。配置好后 ‘ssh -T git@github.com‘ 测试配置是否成功。多个ssh key怎要么办?vi ~/.ssh/config
。配置以下信息
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_rsa
User git
Host coding.net
HostName coding.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/codingnet_rsa
User git
安装zsh。就可以使用以下缩写命令,通过 alias
查看命令别名。
// 添加自定义的命令
vi ~/.zshrc
source ~/.zshrc
ggpull
ggpush
git常见问题解决方案
显示提交log tree
git log --pretty=format:"%h %s" --graph
使用git pull文件时和本地文件冲突怎么办
git stash // 本地修改暂时存储起来
git pull
git stash pop
git 恢复单个文件的历史版本
首先查看该文件的历史版本信息:git log Default@2x.png
记录下需要恢复的commit版本号:如 9aa51d89799716aa68cff3f30c26f8815408e926
恢复该文件:git reset 9aa51d89799716aa68cff3f30c26f8815408e926 Default@2x.png
还需要执行git checkout xxxxx(文件名)
提交git:git commit -m “revert old file”
直接用 git-checkout 即可。理解起来稍微有点奇怪就是了。
$ git checkout ${commit} /path/to/file
如何更新自己Fork的代码
iModuleFork了开源代码。clone
到本地了,如何保证代码同最初的源码保持一致呢?
git clone git@github.com:iModule/zepto.git
cd zepto
git remote add zepto git@github.com:madrobby/zepto.git
git remote -v 查看是否多出了zepto分支
git fetch zepto git pull zepto master
git merge zepto/master
git push origin master
提交github不用输入用户名和密码
在用git提交时代码至github上时每次都要输入用户名和密码,当提交操作较为频繁时非常不方便,可以按下文中的介绍,设置成提交时不用输入用户名和密码:
1、在当前库下,已经运行过 git remote add origin https://github.com/***/***.git 命令,则先运行如下命令:
git remote rm origin
若以前没有运行过 git remote add origin https://github.com/***/***.git命令,直接跳到2步骤;
2、运行如下命令:
git remote add origin git@github.com:username/test.git
无法删除远程分支
error: unable to delete ‘test-branch’: remote ref does not exist
error: failed to push some refs to 'git@github.com:huixisheng/huixisheng.github.com.git’
git push origin :test-branch
git remote update --prune
超级丰富的git教程列表
- 廖雪峰-Git教程
- Git速成班: git rebase
- Git 命令整理
- git - 简明指南
- 在线Git命令行学习
- GotGitHub
- git-scm
- 学习,使用 git 过程中做的思维导图
- Git Community Book 中文版
在线git代码托管平台
git rebase
备忘清单
修改远程参考地址
方法1:
git remote set-url origin 新地址
方法2:
git remote rm origin
git remote add origin [url]
添加submole
git submodule add git@github.com:fex-team/umeditor.git lib/umeditor
git remote -v
git submodule init
git submodule update
// 会生成
.gitmodule
// 更新每个submodule
git submodule foreach git pull
删除submodule
git rm —cached lib/umeditor
rm -rf lib/umeditor
vi .git/config 删除submodule 配置
rm .gitmodules // 如果是多个可以选择删除
添加subtree
//添加subtree
git remote add umeditor git@github.com:fex-team/umeditor.git lib/umeditor
git subtree add —prefix=app/umeditor umeditor dev
git pull origin master
- Git Submodule使用完整教程
- git submoudle vs git subtree
- Git submodule 还是 Git Subtree
- subtree split
- 用 Git Subtree 在多个 Git 项目间双向同步子项目,附简明使用手册
github提示 You have no permission to access this repo
每次出现都是很sb,添加ssh-add ~/.ssh/github
解决方法看多 SSH Key 管理技巧与 Git 多账户登录问题
git客户端
git如何强制使用远程分支
1 | git fetch --all |
或者1
2git fetch origin
git reset --hard origin/master
git在提交之前撤销add操作
1 | git rm -r --cached . |
参考
最后欢迎补充
Todo
git fetch 没有效果研究