git | git 2023 详细版
创始人
2024-05-31 22:45:48
0

文章目录

  • 一、Git命令
    • 1.2 设计用户签名
    • 1.3 初始化本地库
    • 1.4 查看本地库状态
    • 1.5 添加至暂存区
    • 1.6 从暂存区删除
    • 1.7 将暂存区的文件提交到本地库
    • 1.8 查看版本信息
  • 二、Git分支
    • 2.1 查看分支
    • 2.2 创建分支
    • 2.3 切换分支
    • 2.4 合并分支
  • 三、GitHub
    • 3.1 代码克隆clone
    • 3.2 给库取别名
    • 3.3 推送本地分支到远程仓库
    • 3.4 拉取远程库
    • 3.5 邀请加入团队
    • 3.6 idea集成GitHub
      • 3.6.1 配置忽略文件
      • 3.6.2 定位 Git 程序
      • 3.6.3 集成 Git
      • 3.6.4 切换版本
      • 3.6.5 创建分支
      • 3.6.6 切换分支
      • 3.6.7 合并分支
      • 3.6.8 解决冲突

在这里插入图片描述

一、Git命令

如果出现了下面的报错,是因为复制粘贴时 git 前面不小心多加了个空格,算了个字符就会报错,删掉即可解决

bash: $'\302\203git': command not found

基于开发命令中常用的git命令

1.2 设计用户签名

-- git config --global user.name 用户名
git config --global user.name ffideal
-- git config --global user.email 邮箱
git config --global user.email 1359975xxx@qq.com

1.3 初始化本地库

git init

1.4 查看本地库状态

哪个分支、哪些文件、只要库被修改且未被追踪工作区

git status

测试结果

On branch master
Your branch is up to date with 'origin/master'.Changes to be committed:
.... 

修改一个文件之后

$ git status
On branch master
Changes not staged for commit:(use "git add ..." to update what will be committed)(use "git restore ..." to discard changes in working directory)modified:   hello.javano changes added to commit (use "git add" and/or "git commit -a")

1.5 添加至暂存区

-- git add 文件名
git add hello.java

1.6 从暂存区删除

git rm --cached hello.java

注意:工作区中 hello.java 还在的

1.7 将暂存区的文件提交到本地库

-- git commit -m "日志信息" 文件名
git commit -m "我的第一个提交的java文件" hello.java

测试结果

dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$ git commit -m "我的第一个提交的java文件" hello.java
[master (root-commit) cbe2bf8] 我的第一个提交的java文件1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 hello.java

1.8 查看版本信息

-- 查看版本日志信息
git log
-- 查看版本详细日志信息,包括版本号、提交者、日期、日志信息
git reflog

测试结果

dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$git creflog
cbe2bf8 (HEAD -> master) HEAD@{0}: commit (initial): 我的第一个提交的java文件dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$ git log
commit cbe2bf893a34fa9790374af38260b6bcf272137f (HEAD -> master)	-- 版本号
Author: FFIDEAL 	-- 提交者
Date:   Fri Oct 14 19:29:18 2022 +0800	--日期我的第一个提交的java文件		-- 日志信息

⑧ 版本穿梭(切换不同的版本)

git reset --hard cbe2bf893a34fa9790374af38260b6bcf272137f

测试结果

HEAD is now at cbe2bf8 我的第一个提交的java文件

这命令可以让指针指向相应的软件版本

比如,提交修改后的 hello.java 文件

$ git commit -m "修改后的hello.java" hello.java
[master 0289986] 修改后的hello.java1 file changed, 1 insertion(+)

查看日志,可以发现版本号是不一样的。这些版本分别是:0289986,cbe2bf8

$ git reflog
0289986 (HEAD -> master) HEAD@{0}: commit: 修改后的hello.java
cbe2bf8 HEAD@{1}: reset: moving to cbe2bf893a34fa9790374af38260b6bcf272137f
cbe2bf8 HEAD@{2}: commit (initial): 我的第一个提交的java文件

此时我们发现,head指针指向0289986,现在我要让他指向cbe2bf8,就可以使用以下命令

dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$git reset --hard cbe2bf8
HEAD is now at cbe2bf8 我的第一个提交的java文件
-- 测试结果
dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$ git reflog
cbe2bf8 (HEAD -> master) HEAD@{0}: reset: moving to cbe2bf8	-- 指向了cbe2bf8
0289986 HEAD@{1}: commit: 修改后的hello.java
cbe2bf8 (HEAD -> master) HEAD@{2}: reset: moving to cbe2bf893a34fa9790374af38260b6bcf272137f
cbe2bf8 (HEAD -> master) HEAD@{3}: commit (initial): 我的第一个提交的java文件

此外,在本地,可以进入工作区

方案一:进入 .git 文件夹,在 .git/HEAD 记录了谁提交

方法二:进入 .git/refs/heads/main(用户名) 记录了版本号

在git中,当前版本是用HEAD版本来标识的,前一个版本使用 HEAD^ 来表示,上上个版本使用 HEAD^^ 来表示。那么前100个版本如何表示呢?我们不可能写100个 ^ ,我们有简便写法,那就是 HEAD^100。用这种简便写法,上上个版本可以这样表示HEAD^2

二、Git分支

分支特性:分支创建、分支转换、分支合并、代码合并冲突解决

一个分支就是一个副本

2.1 查看分支

git branch -v

测试结果

$ git branch -v
* master cbe2bf8 我的第一个提交的java文件

2.2 创建分支

git branch newBranch

测试结果

$ git branch newBranchdell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$ git branch -v
* master    cbe2bf8 我的第一个提交的java文件newBranch cbe2bf8 我的第一个提交的java文件

2.3 切换分支

git checkout newBranch

测试结果

git checkout newBranch
Switched to branch 'newBranch'dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (newBranch)		-- 测试结果,已经切换至newBranch

2.4 合并分支

-- git merge 分支名
git merge newBranch

测试流程和结果

-- 1,newBranch 分支下修改了hello.java
dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (newBranch)
$ cat hello.java
222     newBranch
111dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (newBranch)
$ git add .dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (newBranch)
$ git commit -m "测试冲突newBranch修改了hello.java文件" hello.java
[newBranch ccb3ef2] 测试冲突newBranch修改了hello.java文件1 file changed, 1 insertion(+), 1 deletion(-)dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (newBranch)
$ git checkout master
Switched to branch 'master'-- master 分支下修改了hello.java
dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$ cat hello.java
222
111     masterdell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$ git add .dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$ git commit -m "测试冲突master修改了hello.java文件" hello.java
[master 5ff3ad3] 测试冲突master修改了hello.java文件1 file changed, 1 insertion(+), 1 deletion(-)dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$ git merge newBranch
Auto-merging hello.java
CONFLICT (content): Merge conflict in hello.java	--出现了合并冲突
Automatic merge failed; fix conflicts and then commit the result.

查看 hello.java 文件,文件内容如下:

<<<<<<< HEAD
222
111	master
=
222     newBranch
111
>>>>>>> newBranch

我们如下内容,只需要把其他内容删掉

222     newBranch
111	master
<<<<<<< HEAD	-- 删除
222		-- 删除
111	master		-- 保留
=		-- 删除
222     newBranch		-- 移动位置
111			-- 删除
>>>>>>> newBranch		-- 删除

完成后提交,注意,这里 git commit -m "合并了master和newBranch冲突之后最终得到的hello.java文件" 是不能带文件名的

dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master|MERGING)
$ git add .-- 这里不能带文件名
dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master|MERGING)
$ git commit -m "合并了master和newBranch冲突之后最终得到的hello.java文件"
[master 3751ec1] 合并了master和newBranch冲突之后最终得到的hello.java文件

查看提交后的 hello.java 的内容。但是,由于是 master 合并 newBranch 分支的内容,所以在 master 分支下可以看到合并后的内容,但是在 newBranch 分支并没有被修改。这就是为什么在团队合作中,push 提交到远程库之前要 pull 一下远程库的内容,以保持内容的一致性

dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$ cat hello.java
222     newBranch
111     masterdell@DESKTOP-B06U8EQ MINGW64 /e/github/git (master)
$ git checkout newBranch
Switched to branch 'newBranch'dell@DESKTOP-B06U8EQ MINGW64 /e/github/git (newBranch)
$ cat hello.java
222     newBranch
111

三、GitHub

在 github 上创建一个远程库,我的远程库名称为 git_test

然后把该库 clone 到本地

3.1 代码克隆clone

git clone git@github.com:ffideal/git_test.git

3.2 给库取别名

