Git学习记录

目录

Git

Git介绍

版本控制

版本控制工具

集中式版本控制工具

分布式版本控制工具

Git工作机制

​编辑

Git和代码托管中心

Git安装

Git常用命令

设置用户签名

初始化本地库

查看本地库状态

添加到暂存区

提交到本地库

修改文件

历史版本

查看历史版本

版本穿梭

Git分支

分支的操作:

Git团队协作借助机制

团队内协作

跨团队协作

GitHub

GitHub介绍

创建远程仓库

远程仓库操作

创建远程仓库别名

推送本地分支到远程仓库

从远程仓库拉取文件到本地

克隆远程仓库到本地

邀请加入团队

跨团队协作

SSH免密登录

idea集成git

配置git忽略文件

定位Git程序

idea中git操作

操作:

初始化:

添加暂存区:

提交本地库:

切换版本:

创建分支:

切换分支:

合并分支:

idea集成github

集成操作:

将项目分享到远程仓库:

推送文件到远程仓库:

拉取文件到远程仓库:

克隆远程仓库:


Git

Git介绍

Git官网:git-scm.com

Git是一个免费的,开源的分布式版本控制系统,可以快速高效的处理各种项目。

Git易于学习,体积小,性能极快。它具有廉价的本地库,方便的暂存区和多个工作流分支等特性。

版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

版本控制可以帮助我们从个人开发过渡到团队协作。

版本控制工具

集中式版本控制工具

CVS、SVN(Subversion)、VSS……

集中式的版本控制系统把所有文件的修订版本都保存在一个集中管理的服务器,协同工作的人都通过客户端连接到这台服务器上,取出最新的文件或者提交更新。

  • 优点:
    • 管理员可以轻松控制每个开发者的权限
    • 开发者可以看到其他开发者的操作
    • 管理版本更加轻松
  • 缺点:
    • 中央服务器的单点故障后开发者都无法获取更新或拉取
分布式版本控制工具

Git、Mercurial、Bazaar、Darcs……

分布式的版本控制系统中,客户端提交的不是最新版本的文件快照,而是把代码仓库完整地镜像到本地库。这样一处的故障可以使用另一处的文件进行修复。实际上每一次的文件拉取都是对整个文件仓库的完整备份。

分布式版本控制系统解决了集中式版本控制的缺陷:

1.服务器断网也可以进行开发(因为版本控制都是在本地库上操作)

2.每个客户端都保存完整项目(包含历史记录,更加安全)

分布式版本控制系统也有一个中央服务器,每个客户端可以选择将编辑后文件push上去,这样中央服务器内的文件就是最新的了。

Git工作机制

Git和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般简单地称为远程库。

局域网:

        GitLab

互联网:

        GitHub(外网)

        Gitee(国内)

Git安装

下载下来后一路默认到安装即可。

Git常用命令

命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户签名
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m "日志信息" 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭

设置用户签名

安装后用户签名只需要设置一次,不然提交代码时会报错

基本语法:

        git config --global user.name 用户名

        git config --global user.email 邮箱

验证用户签名:

        C:\用户\当前使用的用户 中有一个 .gitconfig 文件 用户签名就设置在里面

签名作用:

        版本控制时可以通过签名确认哪个版本是谁提交的

注意:

        现在设置的用户名和邮箱和将来登录GitHub(或其他)的账号无任何关系

初始化本地库

要git管理一个目录,就先要git获取到该目录的管理权(即初始化)

基本语法:

        git init

实际操作:

        打开要被git管理的文件夹:如 D:\git\git-test

        右键点击:Git Bash Here

        输入:git init

        这样目录下就会有 .git 的隐藏文件夹了,就代表初始化成功

查看本地库状态

基本语法:

        git status

首次查看:(工作区未有文件)

$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

添加文件(hello.txt)后再次查看:(检测到未追踪的文件)

$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        hello.txt

nothing added to commit but untracked files present (use "git add" to track)

添加到暂存区

要追踪给文件就要将它放到暂存区中,就要使用:git add 命令了 

