基本结构
Git是一个分布式版本控制系统,分为工作区,版本库和远程仓库。
工作区是本地能看到的目录,版本库可分为暂存区和本地仓库,远程仓库被置于远程,可由Github托管。
把本地文件放入本地仓库分两步进行:
第一步:git add将工作区的文件添加到暂存区;
第二步:git commit将暂存区的所有内容提交到本地仓库(当前分支)
接下来,在本地仓库和远程仓库已经关联的条件下,即可使用git push推送当前分支到远程。
多人协作开发
master分支是主分支,用于发布版本;
dev分支是开发分支。每个成员都在各自dev分支上开发,并时不时地推送到远程;
feature分支可用于开发新功能,开发完成后,合并到dev分支,最后删除dev分支;
bug分支可以被临时建立来修改bug,修改后,合并分支,删除bug分支。
总之,master分支用于发布版本,每个人在各自的dev分支上开发,时不时往远程的dev进行提交,合并。如果向远程提交dev分支时出现冲突(即你的同伴和你对同一份文件进行了修改),则需要先git pull,在本地解决冲突后再提交(git commit、git push)
常用命令
将指定文件添加进入暂存区
1
git add <filename>
(
git add .表示将所有文件加入暂存区)删除版本库中暂存区指定文件
1
git rm <filename>
将暂存区的修改提交到本地仓库
1
git commit -m "your change"
本地仓库与远程仓库建立联系(确保SSH Key已经配置好)
1
git remote add origin https://github.com/YOUR_NAME/REPO_NAME.git
将远程分支拉到工作区(出现冲突时需要进行这一步,因为要在本地进行合并)
1
git pull
提交到远程仓库
1
git push origin <branch>
如果远程仓库为空,则
1
git push -u origin <branch>
从远程仓库克隆(会自动把本地仓库与远程仓库关联起来)
1
git clone https://github.com/YOUR_NAME/REPO_NAME.git
创建并进入分支
1
git checkout -b <branch>
或者
1
git switch -c <branch>
切换分支
1
git switch <branch>
将目标分支合并到当前分支
1
git merge <branch>
删除分支
1
git branch -d <branch>
查看分支情况
1
git log --pretty=oneline --graph
查看以往提交的版本
1
git reflog
版本回退
回退指定次数1
git reset --hard HEAD~<times>
回退指定commit_id的版本(id可在log或reflog中找到)
1
git reset --hard <commit_id>
改乱了工作区内的内容,想丢弃工作区的修改(返回到版本库的状态)
1
git checkout -- <filename>
改乱了工作区的内容并且提交到暂存区,以下命令可将修改回退到工作区,此时就回到了上一个场景的情况
git reset HEAD <filename>