一、创建新秘钥(ssh)
ssh -keygen -t rsa -C "邮箱地址" //生成秘钥
查看秘钥文件夹位置(路径地址)
1,输入 cd ·/.ssh //进入到.ssh文件夹
2,输入 ls 查看.ssh文件夹里有id_rsa id_rsa.pub known_hosts文件
3,输入pwd查看.ssh文件路径位置地址
二、配置用户和邮箱
1,全局设置用户名和邮箱
git config --global user.name "gitLab上的用户名"
git config --global user.email "gitLab上的邮箱"
2,针对项目,在项目根目录配置用户名和邮箱
git config user.name "gitLab上的用户名"
git config user.email "gitLab上的邮箱"
git config --list 查看当前配置, //在当前项目下面查看的配置是全局配置+当前项目的配置, 使用的时候会优先使用当前项目的配置
三、git查看本地全局配置信息
git config //config配置指令
git config --system --list //查看系统config
git config --global --list //查看当前用户配置
git config --local --list //查看当前仓库配置信息
git config user.name //查看user.name
git config user.email //查看user.email
修改全局配置信息
git config --global --replace-all user.name //修改user.name
git config --global --repalce-all user.email //修改user.email
四、从服务器拷贝文件到本地
scp -P 端口号 服务器登录账号@服务器地址:需要拷贝的文件路径 需要拷贝到本地的路径
五、从本地拷贝文件到服务器
scp 需要拷贝到本地的路径 服务器账号@服务器地址:需要拷贝的文件路径
六、从gitLab克隆项目到本地
1,克隆master分支方法
git clone gitLabel项目地址
2,克隆非master分支方法
1,git clone gitLabel项目地址
2,进入项目文件夹,git branch -r //查看远程分支
或者:git branch -a //查看所有分支
3,git checkout origin/需要的分支名
4,在本地创建与远程相同的,所需要的分支名git branch 需要的分支
5,在本地切换到需要的分支名上,git checkout 需要的分支名
七、从本地上传文件到gitLab服务器
1,本地进入项目文件夹,配置gitLab上的用户名和邮箱
2,把这个目录变成git可以管理的仓库:git init
3,关联到远程仓库:git remote add origin gitLab上的项目地址
//以上三步是项目第一次提交时,需配置的信息,后面提交按下面的几步操作
4,把文件夹下的所有文件添加到暂存区中:git add .
或者添加部分需要上传的文件:git add "需要上传的文件"
5,把文件提交到本地仓库:git commit -m "提交说明"
6,把本地仓库的内容推送到远程仓库:git push origin master
//把本地当前分支master推送到远程origin主机的master分支
八、查看远程仓库状态/远程仓库信息
git status //查看版本库状态,哪些文件被修改过还没有提交
git diff //查看当前相对上一次提交修改的内容
git remote //查看远程仓库信息
git remote -v //查看更加详细的信息
git log //查看提交记录
九、git修改远程仓库地址,三种方法
1,修改命令
git remote set-url [--push] <远程主机名称> <新的地址> [<旧的地址>]
例:git remote set-url origin git@zkgit.iask.in:zzh/demo.git
2,先删后加
git remote rm origin
git remote add origin [url]
3,直接修改配置文件(见二、配置用户和邮箱)
十、git commit之后,想撤销commit的命令
git reset --soft HEAD^
HEAD^ 的意思是上一个版本,也可以写成HEAD~1.
如果进行了2次commit,都想撤回,可以使用HEAD~2
几个参数:
- -mixed 不删除工作空间改动代码,撤销commit,并且撤销git add .操作。这个为默认参数,git reset --mixed HEAD^ 和git reset HEAD^效果是一样的。
- -soft 不删除工作空间改动代码,撤销commit,不撤销git add .
- -hard 删除工作空间改动代码,撤销commit,撤销git add .
git commit --amend 此时回进入默认vim编辑器,修改注释。
十一、git push命令详解
1,git push <远程主机名> <本地分支名>:<远程分支名>
注意:这里的“:”前后是必须没有空格的。
用于:将本地分支的更新,推送到远程主机。
2,git push origin master
表示:将本地的master分支推送到origin 主机的master分支。如果后者不存在则会被新创建。
使用场景:如果省略了远程分支名,则表示将本地分支推送与之存在“追踪关系”的远程分支(通常两者同名)。如果该远程分支不存在,则会被新建。
3,git push origin :master 等同于 git push origin - - delete master
(慎用!!!)表示:删除origin 主机的master分支
使用场景:如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
4,git push origin
命令表示:将当前分支推送到origin主机的对应分支
使用场景:如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
5,git push
命令表示:如果当前分支只有一个追踪分支,那么主机名都可以省略。
6,git push -u origin master
命令表示:将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push 了。
使用场景:如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push .
7,git push origin HEAD - -force //强推到远程
或者:git push origin +分支名
分支管理命令
git branch //查看本地分支
git branch -a //查看所属分支
git branch -r //查看远程分支
git branch -d 分支名 //删除<分支名>分支
git branch 分支名 //创建分支
git checkout 分支名 //切换到<分支名>
git checkout -b //在当前分支上创建新分支并切换到新分支上
git checkout commit ID //退到/进到 指定commit的sha码
git reset --hard HEAD^ //回退命令
git reset --hard HEAD~3 //回退到上个版本
git reset --hard commit_id //回退到n此提交之前
git merge 分支名 //将<分支名>的修改何如到当前分支上,
//在合入成功后将合入后的新文件进行提交
git merge origin/master //将远程主分支合并到本地当前分支
git log //查看提交记录
git push origin --delete <分支名> //删除远端分支
git pull //抓取远程仓库所有分支更新并合并到本地
git pull --no-ff //抓取远程仓库所有分支更新并合并到本地,不要快进合并
git fetch origin //抓取远程仓库更新
常见问题处理
一、gitHub更新被拒绝
错误提示:“提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。
提示:再次推送前,先与远程变更合并(如’git pull…’)
提示:‘git push - - help’中的’Note about fast-forwards’小节。”
原因:引起这个问题是远程仓库和本地不同步引起的。
解决方案:需要先获取远端更新并与本地合并,再git push
1,git fetch origin //获取远程分支更新
2,git merge origin/远程分支名 //把更新的内容合并到本地对应分支
二、要删除gitLab服务器中的项目文件
1,git rm -r - -cached 文件路径 //删除target文件夹(不删除物理文件,仅将该文件从缓存中删除)
2,git rm -f 文件路径 //删除文件(不仅将文件从缓存中删除,还会将物理文件删除,删除的文件不会回到垃圾桶)
3,git commit -m ‘删除了target’ //提交,添加操作说明
4,git push origin master //将本次更改更新到gitHub项目上去
三、windows平台push到github仓库,没有弹出输入密码的提示框,解决办法
在git终端上输入:
//用来清除掉缓存在git中的用户名和密码
git credential-manager uninstall