1.git相比其他版本管理系统的优势
git是分布式的版本控制系统,而svn这些是集中式的;
git会将每个版本的整个文件整体都记录下来(如果没有变化,就创建一个链接指向上一个版本),
而svn这种会把每个版本的改变内容记录下来,而不是记录整个文件体。这样就有一个后果是,中心宕机了,就不能工作了。
而git是把每个版本的文件整体都会在用户本地创建一个仓库保存起来,达到不用链接网络也能进行版本管理控制,
最后再把变更记录提交到远端的中心仓库就可以了!
2.git创建本地仓库
1.git init 本地创建仓库
2.git clone url 拉取远端的
3.git文件状态
1.unTracked 未被跟踪的,没有交由版本系统管理的(git status 红色的文件),交由版本系统管理 git add fileName
2.tracked:
1.in stage 在暂存区的,但是没有提交的(git status 绿色的文件)
2.commited 被提交到本地仓库的
4.git add命令(将文件Track)
git add fileName 这个是个多功能命令,会根据文件的状态不同,执行的效果也不同
1.文件没有被追踪---->文件被追踪
2.文件被追踪,但是被修改过没有放到暂存区----->文件放到暂存区(红色变成绿色文件)
3.将已经解决了冲突的文件----->标记为已解决冲突
5.忽略指定文件(一些个人文件,或者是不需要提交到git的)
有些文件我们想让版本管理系统忽略掉,并且不想让他出现在 unTracked 或者 tracked的文件列表中,这时可以新建一个 .gitignore文件来存放 忽略的文件名称,支持通配符筛选
6.git commit命令(将被track的文件提交到本地git仓库)
git commit 是将放入暂存区里面的文件提交到本地仓库,当使用git commit 的时候,会自动打开文本编辑器去让你编辑此次提交的内容注释。如果 你想记录到文件具体修改了哪些内容,可以使用git commit -v
在每次Commit时,都是把已经进入暂存区的文件提交到本地仓库,但是要进入暂存区需要git add命令,这时可以使用 git commit -a 来一次性运行两个命令,但是注意,这个命令是自动把所有已经跟踪过的文件暂存起来一并提交,从没有被track的文件,还是保持unTrack状态
7.git rm 命令(将被git管理的文件移除)
git rm 可以从版本管理和工作区直接删除指定文件,如果只是删除工作区的文件后,需要手动提交删除操作到git,除此之外 ,如果你只是想从git中移除文件,但是工作区还是保留的话,可以使用 git rm --cached 命令,强制删除 git rm -f
8.git log 命令(查看提交记录)
1.git log 显示出提交记录,默认按照时间降序排序
2.git log -p 显示出每个修改的文件具体的修改内容
3.还可以针对某一个文件的历史版本查看 : git log --pretty=online fileName 显示出文件的版本号,然后调用 git show 版本号 fileName就好了!
9.git撤销操作
1.取消对文件的修改
文件修改之后,没有放入暂存区,是还可以还原文件内容的 git checkout – fileName
2.取消已经暂存的文件
放入暂存区但是没有 提交的 ,是可以退出暂存区的,但是文件内容不变
10.远程仓库
git remote -v 会显示出远程仓库的名称和 url …默认的名称拉取到本地都是 origin
git remote add 仓库名称 url 添加仓库
git fetch 仓库名称 拉取远端仓库数据到本地,但是不做分支合并,这些都要手动来
git pull 是直接拉取远端的数据到本地,并自动合并!一般都用这个
git push 仓库名称 分支名称 将本地仓库推送到指定远端仓库的分支
11.打标签
git tag 命令,展示出有哪些已经存在的tag
git show tagName ,展示出这个Tag的详情
git tag -a tagName -m 注释内容,在本地仓库中新增标签
注意,本地仓库中已有的标签 ,运行git push 时不会自动把标签提上去,要运行 git push --tags
获取指定处的tag
git checkout tagName 就可以获取指定版本,如果你是要基于这个版本修改内容,并且要合并到当前版本,那么你可以 git checkout -b branchName tagName 来新开一个分支,修改好,在merge到当前分支