-- git remote add 别名 远程库
git remote add name git@github.com:ffideal/git_test.git

测试结果

dell@DESKTOP-B06U8EQ MINGW64 /e/github/git/git_test (master)
$ git remote -v
name    git@github.com:ffideal/git_test.git (fetch)
name    git@github.com:ffideal/git_test.git (push)
origin  git@github.com:ffideal/git_test.git (fetch)
origin  git@github.com:ffideal/git_test.git (push)

删除别名

-- git remote remove <别名>
git remote remove gitit_nickname

测试结果

dell@DESKTOP-B06U8EQ MINGW64 /e/github/git/git_test (master)
$ git remote -v
git_test        git (fetch)
git_test        git (push)
gitit_nickname  git@github.com:ffideal/git_test.git (fetch)		-- 删除目标
gitit_nickname  git@github.com:ffideal/git_test.git (push)
name    git@github.com:ffideal/git_test.git (fetch)
name    git@github.com:ffideal/git_test.git (push)
origin  git@github.com:ffideal/git_test.git (fetch)
origin  git@github.com:ffideal/git_test.git (push)dell@DESKTOP-B06U8EQ MINGW64 /e/github/git/git_test (master)
git remote remove gitit_nicknamedell@DESKTOP-B06U8EQ MINGW64 /e/github/git/git_test (master)	-- 已被删除
$ git remote -v
git_test        git (fetch)
git_test        git (push)
name    git@github.com:ffideal/git_test.git (fetch)
name    git@github.com:ffideal/git_test.git (push)
origin  git@github.com:ffideal/git_test.git (fetch)
origin  git@github.com:ffideal/git_test.git (push)

3.3 推送本地分支到远程仓库

-- git push 别名 分支
git push origin main

测试结果,注意,如果此时该分支不存在,会被创建分支

dell@DESKTOP-B06U8EQ MINGW64 /e/github/git/git_test (main)
$ git push origin main
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 560 bytes | 280.00 KiB/s, done.
Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'main' on GitHub by visiting:
remote:      https://github.com/ffideal/git_test/pull/new/main
remote:
To github.com:ffideal/git_test.git* [new branch]      main -> main

3.4 拉取远程库

-- git pull 远程库地址or别名 远程分支名
git pull origin master

测试结果

dell@DESKTOP-B06U8EQ MINGW64 /e/github/git/git_test (master)
$ git pull origin master
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
Unpacking objects: 100% (3/3), 1.41 KiB | 479.00 KiB/s, done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
From github.com:ffideal/git_test* branch            master     -> FETCH_HEADbde7239..9edde2f  master     -> origin/master
Updating cd10529..9edde2f
Fast-forward...263\250\350\247\243\350\257\246\351\233\206.md" | 80 ++++++++++++++++++++++1 file changed, 80 insertions(+)create mode 100644 "\346\263\250\350\247\243\350\257\246\351\233\206.md"

查看文件

$ dir
hello.java  main.txt  注解详集.md

3.5 邀请加入团队

① 选择合作者:进入项目 → settings → Manager access → Invite a callaborator

在这里插入图片描述

② 填入想要合作的人

③ 复制地址并通过微信等方式发送给该用户

④ 点击接收邀请 Accept invitation

⑤ 成名后,可以在该合作者账号上看到远程仓库

⑥ 可以操作该库

3.6 idea集成GitHub

3.6.1 配置忽略文件

就是在git目录下创建一个文件 xx.ignore 建议是 git.ignore

HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/### VS Code ###
.vscode/# compiled class file
*.class# Log file
*.log# Package Files
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

3.6.2 定位 Git 程序

settings → Version Control → Git → 选择自己的 git.exe 安装目录 → test

在这里插入图片描述

3.6.3 集成 Git

VCS → Import into Version Control → Create Git Repository → 选择项目目录(初始化本地库)右击点击项目选择Git → commit directory → 选择删文件以及在commit message 中填写描述 → commit

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.6.4 切换版本

在idea的左下角,点击version control,然后点击log 查看版本 → 右击选择要切换的版本,然后在菜单里点击Checkout Revision

3.6.5 创建分支

Git → Repository → new Branch → 填写分支名称 → 填写之后在 idea 的右下角看到我们新建的分支,说明创建成功,并已经切换到该分支了

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.6.6 切换分支

