git 使用/一站式解决你遇到所有的问题

连接配置:

前述:

远程仓库是指托管在网络上的项目仓库,现在互联网上有很多项目托管平台,比如github、gitlab等。为了不公开自己项目代码,可以在自己的服务器上搭建自己的项目仓库,最常见的是搭建GitLab。

本地Git与远端服务器GitLab之间连接方式主要分为:SSH方式和HTTP方式。

HTTP方式:这种方式要求project在创建的时候只能选择“Public”公开状态,Private和Internal私有模式下不能使用http方式进行连接,如果考虑到安全性必须进行安全设置。
SSH方式:这是一种相对安全的方式,本地git仓库和远端gitlab仓库之间的传输是通过SSH加密,SSH方式在三种project模式下都可以使用。

生成SSH 密钥

在.ssh 目录下右键打开Git Bash(.ssh目录不存在,手动创建) 生成秘钥:ssh-keygen -t rsa -C
“your_email@youremail.com” ,直接Enter就行,然后会提示输入密码(可输可不输)
说明:命令中的email,就是gitlab中的账号,需要保持一致

GitLab添加公钥

在搜索框中搜索:SSH Keys 点击 Add SSH Keys
拷贝公钥文件(即上面生成的id_rsa.pub)中的信息到key输入框中,title可以随便起,见名知意即可。然后点击Add Keys。至此Git/GitLab连接配置完成。

关联本地库远程库
git remote add origin git@github.com:username/repostery.git  //关联本地仓库,远程库的名字为origin         
git push -u origin   //第一次把当前分支master推送到远程,-u参数不但推送,而且将本地的分支和远程的分支关联起来  master 
git push origin master        //把当前分支master推送到远程 
git clone git@github.com:username/repostery.git      //从远程库克隆一个到本地库

常用操作:

第一次创建分支并提交代码:
git init   #生成本地./git 文件
git add .  #添加需要上传的文件
git commit -m "**"  #双引号内对上传文件描述
git branch -a   #查看所有分支
git branch new   #创建new分支
git checkout new  #切换到new分支
git remote add origin url  
#关联远程仓库,添加后,远程库的名字就是 origin,这是 Git 默认的叫法,也可以改成别的,但是 origin 这个名字一看就知道是远程库。
git push origin new   #上传到gitlab的new分支
之后提交:
$ git add --all
$ git commit -m "信息"
$ git push
删除远程文件/文件夹

在github上只能删除仓库,却无法删除文件夹或文件, 所以只能通过命令来解决。首先进入你的master文件夹下, Git Bash Here ,打开命令窗口。

$ git pull origin master                        # 将远程仓库里面的项目拉下来
$ dir                                                    # 查看有哪些文件夹
$ git rm -r --cached test                      # 删除test文件夹
$ git commit -m '删除test文件夹'        # 提交,添加操作说明
$ git push -u origin master               # 将本次更改更新到github项目上去
提交部分:
git init //初始化代码仓库
git add learngit.txt    //把所有要提交的文件修改放到暂存区
git commit -m 'add a file'   //把暂存区的所有内容提交到当前分支
git status        //查看工作区状态
git diff        //查看文件修改内容
git log         //查看提交历史
git log --pretty=oneline       //单行显示
git reset --hard HEAD^ //回退到上一版本,(HEAD^^(上上版本),HEAD~100(往上100个版本))

其中说明 工作区(Working Directory)
版本库(Repository)
#.git stage(index) 暂存区
master Git自动创建的分支
HEAD 指针

git diff HEAD -- <file>   //查看工作区和版本库里最新版本的区别
git checkout -- <file>     //用版本库的版本替换工作区的版本,无论是工作区的修改还是删除,都可以'一键还原'
git reset HEAD <file>  //把暂存区的修改撤销掉,重新放回工作区。
git rm <file>        //删除文件,若文件已提交到版本库,不用担心误删,但是只能恢复文件到最新版本
分支
git checkout -b dev                                   //创建并切换分支
#相当于git branch dev 和git checkout dev
git branch                                                //查看当前分支,当前分支前有个*号
git branch <name>                                   //创建分支
git branch -a                                   //查看所有分支
git checkout <name>                                //切换分支
git merge <name>                                   //合并某个分支到当前分支
git branch -d <name>                               //删除分支
git log --graph                                          //查看分支合并图
git merge --no-ff -m 'message' dev            //禁用Fast forward合并dev分支
git stash                                                 //隐藏当前工作现场,等恢复后继续工作
git stash list                                            //查看stash记录
git stash apply                                         //仅恢复现场,不删除stash内容
git stash drop                                          //删除stash内容
git stash pop                                           //恢复现场的同时删除stash内容
git branch -D <name>                              //强行删除某个未合并的分支
//开发新feature最好新建一个分支
git remote                                               //查看远程仓库
git remote -v                                           //查看远程库详细信息

git pull                                                   //抓取远程提交
git checkout -b branch-name origin/branch-name                  //在本地创建和远程分支对应的分支
git branch --set-upstream branch-name origin/branch-name   //建立本地分支和远程分支的关联
拉取远程分支到本地进行开发

本地操作:

git init # 初始化
git remote add origin git@github.com:XXXX/nothing2.git #关联远程仓库
git fetch origin dev(dev为远程仓库的分支名)#把远程分支拉到本地,git fetch是拉取所有分支
git checkout -b dev(本地分支名称) origin/dev(远程分支名称) #在本地创建分支dev并切换到该分支
git pull origin dev(远程分支名称) #把某个分支上的内容都拉取到本地

远程分支本地看不到

直接git fetch进行更新一下,再进行git branch -a就可以看到了。

项目太大,git clone总是网络错误

git clone --depth=10 xxxx

想要将当前分支a,merge到某个分支b

先切换到某个分支b,再进行git merge a即可

基于某个分支a,新拉取一个分支b

切换到分支a,再git checkout -b b,新建分支b,再切换到分支b,将该分支推到远程 git push -u origin b,这样,远程库就能看到该分支了。

撤销上一次commit操作

第一种情况,如果还没有push,只是在本地commit,执行git reset --hard <commit_id> ,进行退回即可
第二种情况,如果已经push:git revert <commit_id>

强制将远程上代码覆盖本地:

git fetch --all
git reset --hard origin/master
git pull

提交merge时出现冲突,pull遇到错误:error: Your local changes to the following files would be overwritten by merge:

如果想要保留本地修改:

git stash  #本地快照
git pull origin master  
git stash pop  #发生冲突的本地修改还在

如果不想保留修改:

git reset --hard  #直接将本地的状态恢复到上一个commit id
git pull origin master

参考:git如何删除已经提交的文件夹
Git 删除远端不需要的目录
git 拉取远程分支到本地

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值