直接步入正题:
我们在首次创建远程仓库,提交代码的时候一般有如下步骤:
git init
git add .
git commit -m 'xxx'
git remote add origin https://xxx
git push --set-upstream origin master

注意下方提到的的hello.txt只是一个例子文件,实际情况根据自己而定
●●●●●凭据管理器
●●●●●git init
●●●●●git add hello.txt
●●●●●git commit -m 'first commit' hello.txt
first commit指的是版本号
●●●●●git status
●●●●●git clone https://xxxx
●●●●●
git config --global user.email "github的邮箱"
git config --global user.name "github的用户名"
配置提交者的账号和用户名称
●●●●●git fetch http:// xxx
一旦远程主机的版本库有了更新,需要将这些更新取回本地,这时就要用到git fetch命令。将某个远程主机的更新,全部取回本地
●●●●●git rm --cache hello.txt
撤销(删除)暂存区里的文件
●●●●●git rm -f hello.txt
撤销(删除)暂存区和工作区(本地文件)里的文件
●●●●●git reset(删除错误提交的commit)
git reset有三个选项,--hard、--mixed、--soft
git reset --soft 版本库ID
仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
git reset --mixed 版本库ID
仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset --hard 版本库ID
彻底将工作区、暂存区和版本库记录恢复到指定的版本库
那我们到底应该用哪个选项好呢?
(1)如果你是在提交了后,对工作区的代码做了修改,并且想保留这些修改,那么可以使用git reset --mixed 版本库ID,注意这个版本库ID应该不是你刚刚提交的版本库ID,而是刚刚提交版本库的上一个版本库。如下图:
(2)如果不想保留这些修改,可以直接使用彻底的恢复命令,git reset --hard 版本库ID。
(3)为什么不使用--soft呢,因为它只是恢复了版本库,暂存区仍然存在你错误提交的文件索引,还需要进一步使用上一节的删除错误添加到暂存区的文件
●●●●●git rm hello.txt
删除文件
●●●●●git rm git rm -r 目录名/
删除指定目录以及目录下的所有文件和子目录
●●●●●git diff
查看对比文件修改前和修改后的变化
●●●●●git reflog
查看精简版本号、作者、信息
●●●●●git log
查看详细版本号、作者、信息
●●●●●git reset --hard 版本号(这里写精简版本号就可以)
●●●●●cat hello.txt
查看hello.txt文件内容
●●●●●vim hello.txt
创建hello.txt文件
步骤:
(1)i 键(开始输入内容)
(2)编辑完成Esc键退出编辑模式转换到一般模式,然后:wq推出编辑并保存(其他命令参考文档)
●●●●●ll(注意这是两个小写字母l,不是数字1)
查看当前目录下文件信息
●●●●●git branch -a
查看当前有那些分支
●●●●●git branch 分支名
创建分支
例如:git branch class1
●●●●●git checkout 分支名
切换分支
●●●●●git branch -v
查看分支信息
●●●●●查看当前使用的版本号
.git/refs/heads/分支名
例如:.git/refs/heads/master或者.git/refs/heads/class1
●●●●●git merge 分支名
例如:现在在master分支上使用git merge class1可以将class1分支以master分支为基准合并到一起
★★合并冲突
原因:例如在master分支对hello.txt文件修改了一部分内容,并且add和commit完成之后,又在class1分支上对同一个文件hello.txt文件进行了修改并且add和commit完成,此时合并就会造成冲突(造成冲突时后面小括号会显示(master|MERGING)就是正在合并中)
解决方法步骤:
(1)vim hello.txt进入文件把不需要的删除(包括类似<<<=====>>>>特殊符号)
(2)git add hello.txt
(3)git commit -m '合并测试'(——注意这里提交的时候不要添加文件名)
此时合并成功,并且后面小括号内容恢复正常
注意:合并分支只会修改(这里是master)的内容,并不会修改(这里是calss1)的内容
●●●●●git remote -v(remote翻译过来是遥远的,在这里指远程仓库的地址)
查看别名(别名就是链接比较长,使用别名简写链接,创建好之后查看别名会出现fetch和push两个,表示fetch和push都可以用着别名)
●●●●●git remote add 别名 链接
创建别名
●●●●●git push 别名/链接 分支名
推送到远程仓库
例如:git push gitTest master
●●●●●git pull 别名 分支名
拉取远程仓库
●●●●●注意:如果远程仓库代码和自己的代码不一致时,先pull远程仓库代码,保证自己代码是最新版本再修改
●●●●●远程仓库
(1)复制/克隆http版的链接
(2)git remote add 别名 链接
(3)git push 别名/链接 分支名
●●●●●fork远程仓库
(1)git clone 链接(注意clone完之后会自动创建别名(此时别名为origin))
(2)修改完之后需要add和commit然后再push
注意:如果使用的是同一个电脑,需要把凭据管理器中的账号信息删除,如果远程仓库没有设置clone权限,那么就不需要登录帐号了
注意:
(1)使用push推送时选择好分支
(2)当报错“拒绝合并不想管历史记录”时可以使用git pull gitTest master --allow-unrelated-histories先拉取,
理解:--allow-unrelated-histories
远程仓库和本地的没有一个共同的 commit 所以 git 不让提交,认为是写错了 origin ,如果开发者确定是这个 origin 就可以使用 --allow-unrelated-histories 告诉 git 自己确定
(3)当B账号push没有权限的时候,需要A账号在远程仓库中
—>找到setting
—>找到管理账号
—>下面邀请成员(输入B账号)
—>会出现一个邀请函(复制发送该链接给B)
—>然后B在自己远程仓库打开该链接(点击同意)
—>此时获得权限后就可以在远程仓库看到A账号代码了(此时就可以推送了,并且两人都可以看到代码)
—>此时B就可以git pull 别名/链接 master拉取代码(也可以看到修改后的代码了)
(4)A修改完之后也可以通过Pull Request方法发送给B,然后B在Pull Request中就可以看到请求,并且可以在下面回复信息聊天,如果代码可以,就点击合并代码
●●●●●SSH
ssh作用:此windows连接该账号就不需要重复输入密码了(如果没有设置ssh密钥,远程仓库中的SSH会弹出警告框)
步骤:
1.C盘—>用户/asus—>运行git
2.ssh-keygen -t rsa -C 描述内容
-t 指定加密算法生成方式
rsa 著名非对称加密协议
-C 描述
3.一路回车,然后会生成 id_rsa(公钥) 和 id_rsa.pub(私钥) 两个文件夹
4.复制公钥的全部内容粘贴到远程仓库中的SSH公钥/SSH keys
5.此时cd到指定目录然后也可以通过SSH链接进行pull和push了
问题:每次进行git操作(如clone pull等)都需要ssh/id_rsa 输入密码
解决方案:执行如下命令
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
效果如下图:
●●●●●忽略文件
步骤:
1.C盘—>用户/asus—>创建xxxx.ignore文件(在里面指定不需要上传的文件)
—>并且在.gitconfig文件中引用
引用方式:
[core]
excludesfile = C:/Users/asus/xxxx.ignore(具体参考文档,根据自己情况设置,注意:要使用正斜线/,不要使用反斜线\)
2.在编辑器中定位git程序(设置—>版本控制—>git—>目录设置(git/bin/git.exe)—>这里视频使用的idea还可以点击test测试一下,显示出git版本号表示编辑器idea定位到了git程序,其他编辑器不确定有没有test测试按钮)
3.完成步骤一(设置忽略文件)和步骤二(定位git程序)此时编辑器就可以使用git了,这是准备环境。
4.设置VCS(版本控制工具)
—>Import into Version Control(导入到版本控制中)
—>Create Git Repository(创建Git存储库)
—>选中git目录点击确认
—>查看图形化界面项目目录中出现 .git 文件表示设置成功
(git中红色文件表示未追踪,没有添加到暂存区中)
●●●●●解决红绿色图标不显示问题
步骤:
1.首先需要有tortoiseGit插件
2.命令窗运行regedit.exe
3.HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer
4.Max Cached Icons 数据2000(没有就创建)
5.HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
6.将所有TortoiseGit...文件前面加空格保持在文件ShellIconOverlayIdentifiers的最前面(空格越多越靠前)
7.重启电脑才会生效
●●●●●如果使用编辑器登录github账号多次失败情况,可以使用token口令登录,口令可以在远程仓库设置中生成(生成口令时可选权限,注意:口令生成之后刷新页面就没了,是找不到的,如果需要只能再生成一个口令)
●●●●●如果在编辑器内使用pull push 等功能时需要切换好分支
●●●●●github由于网络原因下载不下来,可以使用gitee把github代码复制一份
步骤:进入gitee新建仓库,什么都不需要点,直接点击导入已有仓库,复制github克隆https链接,然后粘贴直接创建
(如果github版本更新了,可以点击gitee中项目名称后面的一个刷新图标,就可以同步最新版本了)
●●●●●创建一个.gitignore文件,里面指定要忽略的文件类型,然后这些文件就不会被跟踪
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules/
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea/*
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?