版本库操作
git init # 把当前的目录变成可以管理的git仓库,生成隐藏.git文件(但要commit一次以后才会创建master分支)
git clone <director of project> # 从远程主机克隆版本库到本地,-o指定远程主机名
git remote # 查看所有远程主机,一般是origin
git remote –v # 查看远程主机的网址
git remote show # 查看远程主机详细信息
git remote add <主机名> <网址> # 添加一个远程主机,如 git remote add origin url地址
git remove rm <主机名> # 删除远程主机
git remote rename <原主机名> <新主机名 # 重命名远程主机
分支操作
git branch # 查看本地分支,-r远程分支,-a所有分支,-vv分支最近一次提交记录
1. 分支创建、切换、删除
git branch <本地分支名> # 创建本地分支
git checkout <本地分支名> # 切换本地分支
git checkout –b <本地分支名> # 等于前面两个指令,创建并切换到新分支上
git branch --track <本地分支名> origin/<远程分支名> # 根据远程分支创建一个本地分支
git branch --set-upstream-to=origin/<远程分支名> # 设置本地分支和origin/<远程分支>的追踪关系
git branch –d dev 删除dev分支
git branch -D <本地分支名> # 强行删除本地分支
2.拉取远程仓库
git fetch # 取回所有分支更新,不影响本地开发代码,通常用来查看其他人进程
git fetch <远程主机名>(origin)<分支名> # 拉取特定分支更新,还需merge或rebase进行合并
git pull <远程主机名> <远程分支名>:<本地分支名> # 取回origin主机的远程分支,与本地分支合并,等于git fetch origin加git merge origin/<远程分支>
git pull # 本地分支与远程分支建立追踪关系后可用,拉取远程分支更新、合并本地分支
3. 分支合并
git merge <要合并的分支名> # 合并分支到当前分支
git merge –no-ff -m “注释” # 保存你之前的分支历史,能够查看 merge历史和branch 状态
git cherry-pick # 单独把其他分支上的 commit 合并到当前分支
git rebase <要衍合分支名> # 把当前分支的提交记录衍合到目标分支,生成干净的提交记录(把当前分支上的提交记录跟在目标分支的记录后面,而不像merge按时间),不会产生merge的commit,就好像是在目标分支上提交的一样
git rebase --continue # 当衍合冲突,解决冲突以后,先git add再执行该指令。不需要commit
git rebase --abort # 终止rebase的操作,回到rebase开始前的状态
git rebase -i HEAD~3 # 修改最近三次提交,可以撤销或者合并/拆分提交记录
4. 分支改名
git branch -m <现有的分支名> <改的分支名>
5.Git 清理无效的远程追踪分支
http://blog.csdn.net/u010544187/article/details/71404523
git remote prune origin
本地仓库文件操作
git status # 查看分支状态
git add XX # 把xx文件添加到暂存区去。
git commit –m “XX” # 提交文件到本地仓库 –m添加注释,--amend修改最近一次提交记录,并产生新的提交记录
git diff XX # 查看XX文件当前修改的内容
git checkout — XX # 把XX文件在工作区的修改全部撤销
git checkout . # 把本地分支上有所修改全部撤销
git rm XX # 删除文件,同时还会将这个删除操作记录下来
git mv <文件名> <改后文件名> # 文件重命名后跟踪,当于运行了下面三条命令: mv README.md README git rm README.md git add README
远程仓库分支同步
git push origin <本地分支名>:<远程分支名> # origin是远程主机名,如果远程分支不存在会自动创建分支,如果不填本地分支名会删除远程分支
git push origin --delete master # 等同于git push origin :master,删除远程分支
git push –u origin <本地分支名> # 把本地分支推送到远程主机,此后可以直接使用git push
git push --set-upstrean origin <远程分支名> # 推送远程分支并做关联,此后可以直接git push
git push origin master -f # -f 参数是强制提交,因为reset之后本地库落后于远程库一个版本,因此需要强制提交
git revert <哈希值> # 放弃指定提交的修改,生成一次新的提交
git revert <哈希值> -m <parent number> # 当撤销的commit是一次merge操作,其包含两个parent(合并的两个分支),-m 指定保留内容的parent,另一个分支内容被revert。parent number的顺序是从左到右,左1右2
git revert HEAD # 撤销前一次 commit,HEAD^是撤销前前一次 commit
查看记录与回退
git log # 查看提交记录,按 q退出,回车输出更早commit历史记录
git log <fileName> # 查看文件历史记录,按 q退出,回车输出更早commit历史记录
git reflog # 查看历史记录的版本号id
git show <哈希值> # 查看某次提交的修改记录
git reset -hard <哈希值> # 回退到commit版本
git reset –hard HEAD^ # 回退到上一个版本,git reset –hard HEAD~5往上5个版本
缓存操作
git stash # 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list # 查看所有被隐藏的文件列表orginal
git stash apply # 恢复被隐藏的文件,但是内容不删除
git stash apply stash@{0} # 恢复 git stash list中的第一个工作现场
git stash drop stash@{0} # 删除第一个工作现场
git stash pop # 恢复第一个工作现场,同时也删除记录
标签管理
git tag # 查看所有标签
git tag <tag名> # 打一个新标签,-a指定标签名,-m指定说明文字
git tag <tag名> <commit id> # 根据commitId创建tag
git show <tagname> # 查看标签信息
git tag -d <tag名> # 删除标签
git push origin <tagname> # 推送某个标签到远程
git push origin :refs/tags/v0.9 # 删除远程v0.9tag,删除远程tag前先删除本地tag
生成 SSH key
设置Git的user name和email
git config --global user.name "user name"
git config --global user.email "email"
生成SSH密钥
cd ~/.ssh # 查看是否已经有了ssh密钥
ssh-keygen -t rsa -C "emial" # 生成密钥
pub后缀文件保存了公钥,登录网站添加ssh
测试
ssh git@github.com
Git相关资源
廖雪峰-最浅显易懂的Git教程https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
使用原理视角看 Git https://blog.coding.net/blog/principle-of-Git
Git Community Book 中文版 http://gitbook.liuhui998.com/index.html
25个 Git 进阶技巧 https://linux.cn/article-5418-2.html
其他命令
mkdir XX # 创建一个空目录 XX指目录名
mv XX # 文件重命名
type XX # 查看XX文件内容