学习教程来自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
基础操作
1.git init (目录) 以当前目录初始化建立一个.git文件,当作本地仓库。
2.git add 把当前路径下的文件,或者新修改的文件,加入到暂存区。
3.git commit -m "xxx" 把暂存区的全部文件提交到master或者当前分支里,“xxx”是消息。
4.git checkout --(文件名)把暂存区的修改恢复到未修改前的状态,把未add的修改文件,恢复到工作区修改前的状态
5.git log 日志文件
6.git reflog 带唯一commit标识的日志,以及每次commit的记录,当前head指针的指向位置。
7.git status 时刻掌握仓库当前的状态
8.git diff 能看看具体修改了什么内容
9.git revert 把前一个版本在当前版本的复制到下个版本,切换到下个版本,内容与前一个版本一致。
10.git reset --hard HEAD^ (n个^) 回退到前一(n)个版本,之后的版本不在日志里,但在命令日志reflog里,
可以通过git reset --hard xxx(唯一标识)来回退到这个版本。
11.git rm 操作等同于正常修改,可以通过4和12,恢复到之前的样子。rm操作不需要add 和commit,不会在日志中产生记录,
绕过了git直接删除文件,如果需要恢复,在刚执行rm命令后立即执行 git commit -am "xx"操作,在用git reset --hard HEAD,回退到修改之前。
如果rm操作已经执行很久了,只能通过git reflog找到commit标识,在git reset --hard xxx(唯一标识)回退到前一个版本。
分支操作
1.git checkout -b xxx 创建并切换到xxx分支
2.git branch 查看分支
3.git branch -d xxx 删除xxx分支
4.git checkout <name>切换分支
5.git branch <name>创建分支
6.git merge xxx 将当前分支和XXX分支快模式合并
7. git merge --no-ff -m "merge with no-ff" dev 非快模式合并分支,合并后的历史有分支
8.在本地解决冲突,git status可以告诉我们冲突的文件。
9.git stash可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作,git stash pop,恢复的同时把stash内容也删了。
10.git log --graph --pretty=oneline --abbrev-commit 可以看到分支的合并情况
11.git rebase 可以把本地未push的分叉提交历史整理成直线;
远程仓库
1.ssh-keygen -t rsa -C "youremail@example.com"创建SSH Key,在GitHub点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
2.git remote add origin git@github.com:michaelliao/learngit.git 把一个已有的本地仓库与github仓库关联
3.git push -u origin master 第一次推送master分支的所有内容,之后提交git push origin master推送最新修改
4.git clone git@github.com:michaelliao/gitskills.git 从远程仓库克隆到本地库
5.git remote -v显示了可以抓取和推送的origin的地址
6. git checkout -b dev origin/dev 创建远程origin的dev分支到本地
7.用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送
8.git branch --set-upstream-to=origin/dev dev 指定本地dev分支与远程origin/dev分支的链接,否则会pull失败