基本语法:

        git add 文件名

$ git add hello.txt
warning: in the working copy of 'hello.txt', LF will be replaced by CRLF the next time Git touches it

warining无所谓的,这时候在查看状态:

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.txt

表示当前git已经追踪到这个文件,但此时文件是可以移除追踪的,使用命令:

        git rm --cachea hello.txt

$ git rm --cached hello.txt
rm 'hello.txt'
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        hello.txt

nothing added to commit but untracked files present (use "git add" to track)

提交到本地库

暂存区的文件并没有形成版本,需要把他提交到本地库:git commit -m "日志信息" 文件名

基本语法:

        git commit -m "日志信息" 文件名(记得先添加到暂存区)

$ git commit -m "my first commit" hello.txt
[master (root-commit) 74da8e6] my first commit
 1 file changed, 18 insertions(+)
 create mode 100644 hello.txt

提交之后,查看状态:(显示没有东西需要提交)

$ git status
On branch master
nothing to commit, working tree clean

 git reflog可以看版本,后面会详细讲

$ git reflog
74da8e6 (HEAD -> master) HEAD@{0}: commit (initial): my first commit

修改文件

21111113333333333333 hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!·

查看状态:(显示hello.txt文件被修改且未被添加暂存区)

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

添加到暂存区:git add hello.txt ,添加后再次查看:

$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   hello.txt

提交到本地库:git commit -m "my second commit" hello.txt,提交后再次查看:

$ git status
On branch master
nothing to commit, working tree clean

使用git reflog:

$ git reflog
11cd1c6 (HEAD -> master) HEAD@{0}: commit: my second commit
74da8e6 HEAD@{1}: commit (initial): my first commit

历史版本

查看历史版本

基本语法:

        git reflog 查看版本信息

        git log 查看版本详细信息

$ git reflog
11cd1c6 (HEAD -> master) HEAD@{0}: commit: my second commit
74da8e6 HEAD@{1}: commit (initial): my first commit

reflog:11cd1c6:极简版版本号;(HEAD -> master):指针指向哪个版本号

            my second commit:日志信息

$ git log
commit 11cd1c6f93ab9fa729f251a996fbcfe5acf59f04 (HEAD -> master)
Author: Xxxxx <Xxxxxxx@qq.com>
Date:   Fri Mar 15 00:58:09 2024 +0800

    my second commit

commit 74da8e66d05aea30c15b81f1b0b6da54eead6953
Author: Xxxxx <Xxxxxxx@qq.com>
Date:   Fri Mar 15 00:46:16 2024 +0800

    my first commit

log: 11cd1c6f93ab9fa729f251a996fbcfe5acf59f04:完整版本号

        Author: Xxxxx <Xxxxxxx@qq.com>:提交者

        Date:   Fri Mar 15 00:58:09 2024 +0800:提交日期

        my second commit 日志信息

        (HEAD -> master):指针指向哪个版本号

版本穿梭

如果对最新版本不满,可以改回之前的版本

基本语法:

        git reset --hard 版本号

查看版本:

$ git reflog
11cd1c6 (HEAD -> master) HEAD@{0}: commit: my second commit
74da8e6 HEAD@{1}: commit (initial): my first commit

版本穿梭:(74da为版本号前几位,不一定是4位,只要能区分版本,但似乎需要4位以上)

$ git reset --hard 74da
HEAD is now at 74da8e6 my first commit

查看版本:

$ git reflog
74da8e6 (HEAD -> master) HEAD@{0}: reset: moving to 74da
11cd1c6 HEAD@{1}: commit: my second commit
74da8e6 (HEAD -> master) HEAD@{2}: commit (initial): my first commit

查看文件:(以回到第一个版本)

$ cat hello.txt
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!

在 .git 文件夹下有个 HEAD 文件,打开后看到:ref: refs/heads/master,说明当前是在master分支上,在 .git/refs/heads 文件夹下有个master 打开后看到:74da8e66d05aea30c15b81f1b0b6da54eead6953 这个是当前版本的版本号

底层逻辑是指针的引用:head -> master -> 版本号

