git排坑记


git还是不熟练,使用时依旧遇到很多问题,记录如下:

github网站,不稳定,好的解决方法??

备用网站,还是值得一试的

不知好奇还是怎的,从来没用过的一个命令git config --list 输入后,竟然一直出end没法退出???

解决:实际是按“q”键退出的。

如何在一台电脑上管理不同的git项目?

先来说下使用git步骤:也就是平时经常用的命令及相对的使用顺序:

  • 设置全局变量
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
  • 设置本地仓库,进入到本地仓库目录下,执行git init,将这个目录初始化为git可以管理的仓库。

  • 设置远程仓库,本地仓库与远程仓库间是通过SSH加密的,所以需要创建ssh-key.在C:\Users\guangod.ssh目录下,id_rsa和id_rsa.pub(公钥),到github或gitee上,将公钥填到对应的ssh-keys里就可以了。这一步,只能说本地电脑可以通过SSH向远程端传数据了。

  • 关联本地仓库,执行git remote add [shortname] [url],如:git remote add origin git@github.com:guangod/birld_pj,当然也可以将远程端的别名origin改成自己更容易记忆的名字,先使用git remote rm origin删除,然后再执行git remote add github git@github.com:guangod/birld_pj,添加其他名字。

  • 推送本地仓库内容到远程仓库。使用git push [remote] [branch],推送指定分支,这个比较常用。当然第一次推送时,可以使用git push -u [remote] [branch],命令使用本地和远程仓库关联起来。这样以后就可以简化操作。git push [remote] --all,推送本地所有分支。注:remote:就是上一步关联的远程仓库的别名。

  • 在家办公时,可以使用git clone -b [branch] [url],克隆远程仓库的代码,如:git clone -b hard_pj git@gitee.com:guangod/birld_pj.


    以上是基本的本地与远程交互的流程。本地的一个SSH可对应一个远程仓库,但远程仓库里的项目是可以是多个的,所以只要git remote add giteeblog git@gitee.com:guangod/blog,即可实现将博客的本地仓库推送到远程仓库里的博客项目。

    其他常用操作:关于命令记忆为:直接记住“目的”,就可以了,如git push +(推送到哪里,或哪里的哪个分支),clone±b+哪里的分支,深层次理解就是git基于本地和远程两个对象进行的操作,所以一般前提对象已经是限定好了,只需要把目的对象填上就可以了。
    git add .,添加当前目录所有的文档到暂存区
    git commit -a,提交工作区自上次commit之后的变化,直接到仓库区,可能会出现vim输入信息,使用:wq退出
    git commit -m "信息",提交暂存区到本地仓库区
    git checkout -b [branch],新建一个分支,并切换到该分支
    git rm [file1] [file2] ...,删除工作区文件
    git checkout [branch-name],切换到指定分支,并更新工作区
    git pull [remote] [branch],取回远程仓库的变化,并与本地分支合并

在另一电脑上传到远程仓库,在本电脑操作时,出现以下错误:
hint: Updates were rejected because the remote contains work that you do

hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push --help’ for details.
解决:具体含义为:远程端包含了本地端没有的更新,先不要直接在本地仓库目录位置pull,这样的话,本地端修改的会被远程端下载的覆盖,在别的位置先pull一份,再将本地改动的文件,复制到pull后的目录下,最后,删除原仓库,再将pull下的仓库移动到原来的位置即可,这样可以不丢最新的更新。

执行git pull命令时,总拉取不到最新的文件更改,只是更新了与本地不同的部分,其他文件也有更新,但没拉取到最新??

解决:按以下步骤执行:即可

git fetch --all  //拉取远程主机的全部更新内容,只是git里
git reset --hard origin/master  //让haed指针指向其他地方如,master
git pull [远程主机名][分支名] //拉取git里所有内容与本地合并

使用git checkout branch时,会保留原来分支的内容,如何做到不保留呢??

使用 git checkout -f newBranch强制切换到某个分支,放弃本地的修改即可。当然正常情况下最好是保存一下本地的修改。

Git Submodule命令的使用

Git Submodule 允许一个git仓库,作为另一个git仓库的子目录,并且保持父项目和子项目相互独立。

添加子仓库语法

$ git submodule add <仓库地址> <本地路径>,如执行如下:
git submodule add https://gitee.com/notrynohigh/BabyOS.git,向本地建好的仓库里添加babyos代码

fork watch star都有什么用?

frok:从别人的代码库中复制一份到你自己的代码库,是在服务器端的克隆。属于你自己,当然也可以pull request,把修改推给作者。前提是作者得接受。
Watch:关注,每当作者更新,就会收到信息。
Star:收藏,你可以方便地找到你star过的库,但是不会收到关于那个库的任何通知

permission denied (publickey)问题?

公钥过期问题。
先用 " ls ~/.ssh"这个命令查看是否存在公钥。有的话就不用管它了
确定最新的公钥位置。在"C:\Users"这个目录下,看一下哪个用户名文件夹下.ssh下公钥创建日期。很久的可删除,再重新生成一个,详见git深入操作之远程仓库管理

很久没使用git了,提交代码出现error: key does not contain a section,重新定义用户名和邮箱,也定义不了?

输入git config --global --edit,然后输入gitee 上定义的用户名和邮箱,即可。

Permission denied (publickey)问题

公钥丢失问题,ssh-keygen,重新生成一遍,然后记录下生成的位置,这个位置还不一定都是在c盘use下的。然后添加到gitee即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值