常见误区(面试题):你的简历里提到了会git的使用,问一下git可以在本地使用吗?一定要注册gitee账号?绑定邮箱?
不需要,git在本地就可以使用,甚至也不需要网络,他是版本控制器,负责记录你目录的每一次修改.
安装git :Ubuntu下
sudo apt install git
windows安装git的话去下载对应的安装包(小乌龟+git)即可
1.创建仓库
在你想创建仓库的目录下,执行git init
(同时,如果你有gitee的情况下,可以在gitee上手动创建仓库,然后把仓库的链接复制到服务器进行clone,git init的仓库是不会绑定到gitee上的)
如果你想传到gitee,首先执行git init,然后在gitee上创建一个空仓库(README文件什么的也都不要),然后会生成url,接下来执行
bash
# 1. 告诉本地仓库,远程的"家"在哪里
git remote add origin https://gitee.com/你的用户名/NewGame.git
# 2. 把本地的代码推送到 Gitee
git push -u origin master
# (注意:如果你的默认分支是 main,请把 master 换成 main)
接下来就可以把代码推送至远端了(git init的文件夹名字和仓库名字无关,随便取)
如果你一定要在你的gitee上看到你的仓库,下面这种做法更适合:
首先在gitee上创建新仓库,然后把生成的url复制到终端执行(你想在哪个位置创建该仓库就在哪里执行)执行后就可以正常提交了.
| 方式 | 流程特点 | 适用场景 |
|---|---|---|
| git init | 本地先有代码 -> 再去网上建库 -> 手动关联 | 本地已经写了一半代码,想上传到云端备份。 |
| git clone | 网上先建库 -> 下载到本地 -> 自动关联 | 全新项目,或者要在另一台电脑上继续工作。 |
对于init的方法,第一次初始化可能会报错,原因是我们没有指定分支,执行:
git config --global init.defaultBranch master (指定为master分支)
--global代表所有分支都是master
2.配置仓库name和email
git config [--global] user.name "Your Name"
git config [--global] user.email "email@example.com"
global代表这台电脑上所有仓库都会绑定此信息(执行命令要在仓库中进行)
查看配置: git config -l
删除配置
git config [--global] --unset user.name
git config [--global] --unset user.email
注:配置name和email不需要你在gitee有账号,可以是任何name和email(也不需要网络)只是用于标记这条commit是谁发的,如果你输入了gitee配置的账号,那么在你push时就会出现绿格子.
3.添加文件
将文件添加到暂存区:git add [file] [file] 或git add [dir],添加当前目录就是git add .
放入本地仓库 git commit -m "message" (也可以将指定文件放入语法与上面类似)
查看历史提交记录,git log(会显示每一个commit的版本id和作者,用于回滚)
4.修改文件
git status可以查看你上次提交后是否对文件又修改,可以显示出哪个文件被修改了
git diff [file] 查看哪个地方被修改了
对于这种情况,你刚才的git commit的快照就失效了,现在无法git push 到远端仓库,只能重新git add\
5.版本回退
git reset[--soft | --mixed | --hard] [HEAD]
选项: soft 对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本
mixed:默认选项,使用时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件保持不变
hard:将暂存区与工作区都退回到指定版本。
工作区就是你还没有用git时写的代码,暂存区就是git add后的地方,版本库就是git commit的本地仓库
如果对于本地仓库,使用起来比较简便,但如果是涉及远端仓库就麻烦了,你在回滚后再git push是会报错的,
如果你只是想回滚看看之前的代码是什么样的
bash
# 查看操作日志,找到回退前的 commit ID
git reflog
# 假设回退前的 ID 是 abc1234
git reset --hard abc1234
但如果你是想修改远端
bash
git push -f origin main
# 或者更安全的写法(推荐)
git push --force-with-lock origin master
HEAD 说明:
-
可直接写成
commitid,表示指定退回的版本。 -
HEAD 表示当前版本
-
HEAD^ 上一个版本
-
HEAD^^上上一个版本。以此类推...0
也可以使用 ~数字表示:
- HEAD~0 表示当前版本
- HEAD~1 上一个版本
6.撤销
git check out -- [file] 让该文件回到最后一次add/commit状态
7.删除
git rm file 从工作区和暂存区中删除,再commit