问题
code命令无法在git bash中运行,显示错误 /d/Microsoft VS Code/bin/code: line 61: /d/Microsoft VS Code/Code.exe: Permission denied 解决方法:
- 查看code是否添加进path中
- 添加了依然无法运行
- 在D:\Microsoft VS Code文件夹中,查看Code.exe的属性->兼容性,取消“以管理员身份运行”
- 运行code显示错误,代码的第二个实例已以管理员身份运行
- 重新启动vs code,再次运行code命令,可以执行
git本地仓库
基础命令
在git bash中运行git,整个框是bash
git 版本控制
git init 初始化,创建一个仓库
- git init 会创建.git目录
- code . 表示在VS code中打开当前目录
- ls -a 表示打开所有目录,包括以.开头的文件
- .git文件夹用于容纳代码快照
git add 哪些可以提交,还没提交,标记要
- git add 路径,可以为绝对路径、相对路径 .和*
- 添加之后,vscode中会显示A,表示可以提交,U表示未添加
git add 可以删除- 删除提交过的文件,先rm,之后需要git add
.gitignore 哪些不需要提交
- 怎么告诉git,哪些不需要提交,总不能每次都挨个添加
- 新建.gitignore文件,在其中添加不需要提交的文件名即可
- 常见的不能提交的目录
- node_modules,太大了
- .DS_Store
- .idea
- .vscode
git status 显示提交状态
git commit -m 字符串 提交
- 提交并说明提交理由(输入字符串,一般会设为版本号)
- 字符串里如果有空格,就要用引号包起来
git commit -v 推荐
- verbose 啰嗦
- 会打开vscode,并等你输入一条信息,来描述你的改变信息,并能看到修改内容
- 推荐这种方式
如果存十次会有十倍的代码嘛,是不会的,可以重复利用
git log 创建的版本/拷贝可以通过这条语句查看
git add . git commit -v
各个版本的转换
git reset --hard XXXXXX
-
XXXXXX是提交号的前6位,至少为4个,保证唯一性
-
这个操作会使没有commit过的代码消失
-
示例: 使用 git reset --hard xxxxxx 回到版本1后,此时查看版本 git log 会发现只有版本1,那想回到其他版本怎么办呢,需要XXXXXX号
git reflog
- 不仅看当前的历史,还有版本转换的历史,里面有XXXXXX号
问题
只有commit才会发生拷贝 不要有文件处于add状态,没有commit
如何同时做多个版本?
git branch x
- 可以创造平行时间线x,术语叫做【分支】
- 基于当前的树枝长出的新树枝
- 基于当前的快照
git checkout x
- 切换分支时是不影响当前硬盘上的文件的,即使它没被add
git branch
- 显示当前在哪个分支
git merge x 合并分支
- 有冲突错误:conflict 使用git status得到冲突原因
- git status -sb,可以得到更简化的信息
- 解决冲突:依次打开每个文件;搜索====四个等于号,在上下两部分中选择要保留的代码,输出不用的代码,删除====>>>><<<<字符
- git add对应文件
- 再次git status -sb,解决下一个冲突
- 都解决后,直接git commit
git branch -d x 删除分支
- 注意:合并后分支没有消失,所以可以选择删除该分支
过程
- 先提交,提交成功则这个版本为master
- 创建分支,git branch x
- 此时依然位于master分支,修改代码,提交
- git checkout x,进入另一个分支,修改代码,提交
- git checkout master,返回master分支
远程仓库
公钥私钥
id_rsa 私钥 id_rsa.pub 公钥
命令
git remote add origin git@github.com:xxx/git-demo-1.git
git branch -M main
git push -u origin main/xxx
- 在vscode里进入这个文件夹,然后新建终端(直接运行bash即可进入bash终端),在终端中运行该代码
- 只有第一次上传需要写后面三个,以后直接git push
- origin表示仓库名字(疑问)
- -f指强制执行,最后不要用这个
git clone 地址
- 下载别人的代码也可以使用ssh地址
- 自己的可以用ssh地址
- 每次clone会下载所有分支
- clone完毕后cd进入文件夹
- git clone 地址 新名字
- 就可以在下载时重命名这个文件夹
- cd进入文件夹
- git clone 地址 .
- 先进入一个新文件夹,运行该行代码,即可直接将代码放在这个文件夹中
- 最好为空文件夹
总结
git add/git commit/[git pull]/git push 只有在远程代码变动,在git push时会提示需要先git pull
- git pull 是在我已经拥有本地仓库的前提下,只下载本地没有的那一部分变更