记录Git常用功能
基本命令
$ git init
将目录变成Git可管理的仓库
$ git add <filename>
把文件添加到索引库
$ git add -u
添加修改的文件到索引库
$ git commit -m "***"
提交所有更改,附加本次提交的说明
$ git status
查看当前仓库有哪些改动
$ git diff <filename>
查看文件的改动
$ git log
查看提交记录,--pretty=oneline
参数表示只看版本号和提交说明
$ git reset --hard HEAD^
回退到上一个版本,HEAD^
表示上一个版本,HEAD~100
表示上100个版本
$ git reset --hard commitid
根据版本号回退
$ git reflog
查看历史命令
$ git checkout -- <filename>
撤销修改回到最近一次 git commit
或 git add
时的状态
$ git rm <filename>
删除文件
名词概念
工作区:Git仓库的文件目录
版本库:工作区中隐藏的文件目录 .git
,其中 index
是暂存区,还有Git为我们自动创建的第一个分支 master
,以及指向 master
的一个指针叫 HEAD
git add
实际上就是把文件修改添加到暂存区;
git commit
实际上就是把暂存区的所有内容提交到当前分支
它们的关系如下图:
分支管理
$ git checkout -b <branch>
创建并切换到分支,-b
表示创建并切换
$ git branch
查看当前分支
$ git checkout <branch>
切换到某个分支
$ git merge <branch>
合并分支到 master
分支上
$ git branch -d <branch>
删除分支,-D
强行删除
$ git log --graph
查看分支合并图,当分支有冲突时会无法合并分支
$ git stash
保存分支当前状态
$ git stash pop
恢复保存的状态并删除stash内容
$ git stash list
查看stash内容
远程仓库
$ git clone [-b <remote-branch>] <address> <dict>
克隆远程库(的某一个分支)到本地目录
$ git remote -v
查看远程仓库信息,远程仓库默认的名称是 origin
将本地仓库推送至远程仓库
$ git remote add origin <address>
关联远程库
$ git push origin <local-branch>:<remote-brance>
提交本地某个分支至远程库的一个分支上,如果冒号前为空的话,就会删除分号后面的远程仓库的分支!(相当于push了空内容到远程分支上)
$git remote remove origin
取消远程仓库关联
从远程仓库拉取更新
$ git fetch origin master:temp
将远程仓库master分支下载到本地temp分支
$ git diff temp
比较本地仓库与temp分支的区别
$ git merge temp
如果没有问题就合并两个分支
$ git branch -d temp
删除temp分支
子模块
$ git submodule add <addr> <path>
向工程中添加地址为<addr>的模块到<path>文件夹中
$ git submodule update --init --recursive
在工程中递归初始化子模块
$ git rm --cached [path]
根据路径删除子模块。(后续需要在 .gitmodules 和 .git/config 文件中删除相关配置,并且需要删除子模块文件夹)
回滚
$ git log
查看提交历史,找到要回滚版本的commit id
$ git reset --soft ${commit-id}
: 回滚某个版本,--soft
表示保留修改记录,--hard
表示不保留修改记录
$ git stash
暂存修改
$ git push -f
强制覆盖
cherry-pick
$ git checkout <dev>
切换到开发分支
$ git cherry-pick <commit-id>
选择特性分支某个需要合并的commit到开发分支上
$ git cherry-pick <start-commit-id>..<end-commit-id>
选择多个commit,左开右闭区间
$ git cherry-pick <start-commit-id>^..<end-commit-id>
选择多个commit,闭区间
$ git push
推送