我的个人笔记,没有好好整理,有点乱
什么是git?
分布式版本控制系统
版本控制系统有哪些?
本地版本控制系统
缺点: 容易丢失
集中式版本控制系统svn
缺点: 需要联网
分布式版本控制系统:
服务器只用来备份
git配置:
用户信息:
git config --global user.name"fanghuayong"
git config --global user.email"fang7506@yeah.net"
查看有没有配置成功:
git config --global user.name
git config --global user.email
检查配置:
git config --list
git init 初始化本地文件git clone url 从远程下拉文件
三个工作区域:
工作目录: working Directorygi
暂存区域: Staging Area
Git仓库: .git directory(Repository)
流程: 在工作目录写代码,小细节保存在暂存区域,完成一个阶段或者一个功能再提交到git仓库
问题: 为什么不直接提交到仓库,而是要使用暂存区?
答: 因为每一个小问题解决提交的话,会有很多的版本,影响效率,所有尽量整合成一个功能或一个阶段。
快照:
记录每次保存变动了什么(有作者和邮箱信息),可以描述,有哈希值,可以根据哈希值回退
git更新状态命令
git add 追踪文件与暂存已经修改文件
git commit 提交更新
git status 查看状态
git diff 查看修改文件状态: Untracked 没有追踪的状态
Unmodefied 没有修改的状态
Modified 修改过的状态
Staged 暂存的状态git diff
git diff: 工作目录和暂存区的不同
git diff --staged 比较这一个暂存区和提交版本的不同
git diff HEAD 比较做工目录和提交版本的不同git log
查看历史提交git撤销
git checkout -- <file> 撤销到暂存('到'是重点)
git reset HEAD<file> 撤销暂存 (现在的'暂存'和第三次版本一样, 工作目录没有提交到暂存)
git分支
git commit -a -m '跳过暂存提交' (追踪才行)
git branch dev 创建新的分支
git checkout <name> 分支切换
git merge <name> 合并分支代码到主分支(在主分支操作)
工作中使用分支:
我们不要在主分支上修改代码
$ git merge issus1 合并代码(在主分支上)
两个分支同时修改一个文件会冲突,没什么问题,保留即可
远程仓库
git remote 看本地仓库和远程仓库有没有关联
git remote add github https://github.com/fanghuayong/fang.git
设置远程仓库和远程仓库的简写命名
git remote -v 查看关联的远程仓库
fetch拉去 push推送
git push origin 使用命名直接推送即可
git branch -va 查看远程和本地仓库的版本关系
多人协作
git fetch origin 再次拉取远程仓库 (其他人先提交,代码没及时更新,推送不了的时候)
git branch -va 查看远程和本地仓库的关系
git merge origin/master 在本地合并远程主路上的代码
git commit -m '提交到本地版本'
git push 再推送同步
多人协作:
拉取 git fetch <name>
合并 git merge <branch>
拉取加合并 git pull <name> <brach> // 如果git branch -vv本地和远程有追踪,可以直接使用git pull即可
推送
git push <name> <brach>
记住拉取就可以了