ubuntu git入门使用和部分错误处理

入门教程

参考廖雪峰的git 教程: https://www.liaoxuefeng.com/wiki/896043488029600
建议第一次使用时先新建个文件夹试试看,不要用工作文件,出问题的话会很难过的……

简单步骤

安装

sudo apt-get install git

创建版本库

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

新建文件readme.txt,内容随便写

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

  1. 使用命令git add <file>,注意,可反复多次使用,添加多个文件;

git add readme.txt

添加文件夹内全部文件: git add .

  1. 使用命令git commit -m <message>,描述要提交的信息,完成。

git commit -m "wrote a readme file"

这里有幅图可以解释每个命令的作用: 在这里插入图片描述
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

git status查看状态

添加远程仓库

  1. 创建SSH Key

ssh-keygen -t rsa -C "youremail@example.com"

  1. 登陆GitHub,打开“Account settings”,“SSH Keys”页面:
    点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:(新版有变化,但换汤不换药。)

在这里插入图片描述

  1. github上新建仓库
    在这里插入图片描述
  2. 把一个已有的本地仓库与远程仓库关联
    git remote add origin git@github.com:*your_account*/learngit.git

然后,把本地库的所有内容推送到远程库上
git push -u origin master
这是第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

(根据英文提示敲就好了)在这里插入图片描述

版本回退

git reset --hard HEAD^ //上一个版本
git reset --hard 1094a //1094a:版本号

git checkout -- file:丢弃工作区的修改: git checkout -- readme.txt

如果 git add 到暂存区
用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区,然后丢弃工作区的修改: git checkout -- readme.txt

创建与合并分支

Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>
分支的解释:
1.
在这里插入图片描述
2.
创建+切换分支:git checkout -b <name>
git checkout -b dev
git branch命令查看当前分支:

$ git branch
* dev
  master

在这里插入图片描述
3. 在dev上,修改部分文件内容,比如对readme.txt进行修改,然后提交:
git add readme.txt
git commit -m "branch test"
这是,master和dev指向就不一样了
在这里插入图片描述
现在,dev分支的工作完成,我们就可以切换回master分支:

$ git checkout master
Switched to branch 'master'

切换回master分支后,再查看一个readme.txt文件,改变不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:
在这里插入图片描述

  1. 把dev分支的工作成果合并到master分支上:
    git merge dev
    使用Fast forward模式
    在这里插入图片描述
  2. 删除dev分支 git branch -d dev, 查看分支:
$ git branch
* master

在这里插入图片描述
6. 不使用Fast forward模式,
git merge --no-ff -m "merge with no-ff" dev
merge后就像这样:

在这里插入图片描述
End:Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:
在这里插入图片描述

切换远程仓库地址

1、切换远程仓库地址:
方式一:修改远程仓库地址

【git remote set-url origin URL】 更换远程仓库地址,URL为新地址。

方式二:先删除远程仓库地址,然后再添加

【git remote rm origin】 删除现有远程仓库
【git remote add origin url】添加新远程仓库

2、【git remote -v 】查看远程仓库的地址

参考:https://blog.csdn.net/yihanzhi/article/details/78801027

错误处理

删除本地SSH并新建一个ssh

如果出现下面几种情况,都可以试着用这个方法:

  1. Saving key “~/.ssh/id_rsa” failed: No such file or directory
  2. Saving key “/home/username/.ssh/id_rsa” failed: Permission denied
  3. Saving key “/home/username/.ssh/id_rsa” failed: Is a directory
  1. cat ~/.ssh/id_rsa.pub 查看现有是否存在ssh,且ssh是否是自己的

  2. 如果是ssh问题则在git仓库同目录 删除.ssh文件夹 (隐藏文件夹)
    sudo rm -rf ~/.ssh

判断删除成功: cat ~/.ssh/id_rsa.pub
出现/.ssh/id_rsa.pub: No such file or directory

  1. 重新创建ssh ssh-keygen -t rsa -C "your_email@example.com"

一路回车

  1. 在ssh文件夹下pub文件中的内容复制 github上新建一个ssh链接
    参考: https://blog.csdn.net/yemoweiliang/article/details/53215979

更新被拒绝

error: 无法推送一些引用到 ‘git@github.com:***/***.git’
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 ‘git pull …’)。
提示:详见 ‘git push --help’ 中的 ‘Note about fast-forwards’ 小节。

原因可能是之前上传时创建的.git文件被删除或更改,或者其他人在github上提交过代码.

解决方案如下:
1.使用+master 强制更新
git push -u origin +master

2. 尽量先同步github上的代码到本地,在上面更改之后再上传
git pull origin master

(这时候会出来一个问你合并的理由,你自己看着写)
press F2 退出

git pull origin master master

然后再git push 就好了
git push -u origin master

参考: https://blog.csdn.net/qq_44919293/article/details/89451128
https://www.jianshu.com/p/28e490cd3a19

fatal: 远程 origin 已经存在。

  1. git remote rm origin
  2. git remote add origin git@github.com:your_account/learngit.git
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值