Git基础操作

1 git 流程

1.2 流程图

1.3概念即详解

本地仓库:是在开发人员自己电脑上的Git仓库,存放我们的代码(.git 隐藏文件夹就是我们的本地仓库)     
远程仓库:是在远程服务器上的Git仓库,存放代码(可以是github.com或者gitee.com 上的仓库,或者自己该公司的服务器)
工作区: 我们自己写代码(文档)的地方
暂存区: 在 本地仓库中的一个特殊的文件(index) 叫做暂存区,临时存储我们即将要提交的文件
------------
Clone:克隆,就是将远程仓库复制到本地仓库
Push:推送,就是将本地仓库代码上传到远程仓库
Pull:拉取,就是将远程仓库代码下载到本地仓库,并将代码 克隆到本地工作区

2 自定义指令

1.打开用户目录,创建.bashrc文件

部分windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行

$ touch ~/.bashrc
58367@AsherLin MINGW64 ~
$ vi .bashrc

2.在文件中输入如下内容

#用于输出日志提交
​
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'

3.打开gitbash,执行如下指令

$ source ~/.bashrc

3 ssh 密钥的生成

#生成公钥私钥
 ssh-keygen -t rsa
 一直回车即可
 会默认用户目录 .ssh 目录生成一个默认的id_rsa文件 和id_rsa.pub

3.1ssh 密钥配置

输入一下命令查看密钥:

cat ~/.ssh/id_rsa.pub

4. git基本操作

4.1 介绍

上述我们的操作 使用的 是客户端TortoiseGit 操作的git ,实际上底层依旧是使用的命令行帮我们执行, 在早期 git 并没有窗口化工具,开发人员只能使用命令行模式

实际上,如果你掌握并熟练使用了命令行模式操作git 的话,你会发现某些操作命令行比窗口化操作要简单,所有你在工作中会发现高深的技术人员可能会喜欢命令行模式提交git

4.2设置origin

git remote add origin <url>
​
#查看设置的origin
git remote -vj

4.3环境配置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息

#设置用户信息 
   git config --global user.name “itcast”
   git config --global user.email “itcast@itcast.cn”
#查看配置信息
   git config --list
   git config user.name
#通过上面的命令设置的信息会保存在~/.gitconfig文件中

4.4初始化本地仓库

# 初始化仓库带工作区
git init
# 初始化仓库不带工作区
git init --bare  

4.5克隆代码

# 从远程仓库克隆
git clone 远程Git仓库地址 
例如: git clone https://gitee.com/itcast/gittest.git

4.6查看状态 status

# 查看状态
git status 
#查看状态 使输出信息更加简洁
git status –s 

5.上传云仓库

add

# 将未跟踪的文件加入暂存区
git add  <文件名>  
# 将暂存区的文件取消暂存 (取消 add )
git reset  <文件名>  

commit

# git commit 将暂存区的文件修改提交到本地仓库
git commit -m "日志信息"  <文件名>  

上传到云端

git push origin master
git push origin master:lyh(分支)

删除 rm

# 从本地工作区 删除文件
git rm <文件名>  
# 如果本工作区库误删, 想要回退
git checkout head <文件名>  

6.远程仓库操作

6.1 查看远程

# 查看远程  列出指定的每一个远程服务器的简写
git remote 
# 查看远程 , 列出 简称和地址
git remote  -v  
# 查看远程仓库详细地址
git remote show  <仓库简称>

6.2 添加/移除远测仓库

# 添加远程仓库
git remote add <shortname> <url>
# 移除远程仓库和本地仓库的关系(只是从本地移除远程仓库的关联关系,并不会真正影响到远程仓库)
git remote rm <shortname> 

6.3 从远程仓库获取代码

# 从远程仓库克隆
git clone <url> 
# 从远程仓库拉取 (拉取到.git 目录,不会合并到工作区,工作区发生变化)
git fetch  <shortname>  <分支名称>
# 手动合并  把某个版本的某个分支合并到当前工作区
git merge <shortname>/<分支名称>
# 从远程仓库拉取 (拉取到.git 目录,合并到工作区,工作区不发生变化) = fetch+merge
git pull  <shortname>  <分支名称>
git pull  <shortname>  <分支名称>  --allow-unrelated-histories  #  强制拉取合并
# 常用以下强制拉取,包括仓库的历史记录,否则push可能会版本冲突
git pull --rebase origin master

注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数--allow-unrelated-histories (如上 命令)

# 将本地仓库推送至远程仓库的某个分支
git push [remote-name] [branch-name]

7. 分支

# 默认 分支名称为 master
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
git branch -a
# 创建分支
git branch <分支名>
# 切换分支 
git checkout <分支名>
# 删除分支(如果分支已经修改过,则不允许删除)
git branch -d  <分支名>
# 强制删除分支
git branch -D  <分支名>
# 提交分支至远程仓库
git push <仓库简称> <分支名称>	
# 合并分支 将其他分支合并至当前工作区
git merge <分支名称>
# 删除远程仓库分支
git push origin –d branchName

8.tag

# 列出所有tag
git tag
# 查看tag详细信息 
git show [tagName]
# 新建一个tag
git tag [tagName]
# 提交指定tag
$ git push [仓库简称] [tagName]
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
# 删除本地tag
$ git tag -d [tag]
# 删除远程tag (注意 空格)
$ git push origin :refs/tags/[tag]

常见错误

问题背景:

三个代码仓库:

云端华为云:包含三个分支,master aaa bbb

asherlin主机提交到aaa

haody主机提交到 bbb

问题1:云端和本地冲突

下面是haody主机提交到华为云的master报错

解决

面对当前分支和自己本地分支记录不一致,我们需要将云仓库的记录拉下来同步到本地

这里是因为ahserlin主机提交第五次更改到云端主分支,而haody主机本地没有这次提交记录导致不一致错误

用一下指令将华为云的记录拉下来:

git pull --rebase origin master

右图是haody执行后的迭代记录,发现多了第五次提交

这样我们再执行push即可顺利提交haody nineth到华为云的master分支上

问题2:云端bbb分支合并入master分支冲突

问题背景

haody主机提交了第八次到华为云分支bbb上

haody主机解决第一个问题后,顺利将第九次和第八次修改提交到华为云的master分支上

导致bbb分支和master分支不一致,无法正常合并

这种错误其实是不应该出现的,开发人员不应该直接将自己的代码提交到主分支,我们可以使用华为云在线修改冲突:我们应用源分支bbb,所有第九次的修改没有了

总结:

1.云上有的,本地必须有(所以pull) 本地有的,云上可以没有(可以push)

2.自己分支的修改放到主分支,分支和主分支修改历史有不一致

这里的不一致指的是我主分支已经更新到第九次,分支才第八次,就会冲突

但是如果说你分支更新到第九次,主分支更新到第八次,这样你合并是没有冲突的,或者说主分支上有其他人的更新和你不一致,也不会存在冲突

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值