在操作如何用 Git 上传管理代码至 GitHub 时常常用到的命令,当时只知道照着网站上的步骤一步一步敲命令行,但不知其所以然,所以用这篇文章记录一下笔记。
1、Git的文件状态
在用 Git 管理一个仓库的时候,会对文件有不同的状态划分,以确定这个文件是否已经归于Git仓库的管理,文件状态分为两种:未跟踪状态(untracked)和已跟踪状态(tracked)
- 未跟踪:默认情况下, Git仓库下的文件没有添加到Git仓库管理中
- staged:暂缓区中的文件状态,可以通过
add .
命令将文件添加到暂存区 - Unmodified: 通过
commit
命令,可以将staged中文件提交到Git仓库 - Modified:修改了某个文件后,会处于Modified状态;
- staged:暂缓区中的文件状态,可以通过
- 已跟踪:添加到Git仓库管理的文件处于已跟踪状态, Git可以对其进行各种跟踪管理
下面这张图可以很好的展示它门之间的关系以及变化:
2、常用的代码
在了解了文件状态之后,再看一下我常用的代码:
git init
git remote add origin https://github.com/xx/xx.git
git add .
git commit -m "your commit"
git push -u origin main
- git init
是对本地的代码仓库进行初始化,但如果想获取其它地方的仓库则用 git clone https://github.com/xx/xx.git
- git remote add origin https://github.com/xx/xx.git
链接远程仓库,origin就是一个名称,在你clone一个代码库时,git为你默认创建的指向这个远程代码库的标签
- git add .
表示将所有文件添加到暂存区,注意add 和 . 之间需要加空格。如果是git add a.js 则表示只将 a.js 这个文件添加到暂存区。
- git commit -m “your commit”
Git 在储存数据时,所有的对象都会基于它们的SHA-1 hash进行寻址。
文件更新提交,再每次准备提交前,先用 git status 看下,你所需要的文件是不是都已暂存起来了,再运行提交命令 git commit。也可以将git add .
和 git commit -m''
两行命令合并为 git -a -m ''
- git push -u origin main
默认情况下是将当前分支(这里是main) push 到 origin 远程仓库; -u 是将本地的分支版本上传到远程合并,并且记录push到远程分支的默认值,下次继续push的这个远端分支的时候推送命令就可以简写成“git push”。
- git push / git push origin master
将代码push到远程仓库:将本地仓库的代码当前分支推送到远程仓库中;
- git fetch / git fetch origin
从远程仓库fetch代码:从远程仓库获取最新的代码
- git merge
获取到代码后默认并没有合并到本地仓库,我们需要通过merge来合并
- git pull
从远程仓库pull代码 = git fetch + git merge(rebase)
3、Git其它强大的功能
查看提交的历史
git log --pretty=oneline
git log --pretty=oneline --graph
git reflog // 所有详细操作
版本回退
git reset --hard HEAD^ // 上个版本
git reset --hard HEAD~n // 上n个版本
git reset --hard 2d44982 // 指定某个版本的commit id
……