Git分支

版本控制时,对于每个任务,我们可以创建每个任务的单独分支。开发者可以把自己的工作从开发主线上分离开来,开发自己分支时不会影响主线的运行。简单来说,开发分支相当于把主线复制一份给自己,修改好了再提交到主线。(分支的底层也是指针的引用)

分支的优点:

        同时推进多个功能开发,通过开发效率。

        一个分支的失败不会影响另外的分支,只需要把失败的分支删除。

分支的操作:

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定分支合并到当前分支上

查看分支

基本语法:

        git branch -v

$ git branch -v
* master 74da8e6 my first commit

创建分支

基本语法:

        git branch 分支名

$ git branch hot-fix

创建后查看分支:

$ git branch -v
  hot-fix 74da8e6 my first commit
* master  74da8e6 my first commit

修改分支:

基本语法:

        git checkout 分支名

当前:

Xxx@Xxxxxx MINGW64 ~/Desktop/git-test (master)

使用命令后:

Xxx@Xxxxxxx MINGW64 ~/Desktop/git-test (master)
$ git checkout hot-fix
Switched to branch 'hot-fix'

Xxx@Xxxxxxx MINGW64 ~/Desktop/git-test (hot-fix)
$ git branch -v
* hot-fix 74da8e6 my first commit
  master  74da8e6 my first commit

使用hot-fix修改文件后提交:

$ cat hello.txt
hello qiu! hello git! hot-fix
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!

查看版本:

$ git reflog
e65054b (HEAD -> hot-fix) HEAD@{0}: commit: hot-fix first commit
74da8e6 (master) HEAD@{1}: checkout: moving from master to hot-fix
74da8e6 (master) HEAD@{2}: reset: moving to 74da
11cd1c6 HEAD@{3}: reset: moving to 11cd
11cd1c6 HEAD@{4}: commit: my second commit
74da8e6 (master) HEAD@{5}: commit (initial): my first commit

此时.git 下文件HEAD内容为:ref: refs/heads/hot-fix

        .git/refs/heads 下 hot-fix 内容为:e65054b2627a1c162dcc8850d0a01cbb52ef2ce4

                                    master内容为:74da8e66d05aea30c15b81f1b0b6da54eead6953
分支合并:

先切换为master分支,查看hello.txt文件,发现文件未有变化:

Xxx@Xxxxxx MINGW64 ~/Desktop/git-test (master)
$ cat hello.txt
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!

当我们在master分支时可以使用分支合并将hot-fix分支修改的部分合并。

基本语法:

        git merge 分支名

$  git merge hot-fix
Updating 74da8e6..e65054b
Fast-forward
 hello.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Xxx@Xxxxxx MINGW64 ~/Desktop/git-test (master)
$ cat hello.txt
hello qiu! hello git! hot-fix
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!

产生冲突:

分支合并时,当两个分支在同一个文件的同一个位置有两种完全不同的修改。Git无法自动选择,需要人为决定新代码的内容。

在master分支上修改hello.txt,在最后一行添加 hello master,并把它提交:

$ cat hello.txt
hello qiu! hello git! hot-fix
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello master

在hot-fix分支上修改hello.txt,在最后一行添加 hello hot-fix,并把它提交:

$ cat hello.txt
hello qiu! hello git! hot-fix
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello hot-fix

切换为master分支,使用分支合并命令:

查看状态:

$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

both modified :hello.txt  -----  两者修改了hello.txt

此时需要我们手动修改:

vim hello.txt 打开后:

hello qiu! hello git! hot-fix
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
<<<<<<< HEAD
hello master
=======
hello hot-fix
>>>>>>> hot-fix
~

修改为:

$ cat hello.txt
hello qiu! hello git! hot-fix
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello master
hello hot-fix

修改后要再次提交:(注意:此时add时可以有文件名,但提交时没有有文件名,不然会报错)

Xxx@Xxxxxxx MINGW64 ~/Desktop/git-test (master|MERGING)
$ git commit -m "master 2 merge" hello.txt
fatal: cannot do a partial commit during a merge.

