0%

【Git】Git学习记录

Git学习

Git是目前世界上最先进的分布式版本控制系统(没有之一)。

本篇记录我学习Git的过程。

廖雪峰Git教程
菜鸟教程

安装Git

创建版本库

版本库:repository

在文件夹里右键点击Git Bash Here

  • 初始化Git仓库
1
git init
  • 添加文件到Git仓库
1
2
git add <file>
git commit -m <message>
  • eg
1
2
3
git init
git add readme.txt
git commit -m "wrote readme.txt"

git add可以添加多个文件:

1
git add test1.txt test2.txt

.表示当前目录下所有文件,故可以这么写

1
git add .

时光机穿梭

  • 版本回退

    1. HEAD指向的版本就是当前版本,Git允许在版本的历史之间穿梭,使用

      1
      git reset --hard commit_id

      上一个版本是HEAD^,上两个版本就是HEAD^^,上一百个版本就是HEAD~100

      1
      git reset --hard HEAD^
    2. 穿梭前用git log可以查看提交历史,以便确定要回退到哪个版本。

    3. 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

  • 工作区(working directory)、版本库(Repository)、暂存区(stage)

    1. git add把文件添加进去,实际上就是把文件修改添加到暂存区;

    2. git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

      使用git status查看状态。

  • 管理修改

  • 撤销修改

    1. 当改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
    2. 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就把暂存区文件退回工作区,再使git chectout -- file
    3. 已经提交了不合适的修改到版本库时,想要撤销本次提交,使用版本回退。不过前提是没有推送到远程库。
  • 删除文件

    1. 删除工作区某个文件,直接在文件管理器删除或rm test.txt

    2. 此时版本库和工作区不一致,若要删除版本库中该文件,则用git rm file,然后git commit

    3. 如果工作区文件删错了需要恢复,使用git chectout -- file

      git chectout 是用版本库中的版本替换工作区的版本。

远程仓库

  • 添加远程库(先有本地库后有远程库)

    ​ 先链接SSH,ssh-keygen -t rsa -C "youreamil@example.com",然后一路回车,找到id_ras.pub文件,复制里面的Key添加到github/gitee

    1. 关联远程库:git remote add origin git@server-name:path/repo-name.git
    2. 关联后,使用git push -u origin master第一次推送master分支的所有内容
    3. 此后每次推送均使用git push origin master
  • 从远程库克隆(从零开发,先创建远程库,再克隆到本地)

    1. 创建远程库,勾选Initialize this repository with a README,自动创建README.md文件
    2. git clone git@server-name:path/repo-name.git,此方式通过SSH(速度最快),也可以使用Https协议,但速度较慢:git clone https://github.com/server-name/repo-name.git

分支管理

  • 创建与合并分支
    1. 查看分支:git branch
    2. 创建分支:git branch <name>
    3. 切换分支:git switch <name>
    4. 创建+切换分支:git switch -c <name>
    5. 合并某分支到当前分支:git merge <name>
    6. 删除分支:git branch -d <name>
  • 解决冲突:把Git合并失败的文件手动编辑为我们希望的内容,再提交。
  • 分支管理策略
  • Bug分支
  • Feature分支
  • 多人协作
  • Rebase

标签管理

  • 创建标签

    1. 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
    2. 命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;
    3. 命令git tag可以查看所有标签。

    查看历史提交的commit id:git log --pretty=oneline --abbrev-commit

  • 操作标签

    1. 命令git push origin <tagname>可以推送一个本地标签;
    2. 命令git push origin --tags可以推送全部未推送过的本地标签;
    3. 命令git tag -d <tagname>可以删除一个本地标签;
    4. 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

Sourcetree

​ 可视化软件

基本步骤

  1. 创建远程库

  2. 克隆远程库到本地git clone git@server-name:path/repo-name.gitgit clone https://github.com/server-name/repo-name.git

  3. 修改工作区文件,添加到暂存区,添加到本地库

    1
    2
    git add .
    git commit -m "message"
  4. 推送到远程库

    1
    git push origin master