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