git - 分布式版本管理系统。
git管理的是修改,并非文件。
所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。
图片、视频这些二进制文件,版本控制系统只能跟踪文件大小的变化,不能跟踪其内容的变化。
Microsoft的Word格式是二进制格式。
千万不要使用Windows自带的记事本编辑任何文本文件。
集中式版本控制系统最大的毛病就是必须联网才能工作,且若中央服务器故障,所有人都没法干活了。
使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。
.git目录默认是隐藏的,用 ls -ah 命令就可以看见。
在当前目录下使用 git init 命令初始化一个Git仓库。
分两步:
第一步,用命令git add告诉Git,把文件添加到仓库。
实际上就是把文件修改添加到暂存区。
第二步,用命令 git commit 告诉Git,把文件提交到仓库。
实际上就是把暂存区的所有内容提交到当前分支。如果修改后不 git add 先把它放到暂存区,使用 git commit 不会起作用。
-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
commit可以一次提交很多文件,文件之间用空格表示即可。
运行 git status 命令看看结果,时刻掌握仓库当前状态。
nothing to commit, working tree clean告诉我们当前没有要提交的修改工作目录是干净的。
运行 git diff 命令查看文件修改的内容。
运行 git log 命令查看历史纪录,显示从最近到最远的提交日志,以便确定要回退到哪个版本。
运行 git reflog 命令查看命令历史,以便确定要回到未来的哪个版本。
HEAD指向的版本就是当前版本。
HEAD^ 回到当前版本的上一个版本;
HEAD^^回到当前版本的上上一个版本;
HEAD~n回到当前版本的上n个版本。
使用命令 git reset --hard 版本号前几位即可回到历史版本。
使用命令 git checkout – file 可以丢弃工作区的修改。
一种是file自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次 git commit 或 git add 时的状态。
– 这个符号很重要,没有这个符号就变成“切换到另一个分支”的命令了。
使用命令 git rm 用于删除一个文件。
如果文件已经被提交到仓库,使用 git checkout – file 恢复文件到最新版本。
从来没有被添加到版本库就被删除的文件,是无法恢复的!
使用命令 git remote add origin https://github.com/user-name/repo-name.git
远程仓库的默认名称是origin。
使用命令 git remote 查看远程仓库的信息。
使用命令 git remote -v 显示更详细的信息。
使用 git push 命令把当前分支 master 推送到远程。
若远程库是空的,第一次推送master分支时,要加上 -u 参数,git push -u origin master。
Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改。
如果推送失败,先用 git pull 抓取远程的新提交。
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to
origin/ 。
使用命令 git clone 克隆一个本地库。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
使用命令 git branch
git branch 不加分支名表示列出所有分支,当前分支前面会标一个*号。
本地新建的分支如果不推送到远程,对其他人就是不可见的。
使用命令 git checkout/switch
使用命令 git checkout -b
创建分支并切换分支。
使用命令 git switch -c创建分支并切换分支。
先切换到主分支上。
使用命令 git merge
使用命令 git branch -d
丢弃一个没有被合并过的分支,强行删除分支用 -D。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
使用 git log --graph 命令可以看到分支合并图。
使用命令 git stash 储存当前工作现场。
使用命令 git stash list 查看储存工作现场。
使用 git stash apply 恢复工作现场,但是恢复后,stash内容并不删除,你需要用git stash drop来删除。
使用 git stash pop 恢复工作现场,恢复的同时把stash内容也删了。
使用命令 git cherry-pick 加版本号前几位复制一个特定的提交到当前分支。
使用命令 git tag
使用命令 git tag
加版本号前几位创建一个新标签。
创建的标签都只存储在本地,不会自动推送到远程。
使用命令 git tag 查看所有标签。
使用命令 git show
例如:
$ git tag -a v0.1 -m “version 0.1 released” 1094adb
用 -a 指定标签名,-m 指定说明文字。
标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。
使用命令 git tag -d
如果要删除远程的标签,先删除本地标签,再使用命令 git push origin :refs/tags/
。
使用命令 git push origin --tags 一次性推送全部尚未推送到远程的本地标签。
让命令输出看起来更醒目
git config --global color.ui true