git的常用用法(最简精华版)
一、工作区域(工作区,暂存区,本地仓库)
1、工作区
当前正在使用的文件
2、暂存区
已使用add命令提交的工作区的文件,会保存到暂存区
3、本地仓库
已使用commit命令提交的暂存区的文件,会保存到本地仓库。
4、远程仓库(这不属于工作区域)
已使用push命令提交的本地仓库的文件,会上传到远程仓库
二、回退版本的三种模式
使用git reflog查看操作的历史记录和版本号
1、 git reset --soft 版本号
当回退到以前的版本后,工作区和暂存区的后版本文件还会保存
2、git reset --mixed 版本号(默认)
当回退到以前的版本后,工作区的后版本文件还会保存,暂存区的后版本文件被删除
3、git rest --hard 版本号
当回退到以前的版本后,工作区和暂存区的后版本文件都被删除
注意:当回退版本后, 后版本文件就需要重新add或commit来转移区域
例如:file1被1版本commit,file2是2版本commit的文件,此时退回到1版本,虽然file2未被删除,但file2需要重新commit
三、删除文件
git rm 文件名.后缀
把工作区和暂存区的文件删除:
1、一般的删除:把需要删除的file1.txt文件通过rm命令(linux)或右键删除(windows),此时虽然file1.txt文件在工作区被删除了,此时的暂存区的file1.txt还是存在的,仍然需要通过git add file1.txt命令,把file1.txt重新更新到暂存区,此时的暂存区的file1.txt才被删除。
2、git的一键删除:使用git rm file1.txt,这个命令会把file1.txt从工作区和暂存区都删除。
git rm --cached 文件名.后缀名
把暂存区的文件删除,但是保留工作区的文件,即本地的真实文件。
通过这个命令后,别忘了再commit提交到本地仓库。
这个命令一般用在:当文件已经被提交到本地仓库了,但是我现在想用.gitignore文件把它忽略,并不想真实的删除这个文件。用这个命令把暂存区的文件删除但保留工作区真实的文件,再通过commit提交到本地仓库,此时就会忽略这个文件,不再被提交到本地仓库,并且本地仓库的这个文件也没了。
注意:现在更新了工作区和暂存区了,别忘了commit提交到本地仓库,再push到远程仓库。
四、.gitignore文件
在这个文件里填写的文件,可以在commit时不被提交到本地仓库
#忽略所有的.a文件
*.a
#虽然上面忽略了所有.a文件,但跟踪所有的lib.a文件
!lib.a
#只忽略当前目录下的TODO文件,而不忽略当前目录的子目录下的TODO文件/TODO
#忽略任何目录下名为build 的文件夹build/
#忽略 doc/*.txt,但不忽略doc/server/*.txt这种子目录下面的*.txt文件doc/*.txt
#忽略doc/目录及其所有子目录下的.pdf 文件doc/**/*.pdf
五、远程仓库
1、添加一个远程仓库
git remote add origin git@github.com:geekhall-laoyang/first-repo.git
origin是这个远程仓库的别名,可以自己取一个名字
git@github.com:geekhall-laoyang/first-repo.git是这个远程仓库的地址,这个地址是在远程仓库(github、gitee等)创建仓库后,由官方提供的。
2、查看当前仓库的远程仓库地址和别名
git remote -v
3、指定主分支的名字
git branch -M main
这里指定主分支的名字为main
4、把本地仓库的main分支推送到远程仓库
git push -u origin main
完整命令:git push -u origin main:main 前面的main是本地仓库名字,后面的main是远程仓库的名字,若相同则可以直接写一个main
5、拉取远程仓库的内容到本地
git pull 拉取远程仓库并合并到本地(若文件没有冲突,即并没有同一个文件的同一部分不同的情况。若文件有冲突,则手动修改冲突的部分就行)
完整命令:git pull 远程仓库名 远程分支名:本地分支名
六、分支
1、 查看分支列表
git branch
2、创建分支
git branch 分支名
3、切换分支
git checkout 分支名
git switch 分支名
4、合并分支
git merge 分支名
在当前分支下使用这个命令,会把这个分支合并到当前分支
5、删除分支
已合并:git branch -d 分支名
未合并:git branch -D 分支名