Xxx@Xxxxxxx MINGW64 ~/Desktop/git-test (master|MERGING)
$ git status
On branch master
All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:
        modified:   hello.txt


Xxx@Xxxxxxx MINGW64 ~/Desktop/git-test (master|MERGING)
$ git commit -m "master 2 merge" hello.txt
fatal: cannot do a partial commit during a merge.

Xxx@Xxxxxxx MINGW64 ~/Desktop/git-test (master|MERGING)
$ git commit -m "master 2 merge"
[master 7f4094d] master 2 merge

注意:在master分支下手动进行合并,合并结果只在master分支下,hot-fix分支并没有合并:

Xxx@Xxxxxxx MINGW64 ~/Desktop/git-test (hot-fix)
$ cat hello.txt
hello qiu! hello git! hot-fix
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello hot-fix

Git团队协作借助机制

团队内协作

跨团队协作

GitHub

GitHub介绍

GitHub官网:https://github.com/

创建远程仓库

先打开github官网并登录,

远程仓库操作

命令名称        作用
git remote -v查看当前所有远程地址别名
git remote add 别名 远程地址起别名
git push 别名 分支推送本地分支上的内容到远程仓库
git clone 远程地址将远程仓库的内容克隆到本地
git pull 远程仓库地址别名 远程分支名将远程仓库对于分支最新内容拉取后与当前本地分支直接合并

远程仓库地址(https):https://github.com/Xxxxx/git-test.git

创建远程仓库别名

基本语法:

        git remote -v 查看当前所有远程地址别名

        git remote add 别名 远程地址

给git-test地址起别名:

$ git remote add git-test https://github.com/Xxxxx/git-test.git

查看别名:

$ git remote -v
git-test        https://github.com/qiuzhifeng666/git-test.git (fetch)
git-test        https://github.com/qiuzhifeng666/git-test.git (push)

两个别名:一个是拉取用的,一个是推送用的。

推送本地分支到远程仓库

基本语法:

        git push 别名 分支

把master分支推送到远程仓库:

git push git-test master

点击Sign in with your browser进行登录,登录成功后显示推送成功:

$ git push git-test master
Enumerating objects: 15, done.
Counting objects: 100% (15/15), done.
Delta compression using up to 8 threads
Compressing objects: 100% (10/10), done.
Writing objects: 100% (15/15), 1.09 KiB | 1.09 MiB/s, done.
Total 15 (delta 5), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (5/5), done.
To https://github.com/Xxxxxxxx/git-test.git
 * [new branch]      master -> master

推送成功后刷新github界面:

从远程仓库拉取文件到本地

基本语法:

        git pull 别名 分支

如果别的开发者将远程仓库的文件覆盖修改了,那本地库可以通过拉取文件来获得最新的文件:

将文件修改为:

在本地库上使用命令:git pull git-test master

$ git pull git-test master
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 932 bytes | 84.00 KiB/s, done.
From https://github.com/Xxxxxxxx/git-test
 * branch            master     -> FETCH_HEAD
   7f4094d..6f25233  master     -> git-test/master
Updating 7f4094d..6f25233
Fast-forward
 hello.txt | 1 +
 1 file changed, 1 insertion(+)

 查看文件:

$ cat hello.txt
111111111111111111111111111111
hello qiu! hello git! hot-fix
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello qiu! hello git!
hello master
hello hot-fix

克隆远程仓库到本地

基本语句:

        git clone 远程仓库地址

将远程仓库的文件克隆到一个工作区:

先创建一个工作区:创建git-test2文件夹

获取远程仓库的https地址: https://github.com/Xxxxxxxx/git-test.git

在git-test2文件夹下打开git bash窗口,输入命令:git clone https://github.com/Xxxxxxxx/git-test.git

克隆任何远程仓库是不需要凭证的,因为拿得到远程仓库地址说明该仓库是开源的。

命令执行完毕后git-test2文件夹下会多一个git-test文件夹,这个就是克隆下来的完整文件。

