Git学习笔记
Git是什么
分布式版本管理系统
本地仓库与远程仓库
-
本地仓库
- 在当前文件夹下执行
git init
命令,则该文件夹成为了一个git本地仓库 - 本地仓库目录结构
dir |__ .git _ | |__ HEAD | | |__ config |--> 版本库 (暂存区index,HEAD指针,master分支...) | |__ index | | |__ ... _| | |__ .gitignore _ |__ readme.txt |--> 工作区 (项目文件) |__ ... _|
- 在当前文件夹下执行
-
远程仓库
- 目的:项目备份、项目多人协作开发,所谓分布式。
- 方法:GitHub(项目公开),搭建Git服务器(项目私有)
-
本地与远程连接
- 已有本地仓库,连接远程仓库:
- 设置远程仓库的名称和链接:
git remote add origin git@github.com:qxqtx/test.git
- 将本地仓库内容提交到远程仓库:
- 第一次提交
git push -u origin master
- 之后提交
git push origin master
- 第一次提交
- 设置远程仓库的名称和链接:
- 已有远程仓库,克隆到本地仓库:
git clone + link(http or ssh)
- 已有本地仓库,连接远程仓库:
版本提交与版本回退
-
版本提交
- 工作区-->版本库暂存区
git add <filename>
- 暂存区-->版本库某分支
git commit -m "description"
- 工作区-->版本库暂存区
-
版本回退
- 修改仅在工作区(未add)
-
git checkout -- <filename>
工作区内容回到最近一次add或commit之后的状态
-
- 修改已在暂存区(已add,未commit)
-
git reset HEAD <filename>
把暂存区的修改回退到工作区,当做没add过 -
git checkout -- <filename>
工作区再次回退,同上
-
- 修改已在本地分支上(已commit,未提交到远程)
-
git reset --hard 657899
其中657899表示某一个commit号
-
- 修改仅在工作区(未add)
分支管理
-
创建与管理分支
- 查看分支
git branch
- 创建分支
git branch <branchname>
- 切换分支
git checkout <branchname>
- 合并分支
git merge <branchname>
将branchname分支合并到当前分支 - 删除分支
git branch -d <branchname>
- 查看分支
-
分支管理策略
- master分支: 稳定,仅用来发布新版本,平时不在上面干活
- dev分支: 不稳定,经常提交,在这上面干活;当新版本发布时合并到master分支上
- 每个用户的分支:每个人在各自的分支上干活,不定期向dev分支提交
-
多人协作方式
- 1、首先,试图用
git push origin branch-name
推送自己的修改; - 2、如果推送失败,说明远程分支比本地更新,需要先用
git pull
抓取远程的新提交 - 3、如果合并有冲突,则解决冲突,并在本地提交;
- 4、没有冲突或者解决掉冲突后,再用
git push origin branch-name
推送就能成功! - 5、如果
git pull
提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
- 1、首先,试图用