Git基础
# Git常用命令
# Git全局设置
设置用户信息
git config -- global user.name "xxx"————设置用户名,随便设git config -- global user.email "xxx.com"————设置用户邮箱,随便设查看配置信息
git config --list
# 获取Git仓库
从本地初始化一个Git仓库(不常用)
- 任意创建一个空目录,作为本地git仓库。
- 在 Git bash 中输入
git init,可以生成一个本地仓库
从远程仓库克隆
git clone+地址注意,仓库之间不能嵌套
# 工作区、暂存区、版本库 概念

# Git工作区中文件的两种状态
untracked未跟踪(未被纳入版本控制)- 新创建的文件,未执行
git add+(file/*)(可以指定当前文件 file,也可以指定*,表示提交所有)属于未跟踪状态
- 新创建的文件,未执行
tracked已跟踪(被纳入版本控制)Unmodified未修改状态——执行git commit命令后,被提交的文件,是未修改状态Modified已修改状态——提交文件后,对文件进行了修改,就是已修改状态Staged已暂存状态———— 执行git add *命令后,会将信息存入index文件中,属于暂存状态
# 本地仓库操作
git status——查看文件状态git add——将文件的修改加入暂存区git add *——对工作区所有文件执行操作git add user.txt——对工作区指定文件进行操作- 执行后,信息被存入
index文件下,文件状态由untracked变为Staged
git reset——将暂存区的文件取消暂存或者是切换到指定版本git reset user.txt——对工作区指定文件进行操作- 取消暂存状态,执行后文件状态更改为
untracked
- 取消暂存状态,执行后文件状态更改为
git reset --hard be17bf08e857f0ad8aff68df5f988dc7e20eab50- 会回到指定版本号的版本状态,版本号由
git log提供
- 会回到指定版本号的版本状态,版本号由
git commit——将暂存区的文件修改提交到版本库git commit -m "init" user.txt-m "init" 表示msg,本次提交要说明的信息,日志显示的时候,会显示该信息- 双引号内可以跟中文
- 执行后,状态由
Staged变为Unmodified
git log——查看日志- 执行后,会显示之前的
git commit信息
$ git log commit be17bf08e857f0ad8aff68df5f988dc7e20eab50 (HEAD -> master) Date: Mon May 16 15:09:16 2022 +0800 update user.txt commit 04a05f597aa85ca85c7cc0767828e497f0b320b3 Date: Mon May 16 14:56:33 2022 +0800 init- 执行后,会显示之前的
# 远程仓库操作
git remote——查看远程仓库git remote -v——查看详细信息
$ git remote -v origin https://gitee.com/diana-liangbing/hellogit.git (fetch) origin https://gitee.com/diana-liangbing/hellogit.git (push)git remote add——添加远程仓库(将本地仓库和远程仓库关联起来)git remote add origin https://gitee.com/diana-liangbing/repo1.gitorigin,不是默认,可改,但是推荐这个https://gitee.com/diana-liangbing/repo1.git,对应的远程仓库的链接
git clone——从远程仓库克隆git clone https://gitee.com/diana-liangbing/hellogit.git,将远程仓库克隆下来
git pull——从远程仓库拉取- git pull origin master
- git pull [remote-name] [branch-name]
- 作用是从远程仓库获取最先版本并合并到本地仓库
- 如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,在拉取的时候会报错
- 在
git pull后加参数--allow-unrelated-histories - 按
i进入插入模式,可以输入信息 - 输入完成,按 esc,退出编辑
- 输入
:wq保存并退出
- 在
git push——推送到远程仓库- git push origin master
- git push [remote-name] [branch-name]
- 将文件推送到远程仓库之前,要先提交到本地仓库
git add * git commit -m "init" 111.txt git push origin masterorigin表示远程仓库的名称,可以用git remote得到master表示当前分支,master是主分支,默认分支
git rm -r --cached .idea- 删除掉git文件列表里的文件,保留本地文件 ————
--cached - 在云端删除idea文件,但是本地保留着
- 删除掉git文件列表里的文件,保留本地文件 ————
# 本地仓库同时关联多个远程仓库
分开推送
首先查看当前本地仓库所关联的远程仓库
$ git remote -v origin https://gitee.com/diana-liangbing/hellogit.git (fetch) origin https://gitee.com/diana-liangbing/hellogit.git (push)然后添加额外的远程仓库
git remote add gitee https://gitee.com/xxx/xxx.git这里的重点在于
gitee这个,相当于额外命名了一个远程仓库;此时再去运行git remote -v$ git remote -v origin https://gitee.com/diana-liangbing/hellogit.git (fetch) origin https://gitee.com/diana-liangbing/hellogit.git (push) gitee https://gitee.com/xxx/xxx.git (fetch) gitee https://gitee.com/xxx/xxx.git (push)如果想要推送的话,需要分开推送
$ git push gitee master // 到gitee $ git push origin master // 到origin这种情况,适用于仓库较少,且需要区别管理的情况。
同步推送
如果仓库数量多,且需要同步进行推送,可以采用这个方法
$ git remote set-url --add origin https://gitee.com/xxx/xxx.git这样,多个仓库就都关联到了
origin上,同步推送的话,$ git push origin master // 同步推送
# 分支操作
同一个仓库可以有多个分支,各个分支相互独立,互不干扰,
git init时,会默认创建一个master分支git branch——查看分支git branch——列出所有本地分支- 当前分支是绿色的,且前加了※
git branch -r——列出所有远程分支git branch -a——列出所有本地分支和远程分支git branch -d b1——删除b1对应分支
git branch [name]——创建分支git branch b1——创建分支b1 --名字随便取
git checkout [name]——切换分支每个分支相互独立,本地仓库的文件显示的是当前分支的文件,可以看到b1分支有一个b1.txt,而master分支下没有
git checkout b1——切换到b1分支

git checkout master——切换到master分支

git push [remote-name] [branch-name]——推送至远程仓库分支$ git push origin b1-- 将b1分支推送到远程仓库 Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 remote: Powered by GITEE.COM [GNK-6.3] remote: Create a pull request for 'b1' on Gitee by visiting: remote: https://gitee.com/diana-liangbing/repo1/pull/new/diana-liangbing:b1...diana-liangbing:master To https://gitee.com/diana-liangbing/repo1.git * [new branch] b1 -> b1git merge [name]——合并分支git merge b1——现处在master分支,要合并b1分支下的文件合并冲突 (两个分支下都有这个文件,且文件内容不同,就会出现冲突)
$ git merge b1 Auto-merging b1.txt CONFLICT (content): Merge conflict in b1.txt Automatic merge failed; fix conflicts and then commit the result. --------------------------------------------------冲突时 master分支下 b1.txt内部文件------------------------------------------- b1 分支独有 <<<<<<< HEAD master修改了 ======= b1分支修改了 >>>>>>> b1冲突解决 (手动修改文件……)
- 手动修改文件,达到想要的结果
git addgit commit -m "手动修改了融合错误" *- 报错:fatal: cannot do a partial commit during a merge.
- 解决方法: 在原命令后面加
-i git commit -m "手动修改了融合错误" * -i---——错误解决
git push origin master

# 标签操作
- Git中的标签,指的是某个分支某个特定时间点的状态。通过标签,可以很方便的切换到标记时的状态
- 比较有代表性的是 人们会使用这个功能来标记发布节点(v1.0 v1.2)
git tag——列出已有标签git tag [name]——创建标签git tag v1
git push [remote-name] [tag-name]——将标签推送至远程仓库git push origin v1- 记录当前工作区状态,并完成上传
git checkout -b [branch] [tag-name]——检出标签(将当时标签标记的代码clone下来)- 检出标签时需要新建一个分支来指向标签
# Idea 集合Git
# 在IDEA中配置Git
设置——>git——>git可执行文件目录——>git.exe
# 获取Git仓库
新建本地仓库
vcs——>创建Git仓库
链接到远程仓库
VCS——>从版本控制中获取——>输入远程仓库的url
# 本地仓库操作
文件未加入暂存区(红色)
将文件加入暂存区(绿色)
- 创建文件时,自动提示,点击确定,即可加入暂存区
- 右键单击Git——>添加
将暂存区文件提交到版本库(黑色)
- 右键单击Git——>添加文件,前提是 必须在缓存区里面
- 简单方式 右上角 对号——>提交 ,不用先存暂存区,直接点√就可以
查看日志
- 简单方式 右上角 小表符号 可以查看日志信息
# 远程仓库操作
查看远程仓库
- 右键单击文件夹目录,Git——>管理远程
添加远程仓库
- 右键单击文件夹目录,Git——>管理远程——>+ 加号,— 减号,修改
推送至远程仓库
- 右上角 对号——>提交并推送 ,适用用还没有提交到版本库的文件
- 右上角 上箭头——>推送,适用于已经提交到版本库的文件
从远程仓库拉取
- 右上角 下箭头——>更新
# 分支操作
查看分支
- 右下角

创建分支
- 点开有个新分支
切换分支
- 点开,点击要切换的分支,最上面有个签出
将分支推送到远程仓库
- 点开,点击要切换的分支,点击推送
合并分支
- 点开,点击要切换的分支,点击合并或者基变