进入克隆下来的git-test文件夹,输入命令查看别名:

$ git remote -v
origin  https://github.com/Xxxxxxxx/git-test.git (fetch)
origin  https://github.com/Xxxxxxxx/git-test.git (push)

clone操作完成以下功能:1.拉取代码        2.初始化本地仓库        3.创建别名(默认为origin)

邀请加入团队

假设老板创建一个远程仓库(git-test)

你(员工)去克隆这个远程仓库,修改代码完成后再推送到远程仓库时,即使你已经获得了当前账号凭证(推送文件需要远程仓库管理系统(如github)的凭证),仍然无法推送成功,因为你还没有加入到这个远程仓库(git-test)的队伍中。

该操作由远程仓库管理者(老板)来执行:

 邀请涵:https://github.com/Xxxxxxxx/git-test/invitations

员工在github网站登录后输入链接

跨团队协作

需要其他团队来修改当前文件。

现在代码出现问题,需要其他团队的协助,这时让其他团队的工作人员在远程仓库管理系统(github)中找到本团队的远程仓库。

找到已修改的仓库:

此时自己就会有这个仓库,将仓库内文件修改后提交,解决问题后可以发送一个pull request:

此时本团队的远程仓库:

 合并:

SSH免密登录

拉取文件还有一种方式:SSH

但要使用SSH,需要有“钥匙”:

在C:\用户\XXX(当前用户)下打开git bash窗口(如果有.ssh文件夹了,可以删掉重新来一遍):

使用命令生成 .ssh 秘钥目录:

ssh-keygen -t rsa -C Xxxxxxxxx

解析:ssh-keygen:生成秘钥      -t:使用哪种加密方式生成秘钥        -C:描述

输入命令之后,敲3次回车(即默认选择),

在打开C:\用户\XXX 目录会发现多了一个 .ssh 文件夹,文件夹中有两个文件:公钥(id_rsa.pub)和私钥(id_rsa)。

把公钥复制一份,在github打开用户的setting,打开SSH and GPG keys:

添加成功

使用SSH拉取文件:

idea集成git

配置git忽略文件

使用idea这类工具时会生成一些 .iml文件 或 .idea 文件夹等不需要的文件,这时就要配置git忽略文件来使到时候git不去控制这些文件(添加,提交,推送)。

配置方法:

创建忽略规则文件:xxxx.ignore(前缀名无所谓,推荐:git.ignore)

该文件放哪都行,但为了方便让 ~/.gitconfig文件引用,建议也放在用户名家目录下

在C:\用户\XXX(当前用户)下创建文件:git.ignore,将以下模板输入:


# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

hs_err_pid*

.classpath
.project
.settings
target
.idea
*.iml

创建文件后还需要在 .gitconfig 中引用该文件:

还是在用户家目录:C:\用户\XXX 下有 .gitconfig添加一下信息:

[core]
	excludesfile = C:/Users/XXX/git.ignore

这里必须使用 " / " ,不能使用 " \ "

定位Git程序

配置好git忽略文件后,还需要定位git程序才能在idea中使用git

idea中git操作

idea集成git后就可以在idea进行git操作了

操作:

初始化:

创建git的本地库:在idea中双击shift,输入:import into version control,选择create git repository,选择项目的根目录。

添加暂存区:

已添加到暂存区:

提交本地库:

修改后再次提交会显示相关内容:

切换版本:

创建分支:

切换分支:

合并分支:

正常合并:

合并冲突:

master分支进行修改并提交:

hot-fix分支进行修改并提交:

分支合并:

合并冲突,需要手动合并:

合并成功:

idea集成github

集成操作:

没有的可以去插件商城安装。

设置github账号:(使用token登录)

在github网站上打开用户的setting,

验证完账号密码后,

在idea中输入口令就完成了。

将项目分享到远程仓库:

设置好别名后提交即可生成远程仓库。

推送文件到远程仓库:

push操作中,本地库的版本一定要高于远程仓库的版本。因此,在修改文件前一定要先拉取远程仓库代码。

修改文件并提交后:

拉取文件到远程仓库:

