Git

1、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 版本号 历史穿梭

  • 设置用户签名
asus@DESKTOP-32R6N91 MINGW64 ~/Desktop
$ git config --global user.name chenminglin   # 设置用户签名

asus@DESKTOP-32R6N91 MINGW64 ~/Desktop
$ git config --global user.email 507545713@qq.com  # 设置用户签名

asus@DESKTOP-32R6N91 MINGW64 ~/Desktop
$

  • 初始化本地库
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo
$ git init  # 初始化本地库
Initialized empty Git repository in D:/git-demo/.git/

image.png

  • 查看本地库状态
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git status  # 查看本地库状态
On branch master

No commits yet

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

  • 添加文件到暂存区,当前目录下新建hello.txt文件

image.png

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git add hello.txt  # 添加hello.txt到暂存区

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git status  # 查看本地库状态
On branch master

No commits yet

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

  • 删除暂存区的文件
$ git rm --cached hello.txt
rm 'hello.txt'  # 删除暂存区的hello.txt文件
  • 提交本地库
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git add hello.txt  # 添加hello.txt到暂存区

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git commit -m "first commit" hello.txt  # 提交hello.txt到本地库
[master (root-commit) fcd9af8] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 hello.txt

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git status  # 查看本地库状态
On branch master
nothing to commit, working tree clean

  • 查看历史记录,版本信息
$ git reflog  # 查看历史记录
fcd9af8 (HEAD -> master) HEAD@{0}: commit (initial): first commit
  • 查看详细日志
$ git log   # 查看详细日志
commit fcd9af8d0d23cab6b357face3616fa7206a3da84 (HEAD -> master)
Author: chenminglin <507545713@qq.com>
Date:   Mon May 17 09:20:28 2021 +0800

    first commit

  • 修改hello.txt文件,第二次提交
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git add hello.txt   # 添加hello.txt到暂存区

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git commit -m "second commit"  # 提交hello.txt到本地库
[master 2cde4f7] second commit
 1 file changed, 1 insertion(+)

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git reflog  # 查看历史记录
2cde4f7 (HEAD -> master) HEAD@{0}: commit: second commit
fcd9af8 HEAD@{1}: commit (initial): first commit

  • 版本穿梭,穿梭会第一次提交的版本
$ git reflog   # 查看历史记录
2cde4f7 (HEAD -> master) HEAD@{0}: commit: second commit
fcd9af8 HEAD@{1}: commit (initial): first commit

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git reset --hard fcd9af8   # 穿梭会版本1(first commit)
HEAD is now at fcd9af8 first commit

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git reflog  # 查看历史信息
fcd9af8 (HEAD -> master) HEAD@{0}: reset: moving to fcd9af8
2cde4f7 HEAD@{1}: commit: second commit
fcd9af8 (HEAD -> master) HEAD@{2}: commit (initial): first commit

2、Git分支操作

  • 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行
  • 分支的好处
    • 同时并行推进多个功能开发,提高开发效率
    • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开发即可

  • 分支的操作
命令 作用
git branch 分支名 创建分支
git branch -v 查看分支
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上
  • 查看分支
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git branch -v
* master fcd9af8 first commit

  • 添加分支
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git branch hot-fix

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git branch -v
  hot-fix fcd9af8 first commit
* master  fcd9af8 first commit

  • 切换分支
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git checkout hot-fix
Switched to branch 'hot-fix'

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (hot-fix)
$ git branch -v
* hot-fix fcd9af8 first commit
  master  fcd9af8 first commit

  • 修改hello.txt文件,提交到本地库
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (hot-fix)
$ git add hello.txt

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (hot-fix)
$ git commit -m "hot-fix first commit" hello.txt
[hot-fix cf0d80c] hot-fix first commit
 1 file changed, 1 insertion(+), 1 deletion(-)

  • 合并分支
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (hot-fix)
$ git checkout master
Switched to branch 'master'

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git merge hot-fix
Updating fcd9af8..cf0d80c
Fast-forward
 hello.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

  • 合并分支(冲突合并)
    • 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须认为决定新代码的内容
    • 在master分支修改hello.txt文件并提交到本地库
    • 切换到hot-fix分支修改hello.txt文件并提交到本地库
    • 切换回master,合并hot-fix分支,结果无法合并,因为都修改了文件
    • 需要手动修改文件内容(文件中有两个分支修改的内容)
    • 在添加文件到暂存区,再提交到本地库(不能带文件名)
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git merge hot-fix   # 合并hot-fix分支,结果无法合并
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master|MERGING)
$ git add hello.txt  # 修改hello.txt文件后,添加到暂存区

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master|MERGING)
$ git commit -m "merge test"  # 提交到本地库
[master 95a1c37] merge test

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)   # 合并完成

3、GitHub

  • 创建仓库

image.png

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

  • 创建别名
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (hot-fix)
$ git remote add git-demo https://github.com/chenminglinym/git-demo.git

asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (hot-fix)
$ git remote -v
git-demo        https://github.com/chenminglinym/git-demo.git (fetch)
git-demo        https://github.com/chenminglinym/git-demo.git (push)
  • 推送到远程仓库
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git push git-demo master

image.png

  • 拉取远程库
asus@DESKTOP-32R6N91 MINGW64 /d/git-demo (master)
$ git pull git-demo master

  • 克隆远程库到本地
    • 拉取代码
    • 初始化本地仓库
    • 创建别名
asus@DESKTOP-32R6N91 MINGW64 /d/git-test
$ git clone https://github.com/chenminglinym/git-demo.git

  • 团队内协作
    • 邀请加入团队(Settings -> Manage access -> Invite a collaborator)
    • 被邀请者接收邀请
    • 克隆代码到本地,修改内容push到远程仓库
  • 跨团队协作
    • 点击Fork将项目叉到自己的本地仓库
    • 修改文件
    • 点击Commit change 提交
    • 点击Pull请求,并创建一个新的请求
    • 项目拥有者则会收到一个Pull request请求
    • 项目拥有者点击Merge pull reque合并代码

4、GitHub-SSH免密登录

  • 在用户目录下生成 .ssh 文件
asus@DESKTOP-32R6N91 MINGW64 ~
$ ssh-keygen -t rsa -C chenminlin # -t 指定加密算法 -C 描述

image.png

  • 添加公钥

image.png

  • 使用SSH拉取文件
asus@DESKTOP-32R6N91 MINGW64 /d/git-test (master)
$ git pull git@github.com:chenminglinym/git-demo.git master

4、IDEA集成Git

  • 配置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
# virtual machine crash logs, see 
http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
  • 在.gitconfig文件中引用git.ignorea文件
[user]
	name = chenminglin
	email = 507545713@qq.com
[core]
	excludesfile = C:/Users/asus/git.ignore
  • IDEA定位Git程序

image.png

  • 创建Git本地库,选中当前项目文件

image.png

  • 添加文件到暂存区,提交文件到本地库,提交到远程仓库

image.png

  • 查看提交的版本

image.png

  • 切换到指定版本

image.png

  • 创建分支

image.png

  • 合并分支,把指定分支合并到当前分支(正常合并)

image.png

5、IDEA集成GitHub

  • IDEA连接GitHub

image.png

  • 登录GitHub生成Token口令

image.png

image.png

  • IDEA使用口令登录GitHub

image.png

  • 连接成功

image.png

  • 工程分享到GitHub

image.png

image.png

  • push pull

image.png

  • IDEA克隆代码到本地

image.png

posted @ 2022-11-06 22:39  youmo~  阅读(19)  评论(0编辑  收藏  举报