Git 你需要具备的基础知识
Git 是一款免费、开源的分布式版本控制系统,相比于之前的 CVS、SVN 等版本控制系统,Git 的优势大大凸显。Git 是分布式的版本控制系统,相比之前的集中式系统,分布式版本控制系统的安全性要高很多。因为每个人电脑里都有完整的版本库副本,使得整个版本库不会轻易的丢失。
本文不会介绍 Git 的发展历史及其入门的使用方法,而主要介绍在日常开发中需要具备的 Git 基本操作,即相关概念和对应的指令方法。
- 在 Linux 上安装 Git: - sudo apt-get install git
- 在 Windows 上安装 Git 直接使用 Git Bash,并设置 Name 和 Email, - global代表本地所有 Git 仓库均使用此设置:- git config --global user.name "Name" git config --global user.email "Email" git config --global core.editor vim; git config --list # 查看所有配置项; git config --global alias.<short> <command> # 设置命令别名;
- 创建版本库: - git init
- 添加改动到暂存区: - git add <filepath>
- 提交文件到仓库: - git commit -m "msg" git commit -a -m "msg" # 跳过将改动加入到暂存区的过程; git commit --amend # 修改上一次提交的描述信息(会合并当前暂存区的改动);
- 查看仓库状态: - git status
- 查看仓库修改的内容: - git diff # 默认只查看当前分支和未暂存改动间的区别; git diff --cached/--staged # 查看暂存区和待提交分支的区别; git difftool # 使用 GUI 界面工具查看区别;
- 查看仓库提交日志: - git log --pretty=oneline git log --pretty=format:"<format>" git log -p -<n> # 查看最近 n 次提交的差异; git log --stat # 查看最近提交的简略总结信息; git log --since/--until=<time> # 筛选特定日期的提交; git log -p -S<functionName> # 查看跟特定关键字相关的提交细节; git log --oneline --decorate # 查看各分支对应的提交情况; git log --oneline --decorate --graph --all # 显示详细的分支和提交情况; git show <commitHash> # 查看某一个提交的详情; git show HEAD^^ # 查看当前分支的祖父提交; git show HEAD~2 # 查看当前分支的祖父提交; git show HEAD~~ # 查看当前分支的祖父提交; git show HEAD^2 # 查看当前分支的第二父提交(被合并分支);
- 版本回退: - git reset --hard HEAD^ git reset --hard HEAD~100 git reset --hard HEAD <commitid>
- 查看分支引用变动历史: - git reflog git show HEAD@{n} # 查看变动历史对应提交的详情;
- 丢弃工作区修改: - git checkout -- <filepath>
- 丢弃暂存区修改: - git reset HEAD <filepath>
- 删除仓库文件: - git rm <filepath> git rm <filepath> --cached # 从 Git 索引中移除,但不删除文件实体; git commit -m "msg"
- 代码暂存与恢复(到当前分支): - git stash git stash pop git stash drop <stashId> git stash apply <stashId> # 应用某个暂存到当前分支;
- “变基”的基本用法: - git rebase <baseBranch> <topicBranch> # 将 topicBranch 分支变基到 baseBranch 分支;
- 移动文件: - git mv <org> <des> # 常用于更换文件名;
- 管理远程仓库: - git remote -v git remote add <shortname> <url> # 添加上游仓库; git remote show <remote>
- 拉取资源: - git fetch # 只拉取,不合并;
- 标签: - git tag <tagName> # 轻量标签; git tag -a <tagName> <commitId> -m <message> # 附注标签;
- 分支操作: - git checkout -b <branchName> [<tagName>/<remote/branchName>] git checkout -- . # 丢弃本地当前所有改动; git branch -v # 查看每一个分支的最后一次提交; git branch --merged/--no-merged # 查看已经合并/未合并到当前分支的分支; git checkout --track <remote/branchName> git branch -u <remote/branchName> # 为本地已有分支指定上游跟踪分支; git branch -vv # 查看本地分支的远程跟踪情况; git push <remote> :<branchName> # 删除远程分支(1) git push <remote> --delete <branchName> # 删除远程分支(2)

评论 | Comments