Git学习

基本结构

Git是一个分布式版本控制系统,分为工作区,版本库和远程仓库。

工作区是本地能看到的目录,版本库可分为暂存区和本地仓库,远程仓库被置于远程,可由Github托管。

把本地文件放入本地仓库分两步进行:

第一步:git add将工作区的文件添加到暂存区;

第二步:git commit将暂存区的所有内容提交到本地仓库(当前分支)

接下来,在本地仓库和远程仓库已经关联的条件下,即可使用git push推送当前分支到远程。


多人协作开发

master分支是主分支,用于发布版本;

dev分支是开发分支。每个成员都在各自dev分支上开发,并时不时地推送到远程;

feature分支可用于开发新功能,开发完成后,合并到dev分支,最后删除dev分支;

bug分支可以被临时建立来修改bug,修改后,合并分支,删除bug分支。

总之,master分支用于发布版本,每个人在各自的dev分支上开发,时不时往远程的dev进行提交,合并。如果向远程提交dev分支时出现冲突(即你的同伴和你对同一份文件进行了修改),则需要先git pull,在本地解决冲突后再提交(git commitgit 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>