克隆远程仓库:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/462768.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python的opencv最最基础初学

localhost中详解OpenCV的函数imread()和函数imshow(),并利用它们实现对图像的读取和显示_opencv imshow-CSDN博客 其实以下均为numpy 显示一张图片 import cv2 ####opencv读取的格式是BGR import matplotlib.pyplot as plt import numpy as np %matplotlib inline imgcv2.…

“一键解锁复古魅力:底片效果瞬间生成!“

时光荏苒&#xff0c;岁月如梭。你是否曾怀念那些旧时光里&#xff0c;老照片所散发出的独特韵味&#xff1f;那种历经岁月沉淀的底片效果&#xff0c;仿佛能带我们回到那些被遗忘的角落&#xff0c;重温那些温馨的瞬间。 首先第一步&#xff0c;我们要进入视频剪辑高手&#…

算法---滑动窗口练习-6(找到字符串中所有字母异位词)

找到字符串中所有字母异位词 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;找到字符串中所有字母异位词 2. 讲解算法原理 有效字符个数count更新条件&#xff1a;满足【hash1表&#xff08;遍历s的表&#xff09;中对应元素出现次数<hash2表&am…

C语言之归并排序

目录 一 简介 二 代码实现 三 时空复杂度 A.时间复杂度&#xff1a; B.空间复杂度&#xff1a; C.总结&#xff1a; 一 简介 归并排序&#xff08;Merge Sort&#xff09;是一种基于分治策略的高效排序算法&#xff0c;其基本思想是将一个大问题分解为若干个规模较小且相…

RK3568平台开发系列讲解(基础篇)内核是如何发送事件到用户空间

🚀返回专栏总目录 文章目录 一、相关接口函数二、udevadm 命令三、实验沉淀、分享、成长,让自己和他人都能有所收获!😄 一、相关接口函数 kobject_uevent 是 Linux 内核中的一个函数, 用于生成和发送 uevent 事件。 它是 udev 和其他设备管理工具与内核通信的一种方式。…

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

Golang实现Redis分布式锁&#xff08;Lua脚本可重入自动续期&#xff09; 1 概念 应用场景 Golang自带的Lock锁单机版OK&#xff08;存储在程序的内存中&#xff09;&#xff0c;分布式不行 分布式锁&#xff1a; 简单版&#xff1a;redis setnx》加锁设置过期时间需要保证原…

数据结构的概念大合集01(含数据结构的基本定义,算法及其描述)

概念大合集01 1、数据结构基础的定义2、数据结构2.1 数据元素之间关系的集合2.2数据结构的三要素2.2.1数据的逻辑结构2.2.2数据的存储&#xff08;物理&#xff09;结构2.2.3数据的运算 3、数据类型4、抽象数据类型类型&#xff08;ADT&#xff09;5、算法及其描述5.1算法的5个…

ChatGLM3-6B独立部署提供HTTP服务failed to open nvrtc-builtins64_121.dll

背景 我在本地windoes部署ChatGLM3-bB&#xff0c;且希望部署后能提供HTTP server的能力。 模型部署且启动是成功了&#xff0c;但是在访问生成接口/v1/chat/completions时报错failed to open nvrtc-builtins64_121.dll。 问题详细描述 找不到nvrtc-builtins64_121.dll Runtime…

mac电脑修改终端zsh显示的用户名

电脑名称一直没有修改&#xff0c;所以电脑名称都是Apple的MacBook Pro&#xff0c;如下图所示&#xff1a; mac电脑终端显示用户名太长一点也不美观&#xff0c;而且占用很长的行&#xff0c;浪费空间&#xff0c;可以通过修改来调整要显示什么内容&#xff1a; 方式一 要想换…

Windows→Linux,本地同步到服务器

适用背景&#xff1a; 用自己电脑修改代码&#xff0c;使用实验室/公司的服务器炼丹的朋友 优势&#xff1a; 本地 <--> 服务器&#xff0c;实时同步&#xff0c;省去文件传输的步骤 本地改 -> 自动同步到服务器 -> 服务器跑代码 -> 一键同步回本地&#xff…

