星际穿越

Git review

2021-11-26

Git review

学习链接:廖雪峰老师的git教程

侵联立删

repository: 版本库 可以理解成一个目录,这个目录里面所有文件都可以被git管理起来,每个文件的修改删除,git都能跟踪。

  • 创建一个repository
1
2
3
mkdir learngit
cd learngit
pwd
  • 通过git init命令把这个目录变成git可以管理的目录
1
git init

也不一定必须在空目录下构建git仓库,选择一个已经有东西的目录也是可以的。

tips: 所有的版本控制系统,其实也只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等。而视频、图片这些二进制文件,虽然也能有版本控制系统管理但是没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从100KB变成了120KB。但到底改了啥,版本控制系统不知道,也没法知道。

  • 编写一个readme.txt文件

一定要放到learngit目录(或子目录下)

  • git add
1
git add readme.txt
  • git commit
1
git commit -m "wrote a readme file"

为什么git添加文件需要add commit两步?因为commit可以一次提交很多文件,所以可以多次add不同文件

1
2
3
git add file1.txt
git add file2.txt file3.txt
git commit -m "add 3 files"
  • git status

git status可以帮助掌握仓库当前状态,告知哪些文件被修改了,但是想知道具体修改哪些内容git diff 命令

1
git diff readme.txt
  • git log

版本控制系统的history,即提交历史

简洁显示版

1
git log --pretty=online
  • git reset版本回退
1
git reset --hard HEAD^
  • git reflog

可以查看命令历史,以便知道要回到未来的哪个版本

tips: git log 可以查看提交历史,以便确定要回退到哪个版本

每次修改 如果不用git add到暂存区,那就不会加入到commit中

  • git checkout
1
git checkout -- readme.txt

上面这个命令就是把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

1. readme.txt自修改后还没有被放到暂存区,现在撤销修改就回到和版本库一模一样的状态
1. readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态

总之,就是让这个文件回到最近一次git commit或git add时的状态

tips: 对于添加到暂存区还没没有commit,想回退到版本库状态,可以使用

1
git reset HEAD readme.txt

question: 创建一个文件后 修改并git add, 在git commit之前又删除了这个文件,现在想撤销删除操作,执行git checkout – filename操作会怎么样

  • 分支管理

    • 创建dev分支
    1
    git checkout -b dev

    相当于两条命令:

    1
    2
    git branch dev
    git checkout dev

    使用git branch命令查看当前分支

    1
    git branch
    • 将dev分支的工作成果合并到master分支上
    1
    git merge dev
    • 合并完成后可以删除dev分支
    1
    git branch -d dev
  • switch

    最新版本的git提供了新的git switch命令来切换分支 以区别checkout既要撤销又作切换时的易混淆问题

    1
    2
    git switch -c dev #创建并切换到新的dev分支
    git switch master #直接切换到已有的分支

question: 本地仓库名与远程仓库名不一样

github私有仓库是否可以git (免费)