你常用的Git,这里都有~

不忘初心,方得始终~~喵~

文章是供自己平时学习使用,里面添加了一些自己的理解,如有错误欢迎指正


1、

git地址

分为两种,一种是https类别的,另一种是ssh类别的,一般我们clone项目代码都是使用ssh类型的地址,通过右侧绿色箭头所指的复制图标就可以直接复制绿色框里的地址,使用也是十分简单,只要在电脑上执行下面的命令即可:
在这里插入图片描述
找到你想要拉代码的目录,clone代码:

clone项目:git clone ssh地址/https地址
(当然通过复制图标旁边的下载图标也可以将代码下载下来)

说句题外话,通过https clone下来的代码,如果想改Ip地址很方便,可查看这篇文章

复制下来后,通过编译器打开(我常用vscode)后是处在master(主分支)上的,此时我们要创建一个分支,然后切换到该分支上,如果你在git上建过分支,直接切换到该分支即可:

创建分支的两种方法:

	1、 git上创建:通过new branch 创建分支,填写相关信息即可

在这里插入图片描述
下一张图:
在这里插入图片描述

	2、 命令行创建:git  branch  分支名
        切换分支: **git  checkout  分支名**
创建并切换到新分支: git checkout -b 分支名
查看远程分支:git branch -a
查看本地分支: git branch (带*的或者颜色高亮的代表当前所在分支)

2、

代码上传流程

当项目完成push代码时,因为多数情况是多人合作项目,在同一个分支上进行开发,为了防止我们push的代码将别人提交的代码抹去,应先pull一下,将别人上传的代码拉到本地,再把自己修改的上传上去,常用顺序:

  • 更新项目代码:git pull
  • 查看代码更改:git status (这个命令会在vscode中显示你所修改的文件+新添加的文件+删除的文件)
  • 将代码上传到暂存区: git add . (git add . 代表将所有修改的都上传到暂存区,若只想上传某个文件:git add 文件路径)
  • 增加上传描述(必需的):git commit -m “对于此次上传文件的描述”
    - 将代码push到分支上: git push

3、

本地生成ssh keys命令

(终端输入):ssh-keygen -t rsa -C “注册的gitlab邮箱”
(后面有一些设置不需要单独处理,一路回车即可,成功之后大概长这样)
在这里插入图片描述

4、

添加公钥

查看公钥内容(终端里输入):cat ~/.ssh/id_rsa.pub
(以ssh-rsa开头的一大串全都是,全部复制下来加到git公钥里)
点击用户头像,在user Settings中找到 SSH Keys,根据提示添加(没截图),添完长这样:在这里插入图片描述

撤销commit到本地但是还没有push到服务器的代码:

git reset HEAD~1

5、

本地创建分支后push代码提示The current branch your_branch_name has no upstream branch解决

如果你是在本地用命令创建的分支,那你需要三步来完成:

  1. 本地用命令行创建分支,切换到该分支

此时如果你提交代码,会提示当前分支没有远程分支,如下:

fatal: The current branch your_branch_name has no upstream branch.
   To push the current branch and set the remote as upstream, use 
   git push --set-upstream origin your_branch_name

这代表你没有给你当前的本地分支设置远程分支,这是第二步,设置远程分支:

  1. 将本地分支推送到远程分支: git push origin 分支名

  2. 第三步将本地分支和远程分支关联起来(一般情况下远程分支名和本地分支名是一样的):

git branch --set-upstream-to=origin/远程分支名 本地分支名

然后再提交代码就可以了。

当然也可以在本地创建分支时就设置远程分支:
git checkout -b local_branch -t upstream_name/remote_branch

6、

删除本地分支并重新拉取远程分支

有时我们需要将本地分支删除,然后再重新从远程分支拉取:

  1. 假设你要删除的分支叫test001,那我们先切换到另一个分支上
  2. 然后执行git branch -d test001,将test001删除,这步是删除我们本地的分支
  3. 重新拉取远程仓库代码,并自动创建本地分支:git fetch origin test002:test002
  4. 切换到本地分支test002,git pull时会提示没有关联分支(如下图),此时可以按照提示执行git branch --set-upstream-to=origin/远程分支名 本地分支名
    在这里插入图片描述7、

暂存代码

有时我们需要将现在更改的代码暂存起来,然后去处理一些其他的事情,这时可就用到:

  • 暂存代码:git stash
    当我们修改完其他代码需要继续之前没有完成的暂存的代码时,需要用到(这样就可以把之前没有改完的代码取出来啦):
  • git stash apply
8、删除远程分支: git push origin --delete 分支名
删除完后可以通过git branch -a或者去git仓库搜索查看分支是否删除成功

在这里插入图片描述
9、

退出分支合并

git merge --abort :简单地退出合并(指提交(commit)了但是没有push的代码)。

10、

撤销合并

如果合并完成后(push操作已完成)才发现错误,你还是可以撤销它,你需要键入 :

  • git reset --hard commitid
  • git reset --hard commitid 并不是回滚操作,只是切换操作,而且只是本地操作不影响远程.
  • 如果想要回滚远程,还需要在git reset --hard commitid执行完成后执行命令: git push -f 来强制提交到远程,这个时候远程代码就被回滚掉了
    (⚠️ 这条命令只适合撤销的代码是最后一次提交的代码,撤销后不会留下操作记录,并且会将回滚的那条提交记录也一并抹去,可以通过git reflog查看回滚的操作记录,

原因:reset是将代码回滚,比如我提交的是1,2版本,队友提交的是3,4版本,代码提交顺序是1–>2–>3–>4,现在我通过reset想回滚到2版本,那么你队友的3版本和4版本的提交就没有了 ~~而且如果是公共分支,当别人本地也有你要回滚的代码,此时你再回滚的话,别人本地的代码并不会因为远程代码的回滚而消失,需要删除别人本地分支重新拉取远程分支才可,所以比较适合个人的开发分支,不适合多人共用的分支)

