git常用操作

一、先创建本地项目的情况

场景:本地已经创建好了项目需要,需要把本地项目保存到远程分支

1、初始化git工程

【默认开始为master分支】

git init

2、配置.gitignore文件

touch .gitignore
vim .gitignore
# 配置完成忽略文件后...
# 需要先提交.gitignore文件,否则配置不能生效
git add .gitignore
git commit -m 'update .gitignore_0'

配置实例:

#忽略任意后缀为.mp4的文件
*.mp4
#忽略任意目录下.idea文件和其中内容
.idea/
忽略任意后缀为.iml的文件
*.iml
#忽略根目录和任意子目录下的target文件夹
target/

忽略文件的配置很重要,因为git一般有项目大小限制,上传时要有效过滤大文件。

查看工作区和暂存区状态

git status

3、把工作区内容提交到暂存区

git add <文件名>
git add .  # 提交全部文件

4、把暂存区内容提交到本地仓库

git commit -m '注释'

到此为止,本地的git仓库基本配置完成。

5、创建远端仓库

使用码云或github创建仓库,设置好分支。

6、本地关联远端仓库

git remote add <远端名称> <远端仓库地址>

远端仓库名称默认origin,用其他名称也是可以。实际上就是一个映射关系。

查看远程仓库

git remote

7、本地拉取远程库内容

git pull <远端名称> <分支名称>

如果出现错误信息:fatal: refusing to merge unrelated histories…
使用如下命令允许不相关历史进行提交:

git pull <远端名称> <分支名称> --allow-unrelated-histories

拓展:

从远程仓库抓取和拉取还有一种方式

git fetch <remote name> <branch name> 

git fetch 是从远程仓库获取最新版本到本地仓库,不会自动merge,因此需要手动合并。
在这里插入图片描述

8、检查本地文件和远端文件是否存在冲突

发生冲突的原因

在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。

A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户push故需要先拉取远程仓库代码,经过合并后才能推送代码。在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并冲突。

git status可以告诉我们冲突的文件,Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,之后进行判断保留哪个或者都保留,并删除标记符号。

之后把工作区中内容提交到暂存区,再提交到本地仓库即可。

此时B提交的新版本代码,相比于A又往前了一个版本。

9、本地仓库提交到远端仓库

git push <远端名称> <远端分支>

往后的操作都可以参考如下场景的操作情况…

二、先创建远端仓库的情况

场景:项目组长先在远程创建好仓库,设置好远程分支配置,接下来组员根据各自职责拉取远端仓库,各自在本地创建好自己的分支。这也是大部分的操作情况。

1、拉取远端项目

git clone <远端项目地址>

2、创建本地分支

git branch <分支名称>

查看分支

  1. 查看本地分支
git branch 
  1. 查看远程分支
git branch -r
  1. 查看所有分支
git branch -a

2.1、删除分支

  1. 删除本地分支
git branch -d <分支名称> #删除分支时,需要做各种合并冲突检查,检查失败,删除失败(自我尝试,需要把要删除的分支合并以后才能将其删除)
git branch -D <分支名称> #不做任何合并冲突检查,强制删除
  1. 删除远程分支
git push  origin –d <分支名称> #删除远程分支 (**谨慎操作**)

3、切换分支

在先有分支的基础上创建新的分支,会直接复制先有分支的内容。

git checkout <分支名称>

直接切换的分支的工作区,本地文件也会发生变换为当前分支的情况。

3.1、合并分支

合并<分支名>到当前分支,可能会存在冲突的问题

git merge <分支名>

4、提交修改的代码到本地仓库

git status
git add .
git commit -m '注释'

同之前的操作一样,来提交修改后的代码的本地仓库

5、回退版本

回退版本要求代码没有提交的到远端仓库,那么提交到本地仓库的代码可以回退到任意版本

git reset --hard HEAD^ #返回到上一个版本
git reset --hard <版本号部分信息> #只需要输入一部分就可以让Git去自动寻找

如果想回到未来,但是因为关闭了之前的命令框不能找到未来某一个版本的commit版本号。
Git查看你的每一次命令

git reflog
git reset --hard <版本号部分信息> #只需要输入一部分就可以让Git去自动寻找

6、提交本地仓库到远端仓库

这个操作之后便不能再直接修改远端代码了,只能重新拉取下来再走一遍提交流程。

删除暂存区缓存

git rm -r --cached .

忽略文件:.gitignore

1)以/开头表示只匹配根目录下文件夹
2)以?通配单个字符
3)以*通配多个字符
4)以方括号[]包含单个字符的匹配列表
5)以叹号!表示只跟踪某个文件或目录忽略其它文件或目录
.gitignore 配置文件是按行从上到下进行规则匹配的,如果前面的规则匹配的范围更大,则后面的规则将不会生效;

例子:

# 忽略根目录的任何.idea/文件夹和其中的内容
/.idea/
# 忽略根目录和任意子目录下的target文件夹
target/
# 忽略项目中任意后缀为.iml的文件
*.iml

如果已经添加到git中,并在.gitignore中已经配置,那需要再删除已经归档的文件

// 以删除.idea文件夹以及其中内容下为例
git rm --cached --force -r .idea

git commit -m 'removed .idea/*'

git push

Git结构图

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值