在 idea 窗口的右下角:master → Checkout → 选择分支xutao → 在右下角看到了xutao即成功

在这里插入图片描述

3.6.7 合并分支

Git:master → Merge Selected into Current → 选择要合并的分支

在这里插入图片描述

3.6.8 解决冲突

若出现冲突,我们栈在master分支上合并其他分支,出现了文件的不同就会发生冲突。点击 conflicts 框中的 Merge 按钮,手动合并

相关内容

热门资讯

安卓系统会不让大家使用 你知道吗?最近在安卓系统上发生了一件让人有点摸不着头脑的事情。安卓系统,这个陪伴我们多年的老朋友,竟...
安卓考勤系统签到流程 你有没有想过,每天早上打卡签到,竟然也能变得如此有趣和高效?没错,就是那个我们每天都要面对的安卓考勤...
安卓系统玩苹果手机王者,安卓玩... 亲爱的手机控们,你是否有过这样的经历:一边是安卓系统,一边是苹果手机,而你的心却始终被《王者荣耀》这...
安卓系统刷miui系统怎么样,... 你有没有想过,给你的安卓手机换换口味呢?没错,就是刷机!今天,咱们就来聊聊安卓系统刷MIUI系统怎么...
洛基亚为啥不用安卓系统,探寻其... 你有没有想过,为什么洛基亚(Lokia)手机不用安卓系统呢?是不是觉得这个品牌有点神秘,有点特别?今...
安卓系统与小米miu系统哪个好... 你有没有想过,手机里的操作系统就像是我们的大脑,它决定了我们手机的使用体验。今天,咱们就来聊聊这个话...
安卓怎么苹果系统锁屏,揭秘系统... 你是不是也和我一样,对安卓手机和苹果手机的系统锁屏功能充满了好奇呢?想知道它们各自有什么特别的地方,...
苹果安卓系统软件互通,共创未来... 你知道吗?在这个科技飞速发展的时代,手机已经成为了我们生活中不可或缺的一部分。而说到手机,不得不提的...
天籁系统的安卓怎么更新 亲爱的安卓用户们,你是否也和我一样,对天籁系统的更新充满了期待呢?每次系统更新,都仿佛是给我们的手机...
手机安卓木马系统高版本,技术演... 手机安卓木马系统:高版本的潜在风险与防范策略在数字化时代,智能手机已成为我们生活中不可或缺的一部分。...
小米用的是安卓系统,引领智能生... 你知道吗?现在手机市场上,各种品牌琳琅满目,让人挑花了眼。但是,说到性价比之王,那可非小米莫属了。你...
小游戏安卓换装系统下载,打造个... 你有没有发现,手机里的小游戏越来越好玩了?这不,最近我发现了一个超级有趣的小游戏——安卓换装系统下载...
鸿蒙系统融合安卓怎么用,跨平台... 你知道吗?最近手机圈里可是热闹非凡呢!华为的鸿蒙系统终于和安卓系统来了个亲密接触,这可是个让人眼前一...
安卓10系统为什么老化,揭秘老... 你有没有发现,你的安卓手机自从升级到安卓10系统后,好像变得有点“老态龙钟”了呢?别急,让我来给你细...
安卓sdk和windows系统... 你有没有想过,为什么你的安卓手机上的应用总是那么酷炫?这其中,安卓SDK可是功不可没的大功臣呢!今天...
王者荣耀系统安卓转苹果,轻松跨... 你有没有想过,从安卓手机转到苹果手机,王者荣耀的游戏体验会有哪些变化呢?这可是不少玩家关心的问题哦!...
安卓中高端系统手机推荐,性能与... 你有没有发现,最近手机圈里可是热闹非凡呢!各种新机发布,让人眼花缭乱。不过,咱们今天不聊那些入门级的...
安卓系统有个人收藏相册 你有没有发现,手机里的照片越来越多,有时候找起来就像大海捞针一样?别急,今天就来给你揭秘安卓系统里的...
如果美国封锁安卓系统,全球科技... 如果美国封锁安卓系统在数字化时代,智能手机已经成为我们生活中不可或缺的一部分。它不仅仅是一个通信工具...
安卓机器人系统人形,智能与美学... 你知道吗?在科技飞速发展的今天,有一种神奇的玩意儿正在悄悄改变我们的生活。它不是科幻电影里的机器人,...