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 masterNo commits yetnothing to commit (create/copy files and use "git add" to track)

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

$ git status
On branch masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed)hello.txtnothing 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 masterNo commits yetChanges 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 masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed)hello.txtnothing 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 commit1 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.txtno 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 +0800my second commitcommit 74da8e66d05aea30c15b81f1b0b6da54eead6953
Author: Xxxxx <Xxxxxxx@qq.com>
Date:   Fri Mar 15 00:46:16 2024 +0800my 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 -vhot-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 commitmaster  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-forwardhello.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.txtno 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.txtXxx@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_HEAD7f4094d..6f25233  master     -> git-test/master
Updating 7f4094d..6f25233
Fast-forwardhello.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
*.rarhs_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.rhkb.cn/news/277190.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【系统架构师】-第3章-信息系统基础知识

1、信息系统的基本功能 输入&#xff1a;决定于系统所要达到的目的及系统的能力和信息环境的许可存储&#xff1a;存储各种信息资料和数据的能力处理&#xff1a;数据处理工具&#xff0c;利用OLAP、DM&#xff08;数据挖掘&#xff09;技术输出&#xff1a;保证最终实现最佳的…

SQLiteC/C++接口详细介绍之sqlite3类(八)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;七&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍之sqlite3类&#xff08;八&#xff09;&#xff08;暂未发表&#xff09; 24.sqlite3_cr…

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 2、线条平滑曲面但有间隔

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata imp…

微服务:Bot代码执行

每次要多传一个bot_id 判网关的时候判127.0.0.1所以最好改localhost 创建SpringCloud的子项目 BotRunningSystem 在BotRunningSystem项目中添加依赖&#xff1a; joor-java-8 可动态编译Java代码 2. 修改前端&#xff0c;传入对Bot的选择操作 package com.kob.botrunningsy…

【QT】文件流操作(QTextStream/QDataStream)

文本流/数据流&#xff08;二级制格式&#xff09; 文本流 &#xff08;依赖平台&#xff0c;不同平台可能乱码&#xff09;涉及文件编码 #include <QTextStream>操作的都是基础数据类型&#xff1a;int float string //Image Qpoint QRect就不可以操作 需要下面的 …

瑞_23种设计模式_策略模式

文章目录 1 策略模式&#xff08;Strategy Pattern&#xff09;★1.1 介绍1.2 概述1.3 策略模式的结构1.4 策略模式的优缺点1.5 策略模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析&#xff08;Comparator&#xff09; &#x1f64a…

2核4G服务器够用吗?性能测评自己看

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;5M带宽下载速度峰值可达640KB/秒&#xff0c;阿腾云以搭建网站为例&#xff0c;假设优化后平均大小为60KB&#xff0c;则5M带宽可支撑10个用户同时在1秒内打开网站&#xff0c;并发数为10&#xff0c;经阿腾云测试&a…

电源常用电路:采样电路

在之前的帖子中,我们已经介绍了数字电源及其核心控制器PPEC。当然,数字电源除了包含电源拓扑电路以及数字控制核心外,还包括采样、驱动和通讯等外围电路。 本篇就先对电源的ADC采样原理和常用的采样调理电路进行介绍吧。 一、ADC采样原理 ADC(模数转换器)采样是将模拟信号…

如何使用Python进行数据可视化:Matplotlib和Seaborn指南【第123篇—Matplotlib和Seaborn指南】

如何使用Python进行数据可视化&#xff1a;Matplotlib和Seaborn指南 数据可视化是数据科学和分析中不可或缺的一部分&#xff0c;而Python中的Matplotlib和Seaborn库为用户提供了强大的工具来创建各种可视化图表。本文将介绍如何使用这两个库进行数据可视化&#xff0c;并提供…

12、MongoDB -- 通过 SpringBoot 整合 Spring Data MongoDB 操作 MongoDB 数据库(传统的同步API编程)

目录 通过 SpringBoot 整合 Spring Data MongoDB 操作 MongoDB 数据库&#xff08;传统的同步API编程&#xff09;演示前提&#xff1a;登录单机模式的 mongodb 服务器命令登录【test】数据库的 mongodb 客户端命令登录【admin】数据库的 mongodb 客户端命令 代码演示同步API编…

