查看日志
git config --list 查看git的配置
git status 查看暂存区和工作区的变化内容(查看工作区和暂存区有哪些修改)
git log 查看当前分支的commit 记录
git log -p commitID详细查看commitID的具体内容
git log -L :funcName:fileName 查看fileName文件中funcName函数的修改历史
git log --pretty=oneline 简易的查看commit 记录(直接用git log --oneline更方便一些)
git log --graph --pretty=oneline --abbrev-commit 查看分支合并图
git diff file.txt 比较工作区和暂存区内file.txt 的区别
git diff HEAD -- file.txt 比较查看版本库和工作区中的file.txt的区别
git diff --cached file.txt 比较暂存区和本地仓库
git reflog 用在回退时的场景, 当发生版本回退时,git log只能看到HEAD指针的祖先。而git reflog可以看到左右commit 记录
git show commitID 查看commitID这次提交的详细内容
本地仓库
git add file.txt 添加文件file.txt到暂存区 (也可以用git add . 将当前文件夹中所有修改都添加到暂存区)
git commit -m "xxx" 提交暂存区的内容到本地仓库 ,并添加评论"xxx", m是message的缩写
git commit --amend 上一次commit 被reviewer拒了后,做出修改后提交,要加--amend 参数
拉取远程仓库内容
git pull 用远程分支更新本地分支内容(类似于SVN中的update操作)
git pull origin master:dev 将远程库origin中的master 分支内容,更新到本地的dev分支上(如果是使用git pull origin master, 是将远程库origin中的master 分支内容,更新到当前分支上)
git clone与git pull的区别:git clone是复制一个远程库到本地,生成一个本地仓库。git pull是拉取远程库中的分支,合并到本地库中,git pull = git fetch +git merge
推送
git push -u origin master 将本地的当前分支master推送到远程(将本地库的内容推送到远程)(第一次运行,由于远程库是空的,要加-u参数,后续不用加该参数)
git push origin master 将本地的master
分支推送到origin
主机的master
分支。如果master
不存在,则会被新建。
git push origin v1.0 将v1.0这个标签推送到远程
git push origin --tags 将本地的标签一次性全部推送到远程
git push origin :ref/tags/v0.9 删除远程上的标签v0.9
git clone git@github.com:someoneAccount/repoName 克隆远程库repoName到本地
分支
git branch 查看本地所有分支
git branch -a 查看远程和本地的所有分支
git branch -d dev 删除dev分支
git branch -D 分支名 用-D参数来删除一个没有被合并过的分支
git checkout -- file.txt 用暂存区内的file.txt替换到工作区内的file.txt(如果暂存区是空的,就用版本库中file.txt替换掉工作区的file.txt)
git checkout xxx 切换到xxx分支
git checkout -b dev 创建一个新分支dev,并切换到该分支(该命令相当于两个命令:git branch dev和git checkout dev)
存贮
git stash 将当前分支的工作现场储藏起来,等以后回复现场后继续工作
git stash list查看当前分支保存起来的工作现场
git stash pop 恢复工作现场(相当于两个命令:git stash apply 和git stash drop)
git stash apply stash@{0} 恢复0号工作现场
git clean 清除untracked files
标签
git tag v1.0 给当前分支打上标签v1.0
git tag 查看所有标签
git tag v1.0 commitId 给commitId这个提交打上标签v1.0
git show v1.0 查看v1.0这个标签内容
git tag -d v0.1 删除v0.1这个本地的标签
合并
git rebase master
将当前分支的修改,在master分支上重新实现一下(rebase叫做变基, 就是把当前分子的根基改变一下)
git rebase master
git merge master
将master分支合并到当前分支,合并的步骤是将master 的多次提交合并成一次新的提交,然后再将这个新的提交实现在当前分支上。
git merge master
git merge dev 将dev分支合并到当前分支
git merge --no-ff -m "comments xxxx" dev 以no-ff的形式合并dev分支到当前分支
复制一个特定的提交到当前分支
用途:修复bug用:在某一个分支上已经修复了bug,将该提交内容commitId应用到当前的分支
git cherry-pick commitId
撤销操作
git restore
git restore --staged file 撤销git add操作,就是把文件从缓存区移动到工作区.(针对暂存区的操作)
git rm
git rm file.txt 然后git commit 从版本库中删除file.txt(本地工作区内删除,直接用rm file.txt即可)
git reset
回滚到对应的commit-id,相当于是删除了commit-id以后的所有的提交,并且不会产生新的commit-id记录,如果要推送到远程服务器的话,需要强制推送-f
git reset HEAD file.txt 清空暂存区(适用情况:写了一些胡话,已经提交到暂存区,要撤销), 其实是拉去本地仓库中最近一次提交(HEAD指针指向)到暂存区,工作区内容没有改变。
git reset --hard HEAD^ 回退到上一个版本(撤销git commit,同时也撤销git add和 工作区内容)
git reset --soft HEAD^ 撤销git commit,但不撤销git add (工作区内容依旧保持)
git revert
是反做撤销其中的commit-id,然后重新生成一个commit-id。本身不会对其他的提交commit-id产生影响,如果要推送到远程服务器的话,就是普通的操作git push就好了
git revert commit_id
更换仓库
git remote -v 查看远程库信息(也可以用git remote 查看简易的远程库信息)
git remote rm origin 删除远程库
git remote add origin git@github.com:yourAccount/repoName 将远程仓库repoName与本地仓库相关联,并将远程仓库命名为origin