git学习笔记
作者:孤独草原狼
Git简介:
git是一种分布式版本控制系统,相比于集中式版本控制系统有很多优点。Git的很多操作都可以离线进行,不需要网络就可以工作,等把所有的文档更改了,可以再一次性提交。而其他集中式的必须要网络的支持才能工作。
集中式版本控制系统:都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。但是这样的VCS有很大的缺点,比如中央服务器故障了,那么用户就无法提交更新,无法工作了。而且如果磁盘没有及时备份的话会造成数据的丢失,损失是惨重的。
分布式版本控制系统:弥补了这种缺点,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。
任何一个文件在git内的三种状态:committed,modified, staged
一些常用的命令(掌握了以下命令,基本上可以完成日常常用的操作了):
git init 创建本地仓库
/** git配置工具 git config **/
专门用来配置或读取相应的工作环境变量,这些变量可以存放在以下三个不同的地方:
git config --global user.name “qianghaohao” 设置用户名
git config --global user.email xxxx@xxxx 设置用户邮箱
git config --list 查看配置信息
git help<verb> 获取帮助
git clone 克隆远程服务端的仓库
ex:gitclone https://github.com/qianghaohao/project1.git
git status 查看当前目录下文件的状态
git add文件名 跟踪文件或者将文件加入暂存区
git diff 查看更改后的文件和暂存区相同文件的区别
git diff - -cached 查看暂存区文件和上一次提交文件的区别
.gitignore文件 一般在.git最目录下创建可以忽略某些文件纳入git
ex:*.o 在目录下不让后缀名为.o的文件纳入git管理
git commit 提交存放在暂存区的快照(提交更新)
git commit -a 跳过使用暂存区,直接把存放在暂存区的文件修改过后提交更新。
git rm文件名 删除提交后的文件
git rm –cached文件名 从跟踪清单中移除文件,但不删除
git mv原文件名 目标文件名 修改文件名
git log 查看提交历史
git gitk 相当于git log的可视化界面
git commit –ament 修改最后一次提交
git reset HEAD文件名 取消已经暂存的文件
git remote 查看当前配置有哪些远程仓库
git remote -v 查看当前配置有哪些远程仓库和对应的地址
git fetch远程仓库名 从远处仓库中拉取本地仓库没有的数据
git remote show远程仓库名 查看远程仓库的信息
git remote rename原远程仓库名 新远程仓库名 更改远程仓库名
ex:git remote rename project2 project4
git remote rm 远程仓库名 删除远程仓库
git tag –a 建立含附注标签
ex:git tag –a v1.0
git show标签名 查看标签版本信息
/*分支相当于指向commit提交对象的指针,会随着提交向前推进 */
git branch分支名 建立一个分支,但不会自动切换到这个分支中去
git checkout分支名 切换到分支中去
git checkout –b 分支名 新建并切换到该分支中去
git merge分支名 合并分支
git branch –d 分支名 删除分支
git mergetool 冲突合并工具,图形界面的合并工具
git branch --merged 查看哪些分支合并到当前分支
git branch --no-merged 查看尚未合并到当前分支的分支
git fetch远程仓库名 先找到仓库是哪个服务器,然后获取尚未拥有的数据,更新本地数据库
git push远程名本地分支名:远程分支名 提取本地的分支名,并更新到远程的分支名
git push远程名:远程分支 删除远程分支
/*** 托管项目到gitHub *****/
一旦拥有一个本地 Git仓库,把 GitHub添加为远程仓库并推送 master 分支:
git remote add origin 远程仓库地址
git push origin master
附加问题:在提交之前先git pull一下,让远程和本地同步,然后再提交------>git push,如果不先git pull
下会提示失败.