【海贼王的数据航海】排序——概念|直接插入排序|希尔排序

目录 1 -> 排序的概念及其运用 1.1 -> 排序的概念 1.2 -> 常见的排序算法 2 -> 插入排序 2.1 -> 基本思想 2.2 -> 直接插入排序 2.2.1 -> 代码实现 2.3 -> 希尔排序(缩小增量排序) 2.3.1 -> 代码实现 1 -> 排序的概念及其运用 1.1 -&g…

QT下跨平台库实现及移植经验分享

最近在移植公司一个QT桌面软件到android上&#xff0c;有一些公司自定义的库&#xff0c;用了很多windows的api&#xff0c;移植过程很是曲折&#xff0c;在此有一些感悟分享一下~ 一.自编写跨平台库 1.有时候为了程序给第三方用需要编译一些qt封装库&#xff0c;并可能跨平台…

学python新手如何安装pycharm;python小白如何安装pycharm

首先找到官网&#xff1a; Download PyCharm: The Python IDE for data science and web development by JetBrains 打开后选择下载&#xff0c;下图标红部分 点击exe程序&#xff0c;点击下一步&#xff01; 选择安装路径&#xff0c;下一步 弹出界面全选 选择默认 然后直接…

解锁数据潜力:OceanBase国产数据库学习不容错过的秘密!

介绍&#xff1a;OceanBase是一款由阿里巴巴和蚂蚁金服自主研发的通用分布式关系型数据库&#xff0c;它专为企业级应用而设计&#xff0c;具有金融级别的可靠性。以下是对OceanBase的详细介绍&#xff1a; 高可用性&#xff1a;OceanBase通过实现Paxos多数派协议和多副本特性&…

倒计时30,28天

1.队列Q (nowcoder.com) //1. #include<bits/stdc.h> using namespace std; #define int long long const int N2e56; const int inf0x3f3f3f3f; int dir[13]{0,31,28,31,30,31,30,31,31,30,31,30,31}; const double piacos(-1.0); int a[N],b[N]; bool cmp(int xx,int …

学点Java打小工_Day4_数组_冒泡排序

1 数组基本概念 程序算法数据结构 算法&#xff1a;解决程序的流程步骤 数据结构&#xff1a;将数据按照某种特定的结构来存储 设计良好的数据结构会导致良好的算法。 ArrayList、LinkedList 数组是最简单的数据结构。 数组&#xff1a;存放同一种类型数据的集合&#xff0c;在…

STM32基础--使用寄存器点亮流水灯

GPIO 简介 GPIO 是通用输入输出端口的简称&#xff0c;简单来说就是 STM32 可控制的引脚&#xff0c;STM32 芯片的 GPIO 引脚与外部设备连接起来&#xff0c;从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO被分成很多组&#xff0c;每组有 16 个引脚&#xf…

Apache Paimon系列之:主键表

Apache Paimon系列之&#xff1a;主键表 一、主键表1.Bucket2.LSM Trees3.Compaction 二、数据分布1.固定Bucket2.动态Bucket3.正常动态Bucket模式4.跨分区更新插入动态存储桶模式 三、Merge Engine1.Deduplicate2.部分更新3.序列组4.聚合部分更新5.聚合6.Retract7.First Row 四…

深度强化学习(五)(蒙特卡洛与自举)

深度强化学习&#xff08;五&#xff09;&#xff08;蒙特卡洛与自举&#xff09; 一.蒙特卡洛与自举 上一节介绍了多步 TD 目标。单步 TD 目标、回报是多步 TD 目标的两种特例。如下图所示, 如果设 m 1 m1 m1, 那么多步 TD 目标变成单步 T D \mathrm{TD} TD 目标。如果设…

数据链路层_以太网

IP协议确定数据跨网络从主机A到主机B的路径&#xff0c;即IP协议解决了路径选择问题&#xff0c;但在这之前&#xff0c;必须先解决数据在一个子网内的传输的问题。跨网络的本质就是跨多个子网&#xff0c;只要一个子网内可以通信&#xff0c;那么便可以跨网络通信。 一.以太…