使用指南:https://www.bootcss.com/p/git-guide/
github登录地址:https://github.com/login
2020,05,15shh和http的区别
1.clone项目:使用ssh方式时,首先你必须是该项目的管理者或拥有者,并且需要配置个人的ssh key。而对于使用https方式来讲,就没有这些要求。
2.push:在使用ssh方式时,是不需要验证用户名和密码,如果你在配置ssh key时设置了密码,则仅需要验证配对密码。而对于使用https方式来讲,每次push都需要验证用户名和密码。
github添加密钥
1>右键空白处,选择Git Bash Here
2>执行命令: ssh-keygen -t rsa 生成公钥和密钥
3>执行命令完成后,默认会在window本地用户.ssh目录C:Users用户名.ssh下面生成公钥和私钥
4>密钥生成后需要在github上配置密钥本地才可以顺利访问,点击右上角的头像,选择Settings
5>点击SSH and GPG keys,点击右侧的New SSH key
在Title处给该公钥取个名称,在Key部分将id_rsa.pub文件内容添加进去,然后点击“Add SSH key”按钮完成配置。
常用git命令:
一、如果是新建项目:
1、将项目内容放到文件夹下面,执行:git init、git add、git commit
2、在github创建一个项目;
3、将本地仓库关联到github上:git remote add origin ssh地址
4、上传到github上:git push origin 本地分支:远程分支
二、如果是已有项目
下载工程 git clone *******
git clone -b 分支名 *******
备注:
git克隆基本上是一个组合:
> git init(创建本地存储库)
> git remote add(将URL添加到该存储库)
git fetch(从该URL中获取所有分支到本地存储库)
git checkout(创建工作树中主分支的所有文件)
因此不必执行git init,因为它已经由git clone完成。
三、其他命令
1、查看已有的本地及远程分支 git branch -a
2、提交代码
提交到缓存区 git add 文件
提交到仓库区 git commit -m 'msg'
4、创建自己的分支 git checkout -b ********
并推送到远程, git push origin *******:*********
如果远程没有该分支则会自动创建 ,如果推个空分支(git push origin :***)则会删除远程分支,
5、删除远程分支
git push origin -d 不能删除默认分支(想删除远程的master必须将默认分支切换到其他分支)
删除本地分支:git branch -d ****
6、切换分支 git checkout *****
7、拉取指定分支代码到本地 git pull origin *******
8、查看历史版本:git log (显示简单的历史版本信息:git log --oneline)
9、切换版本:git reset --hard 版本号
四、其他场景
~~本地删除了文件a,但是master上还有a,git pull origin master时发现本地没有a(适用于所有本地修改文件,然后pull的操作)
解决办法:git stash 将本地的改变先储存起来,然后再执行 git pull origin master
其他参考:https://blog.csdn.net/qq_36898043/article/details/79431168
git stash:备份当前工作区的内容,保存到git 栈中,从最近的一次commit中读取相关内容
git stash pop:从git栈中获取到最近一次stash进去的内容,恢复工作区的内容。获取之后,会删除栈中对应的stash。
由于可能会stash多次,git使用栈管理,我们可以使用git stash list查看所有的stash
五、.gitignore文件语法
场景:通常有些内容是不需要上传git
#注释 .gitignore的注释 *.txt 忽略所有 .txt 后缀的文件 !src.a 忽略除 src.a 外的其他文件 /todo 仅忽略项目根目录下的 todo 文件,不包括 src/todo build/ 忽略 build/目录下的所有文件,过滤整个build文件夹; doc/*.txt 忽略doc目录下所有 .txt 后缀的文件,但不包括doc子目录的 .txt 的文件 bin/: 忽略当前路径下的 bin 文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件 /bin: 忽略根目录下的 bin 文件 /*.c: 忽略 cat.c,不忽略 build/cat.c debug/*.obj: 忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj **/foo: 忽略/foo, a/foo, a/b/foo等 a/**/b: 忽略a/b, a/x/b, a/x/y/b等 !/bin/run.sh 不忽略bin目录下的run.sh文件 *.log: 忽略所有 .log 文件 config.js: 忽略当前路径的 config.js 文件 /mtk/ 忽略整个文件夹 *.zip 忽略所有.zip文件 /mtk/do.c 忽略某个具体文件
六、merge
1、场景1
本地1修改了内容并对远程分支进行了push操作;
本地2修改了内容并对远程分支进行了push操作;
这个时候,本地2在push时会报错;
解决办法:先pull,然后手动修改内容,再 git add、git commit、git push如下截图