Git基本操作
·Git前导概念:
·工作区:就是在电脑可以看到的目录
·暂存区:在工作区和本地仓库中间的一个区域
·本地仓库:在本地的代码仓库
·远程仓库:在远程的代码仓库(如github)
·分支:提交代码的每次提交,串成的一条线,分支与分支之间互不影响
Git本地仓库:
·建立仓库:git init
·提交文件至暂存区:git add <filename>
·提交当前目录下的readme.md至暂存区:git add readme.md
·提交当前目录下learnGit目录下的readme.md至暂存区:git add learnGit/readme.md
·提交当前目录及其子目录下的所有文件:git add .
·提交文件至本地仓库:git commit -m <commit message>
·当输入git commit后,没有输入<commit message>便回车,会进入一个填写<commit message>的界面,此时先按<i>,下方的状态会变为<--insert-->,输入<commit message>,输入完成以后,按下<Esc>,此时下方状态变为空白,输入<:wq>,回车,便可完成提交信息的填写。
·直接提交所有更改(不经过git add,提交除新增文件的所有更改):git commit -a
·查看工作区[某一文件]:git status [<filename>]
·查看变更[某一文件]:git diff [<filename>]
·查看工作区相对于暂存区的变更[某一文件]:git diff [<filename>]
·查看暂存区相对于本地仓库的变更[某一文件]:git diff --cached [<filename>]
·丢弃暂存区更改[某一文件]:git reset head [<filename>]
·丢弃工作区更改[某一文件]:git checkout [<filename>]
·代码回退至本地仓库的上一个版本(上100个版本):git reset --hard head^[head~100]
·代码回退至本地仓库的指定版本:git reset --hard <commit ID>
·查看提交记录:git log
·查看提交记录(每次记录只显示commit ID和commit message):git log --pretty=oneline
·查看所有历史commit ID:git reflog
Git远程库:
·创建SSH Key:ssh-keygen -t rsa -c <your email adress>
·查看已添加的远程库(详细信息):git remote [-v]
·为本地仓库添加远程库:git remote add <remote name> <remote adress>
·提交更改至远程仓库:git push <remote name> <remote branch name>
·第一次提交本地分支到远程仓库:git push -u <remote name> <branch name>
·普通提交(本地分支与远程分支名字不同):git push <remote name> <branch name>:<remote branch name>
·克隆远程库(默认克隆master分支):git clone <remote adress>
·克隆指定分支:git clone -b <remote branch name> <remote adress>
Git分支:
·查看分支:git branch
·创建分支:git checkout -b <branch name>
·该命令相当于两个命令的结合,即:
·创建分支:git branch <branch name>
·切换分支:git checkout <branch name>
·合并分支(dev)到当前分支(master):git merge dev
·删除分支:git branch -d <branch name>
·强制删除分支:git branch -D <branch name>
·查看合并图:git log --graph
·禁用fast forward:git merge --no-ff
·bug分支:
·存储现场:git stash
·查看现场:git stash list
·恢复(保留现场):git stash apply
·恢复(清除现场):git stash pop
·恢复(指定现场):git stash apply stash@{0}
·本地创建分支并关联到远程分支:git checkout -b <branch name> <remote name>/<remote branch name>
·关联已有本地分支到远程分支:git branch --set-upstream <branch name> <remote name>/<remote branch name>
·本地未push的合并图的分叉变直线:git rebase
·打tag:
·在当前位置打tag:git tag <tag name>
·指定commit ID处打tag:git tag <tag name> <commit ID>
·创建带说明的tag:git tag -a <tag name> -m <tag message> <commit ID>
·查看tag:git tag
·查看tag信息:git show <tag name>