Git初探

昨天花了两个小时,把廖雪峰老师的Git教程看了一遍,然后再根据网上的一些资料,对Git的一些概念和常用命令做一个归纳。 Git是什么? Git是一个开源的分布式版本管理系统,由Linux之父Linus开发。相比于其他集中式版本管理系统(如SVN、CVS)将整个项目的抓取和提交过程集中在一台中心服务器中,Git中对项目提交修改的每一个开发者都具有一套完整的项目版本库,中心服务器也不再是项目开发的必须项(为了方便提交,很多时候依然会为Git设置中心服务器),开发者在本地对项目进行修改和开发,并将修改提交给其他开发者,其他开发者也各自将自己做的修改提交给其他人,这样就实现了实时的版本管理和修改提交。 常见的应用了Git的网站有Github、Gitee、Gitlab等,它们为开源项目提供免费的Git存储,开发团队可以使用它们来实现版本管理和团队协作。 一些概念 仓库 / 版本库(Repository) 仓库指的是受版本控制管理的文件目录,该目录下的所有文件都受Git的管理,能够查询变更、删除等记录。 工作区(Working tree) 工作区中包含了仓库的工作文件。开发者对工作区的文件进行修改和增删,使用git add命令将修改添加至暂存区,然后使用git commit命令将暂存区的修改提交至仓库。 暂存区(Staging area, 又称Index) 暂存区是工作区用来提交更改(commit)前可以暂存工作区的变化。使用git add命令将修改添加至暂存区。 上面三者之间的联系: [工作区] >>git add>> [暂存区] >>git commit>> [仓库] 头(HEAD) 头是一个象征性的参考,最常用以指向当前选择的分支,同时头也可以指向某个特定的版本。 签出(Checkout) 从仓库中将文件的最新修订版本复制到工作空间。使用git checkout命令,既可以指定特定的版本,也可以指定HEAD指针所在的版本。 分支(Branch) 从主线上分离开的副本,通常对项目的不同功能、不同情况下的开发,需要创建对应的不同的分支。默认分支叫master。 标记(Tags) 标记指的是某个分支某个特定时间点的状态。通过标记,可以很方便的切换到标记时的状态,也可以使用标记来标识某个版本。 常见命令 git init [directory]:在目录directory生成一个Git仓库(--bare参数用于创建一个裸仓库) git add <filename> ...:添加文件,并将修改提交到暂存区 git rm <filename> ...:删除文件,并将修改提交到暂存区 git commit -m <massage>:将暂存区的修改提交到仓库(git commit --allow-empty-message -m ''用于不带message的提交,但不推荐使用) git status:查看当前状态 git diff <filename>:查看当前工作区中文件和暂存区中对应文件的区别 git diff HEAD -- <filename>:查看当前工作区中文件和仓库中对应文件的区别 git log:查看提交历史(--pretty=oneline参数用于美化显示为每条记录一行、--graph参数使数据以图表形式展示) git reflog:查看命令历史 git reset:回退到之前的某个版本(将HEAD指针指向某个版本,之后的所有版本都被删除)(--hard参数同时会清除暂存区和工作区的修改) 用法:git reset 0f4a(版本对应的SHA1值)、git reset HEAD^(相对位置)、git reset master~3(数字表示的相对位置)后面可加文件名仅回退指定文件。 git reset HEAD <filename>:撤销暂存区的修改至工作区 git revert -n <commit>:撤销某一版本对当前版本的修改,并基于此生成一个新的版本(具体和git reset的区别参见这篇文章) git restore --staged <filename>:撤销暂存区的修改至工作区 git checkout -- <filename>:撤销工作区某文件的修改 git restore <filename>:撤销工作区某文件的修改 git checkout <branch>:切换到特定的分支(-b参数表示创建后切换) git switch <branch>:切换到特定的分支 git remote add <name> <url>:添加一个名为name的远程仓库 git push <name> <branch>:将本地仓库的数据推送到远程仓库上(-u用于建立上游引用,将远程仓库和本地仓库关联起来) git pull:从远程仓库抓取数据 git clone <url>:从远程仓库克隆数据至本地 git branch:查看所有分支 git branch <branch>:创建一个分支 git branch -d <branch>:删除一个分支(-D强制删除) git switch -c <branch>:创建一个分支并切换至该分支 git merge:以Fast-Forward模式合并分支(--no-ff参数用于禁用Fast-Forward模式,两者的区别如下图) git stash:储存当时工作目录的状态(保护现场) git stash list:查看所有的stash内容 git stash apply <stash>:恢复某个stash(stash内容保留) git stash drop <stash>:删除某个stash git stash pop <stash>:恢复某个stash并删除 git cherry-pick <commit>:应用某些现有提交引入的更改 git rebase:8太懂,贴一个链接慢慢琢磨https://www....

Feb. 16, 2020 · 2 min · 231 words