11、那我想留下队友的版本又想改自己的怎么办?那就需要用到revert,
原因:revert是在当前提交后面新增一次提交,不会改变历史提交,所以也不会丢代码(刚刚的例子用revert后显示的提交顺序1–>2–>3–>4–>新改的2)
用法:请自行百度。。。。 git revert 要更改的提交ID

12、

合并提示

有时合并时会提示: 你为什么要创建此次合并, 这时我们就可以按如下方式操作:

  1. 按“ i ” 写后填写您的合并消息
  2. 按“ ESC ”
  3. 写“ :wq ” 然后按回车

13、

反合master分支

推荐第一种方法:
在想要反合master分支的分支执行命令: git pull origin master

第二种方法:

  1. 切换到master分支:git checkout master

  2. 将代码pull到本地:git pull

  3. 切换到你所在分支: git checkout 分支名

  4. 合并代码: git merge master --> 解决冲突

  5. git add . -->git commit - m “提交信息” ( 如果此处遇到提交前的检查,而这些检查没有必要,你就可以跳过检查,强制提交(命令):git commit - m “提交信息” --no-verify )

  6. git push

14、

将代码合并到master分支

1、切换到master分支,然后git merge 要合并的分支(记得pull代码,此时合并的是要合并的分支的本地分支的代码)
2、直接在master分支执行命令: git pull origin 要合并的分支, 此命令会自动将要合并的那个分支远程分支的代码合并到master,不会合并本地分支代码进master

ps: 在本地的分支代码为本地分支代码, 在git 仓库中的分支代码为远程分支代码, 这两个分支的代码未必相同,
这取决于你是否执行了本地回退操作或者git pull操作或者本地提交了commit 但没有push到远程

15、

查看分支合并图

用git log --graph命令可以看到分支合并图

16、

查看储藏列表

git stash list可以查看储藏列表

17、

查看某一次的储藏内容

git stash apply @{index} 可以查看某一次的储藏内容,index为储藏列表的下标

18、

超大项目浅克隆

只克隆最近一次 commit 记录, 可指定分支, 应应急还是可以的

git clone --depth=1 git克隆地址

该方法使用后遗症请看这篇

19、

提升git clone 速度

1、 在终端分别执行以下两条命令获取对应的 ip地址

nslookup github.com
nslookup github.global.ssl.fastly.Net

把两条命令红框位置的ip和域名加到hosts里
在这里插入图片描述
2、打开hosts文件(mac命令: sudo vi /etc/hosts) , 在后面配置上对应的地址及ip

配置方法:

  • 1、输入小写的 “ i ” ,然后把鼠标移到最后一行添加内容
  • 2、添加完成后按 “esc”键, 输入 “:wq”, 即可保存退出
  • 3、若不想保存退出则按 “esc”键后输入“:q”, 即可退出
    在这里插入图片描述
    在这里插入图片描述
    3、清除本地dns缓存命令:
sudo dscacheutil -flushcache

然后再尝试git clone 速度就会比较快啦~

20、

报错: error: RPC failed; curl 18 transfer closed with outstanding read data remaining

因为缓存区溢出curl的postBuffer的默认值太小,需要增加缓存
使用git命令增大缓存(单位是b,524288000B是500M左右, 1048576000 是 1G)

git config --global http.postBuffer 524288000

使用git config --list查看是否生效

21、

修改git 全局下载限制

git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 9999

问题: 访问git 提示 Could not read from remote repository.

2019.11.28:
今天遇到一个十分头疼的事情, 就是访问git 时一直提示:

ECONNECT xxxxxxx: Proxy Authentication Required
ssh_exchange_identification: Connection closed by remote host
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

修改git配置的密码

查阅很多文档, 发现问题是我没有修改git配置的密码(mac):

  1. cd ~/.ssh
  2. ls查看目录
  3. 找到config文件: open config
  4. 发现最后一行里的密码仍然是老的密码, 将老密码更改为新密码后, 这个问题就解决了…
  • 如果你遇到这个问题, 那是说明你一开始创建密钥的时候输入了密码: Enter passphrase for key ‘/Users/XXXXXXX/.ssh/id_rsa’
  • 执行: ssh-keygen -p, 回车即可,不设置新密码, 最后会依次提示:
Enter file in which the key is (/Users/XXXXXX/.ssh/id_rsa): 
Enter old passphrase: 
Key has comment 'XXXX@XXXX'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.
  • 这样就不必再一直输入密码了

目前能想到的基本就是这些了,以后有遇到再补充

参考文章:
https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%AB%98%E7%BA%A7%E5%90%88%E5%B9%B6
https://blog.csdn.net/weixin_38154321/article/details/80676939
https://www.git-tower.com/learn/git/ebook/cn/command-line/advanced-topics/merge-conflicts
https://www.jianshu.com/p/57f98c22ba4b
https://blog.csdn.net/qiwoo_weekly/article/details/128710769
https://www.u72.net/IT/show-56580.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值