git基础
创建版本库
初始化目录变成Git可以管理的仓库:
1 | git init |
把文件t1.txt添加到仓库:
1 | git add t1.txt |
把文件提交到仓库
1 | git commit -m "说明注释" |
- 可以多次add,统一commit
- Git命令必须在Git仓库目录内执行(
git init
除外),在仓库目录外执行是没有意义的。 - 添加某个文件时,该文件必须在当前目录下存在,用
ls
或者dir
命令查看当前目录的文件,看看文件是否存在,或者是否写错了文件名。
基础操作
查看仓库状态
1 | git status |
查看文件改动内容
1 | git diff t1.txt |
查看修改日志
1 | git log |
查看简单版修改日志
1 | git log --pretty=oneline |
前面十六进制数据表示的是commit id(版本号)
版本回退
HEAD
表示当前版本,上一个版本是HEAD^
,上上版本是HEAD^^
,或者可以写为HEAD~2
版本回退可以用
1 | git reset --hard HEAD^ |
返回到最新版本可以用
1 | git reset --hard <版本号前几位(至少四位)或者版本标签> |
如果不记得最新的版本号,可以用下面的命令查找历史中自己输入的命令
1 | git reflog |
撤销修改
当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
1
git checkout -- file
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
1
git reset HEAD <file>
,就回到了场景1,第二步按场景1操作。
已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
删除文件
git rm t1.txt
1
2
3
2. ```
git commit -m "delete t1.txt"
远程仓库
github配置公钥
创建SSH Key,在用户主目录下,找到.ssh目录(应该是隐藏目录)
1
ssh-keygen -t rsa -C "youremail@example.com"
会生成
id_rsa
id_rsa.pub
文件。其中id_rsa
是私钥,自己保存;id_rsa.pub
是公钥。登陆github,打开“Account settings”,“SSH Keys”页面:然后点“Add SSH Key”,填上任意Title,在Key文本框里粘贴
id_rsa.pub
文件的内容。
添加远程库
创建新仓库
将本地仓库与远程仓库关联,远程仓库命名为
origin
1
git remote add origin git@github.com:zhm-super/gitlearn.git
将本地仓库的内容推送到远程库上,加上
-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,便于后续推送简化命令1
git push -u origin master
后续修改可以通过下面的命令将本地master分支的最新修改推送至github
从远程库克隆
git clone <仓库地址>
1 | git clone git@github.com:zhm-super/gitlearn.git |
分支管理
创建与合并分支
查看分支
1 | git branch |
创建分支
1 | git branch <name> |
切换分支
1 | git switch <name> 或 git checkout <name> |
创建+切换分支
1 | git switch -c <name> 或 git checkout -b <name> |
合并某分支到当前分支
1 | git merge <name> |
删除分支
1 | git branch -d <name> |
远程推送和抓取
查看远程库
1 | git remote |
查看远程库详细信息
1 | git remote -v |
推送分支
将本地master分支推送到远程地址为origin的main分支
1 | git push origin master:main |
抓取分支
将地址为origin的远程main分支拉取到本地dev分支
1 | git pull origin main:dev |
有冲突时,需要用fetch拉取
1 | git fetch origin main:dev |
然后再用merge合并解决冲突
1 | git merge dev |
使用标签
打标签
1 | git tag -a v1.0 -m "version 1.0" |
列出标签
1 | git tag |
对之前的提交打标签
1 | git tag -a v1.1 9e510e(版本号前几位) |
查看标签的详细信息
1 | git show v1.2 |
标签需要额外提交
1 | git push origin <tagname> |