汽车氛围灯静电浪涌的难点

汽车氛围灯&#xff0c;顾名思义&#xff0c;是烘托车内氛围的照明灯&#xff0c;是汽车内饰情感化设计的一种体现。 一般有暖色&#xff08;红色等&#xff09;和冷色系&#xff08;蓝色、紫色等&#xff09;两种&#xff0c;在夜晚开启后绚丽浪漫&#xff0c;可营造车内情调&…

JSP+Servlet开发汽车租赁管理系统

开发工具&#xff1a;EclipseJdkTomcatSQLServer数据库 链接: https://pan.baidu.com/s/1O5tGguNl6V1CvSpN-amNXA 提取码: exak 如果需要&#xff0c;联系下面的客服人员

SQL的执行与优化

文章目录 MySQL查询原理与优化一、select语句的执行顺序二、join 的执行与优化1、驱动表 & 被驱动表2、Simple Nested Loop Join3、Index Nested Loop Join4、Block Nested Loop Join5、Hash Join6、join 优化小结 三、on 与 where 对比四、group by 的执行与优化1、group …

在Docker容器中配置`code-server`以访问宿主机的Docker环境

在Docker容器中配置code-server以访问宿主机的Docker环境 部分内容使用gpt生成&#xff0c;但经过测试可用。 要在code-server容器内部安全地管理和访问宿主机的Docker环境&#xff08;主要是为了访问宿主机的texlive&#xff09;&#xff0c;遵循以下步骤能够确保流畅的集成和…

Day66:WEB攻防-Java安全SPEL表达式SSTI模版注入XXEJDBCMyBatis注入

目录 JavaSec搭建 Hello-Java-Sec搭建 Java安全-SQL注入-JDBC&MyBatis Java安全-XXE注入-Reader&Builder Java安全-SSTI模版-Thymeleaf&URL Java安全-SPEL表达式-SpringBoot框架 知识点&#xff1a; 1、Java安全-SQL注入-JDBC&MyBatis 2、Java安全-XXE注…

vanna:基于RAG的text2sql框架

文章目录 vanna简介及使用vanna的原理vanna的源码理解总结参考资料 vanna简介及使用 vanna是一个开源的利用了RAG的SQL生成python框架&#xff0c;在2024年3月已经有了5.8k的star数。 Vanna is an MIT-licensed open-source Python RAG (Retrieval-Augmented Generation) fram…

SAP CAP篇十五:写个ERP的会计系统吧,Part II

本文目录 本系列文章目标开发步骤数据库表设计初始数据初始数据&#xff1a;AccountCategories初始数据&#xff1a;AccountUsages初始数据&#xff1a;ChartOfAccounts初始数据&#xff1a;AccountSubjects Service 定义生成Fiori AppApp运行 本系列文章 SAP CAP篇一: 快速创…

【GitHub】使用git链接下载很慢?试试服务器配置SSH,起飞

参考文献 保姆级教学&#xff0c;教你用配置SSH拉取github代码 CentOS ssh -T gitgithub.comgit config --global user.name "learnore" git config --global user.email "15200831505163.com"cd /root/.ssh vim id_rsa.pubGitHub Settings 结果 下载速…

路由器端口转发远程桌面控制:一电脑连接不同局域网的另一电脑

一、引言 路由器端口转发&#xff1a;指在路由器上设置一定的规则&#xff0c;将外部的数据包转发到内部指定的设备或应用程序。这通常需要对路由器进行一些配置&#xff0c;以允许外部网络访问内部网络中的特定服务和设备。端口转发功能可以实现多种应用场景&#xff0c;例如远…

通用的springboot web jar包执行脚本,释放端口并执行jar包

1、通用的springboot web jar包执行脚本&#xff0c;释放端口并执行jar包&#xff1a; #!/bin/bash set -eDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/data/yitu-projects/yitu-xzhq/sftp # 服务名称。同时约定部署服务的 jar 包名字也为它。 SERVER_NAMEyitu-server # 环境…