Git是分布式版本控制工具

  • 集中式版本控制式工具,集中提交到一个中央服务器上进行版本控制
  • GIt
    • 分布式版本控制
    • 可以在本机库进行版本控制

Git的工作机制

  • 远程库

    使用git push 从本地库推送到远程库

GIt的常用命令

设置用户

  • git config --global user.name + 用户名
    • 设置用户签名
  • git config --global user.email + 邮箱
    • 设置用户签名
  • 签名的作用是区分不同操作者的身份
  • 与账号无关系

初始化本地库

  • git init

查看本地库状态

  • git status
    • 分支
    • 提交命令
    • 需要提交的文件

添加到暂存区

  • git add + 文件名
  • 添加所有文件:git add .

提交到本地库

  • 将暂存区的文件提交到本地库
  • git commit -m + "日志信息" + 文件名

修改文件

  • vim + 文件名
    • 建立文件
    • :wq 保存
  • cat + 文件名
    • 打开文件
  • tail -n 1 + 文件名
    • 查看最后一行

历史版本

查看历史记录

  • git reflog
  • git log
    • 详细的

版本穿梭(切换版本)

  • git reset --hard 版本号
    • 版本穿梭
    • 版本号通过历史记录查看
  • git的切换版本,底层其实是移动的HEAD指针,指向当前的版本

Git分支操作

分支

  • 在版本控制过程中,同时推进多个任务,为每个任务创建一个单独分支。
  • 使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的进行

分支的操作

查看分支
  • git branch -v
创造分支
  • git branch 分支名
切换分支
  • git checkout 分支名
删除分支
  • 删除本地分支:git branch -d + 分支名
  • 删除远程分支:git push origin -d + 分支名
合并分支(正常合并)
  • git merge + 要合并的分支
    • 合并到当前分支
合并分支(冲突合并)
  • 冲突:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个,必须人为决定新代码内容
  • 进入文件手动修改
  • 修改后提交(commit)不要添加文件名,要先add该文件

团队协作

团队内协作

  • push:从本地库推送到远程库
  • clone:从远程库克隆到本地库
  • pull:拉取远程库,更新本地库

git pull

本地和远程出现冲突
1
error: Your local changes to the following files would be overwritten by merge:
  1. 如果你想保留刚才本地修改的代码,并把git服务器上的代码pull到本地(本地刚才修改的代码将会被暂时封存起来)
1
2
3
git stash
git pull origin master
git stash pop
  1. 如果你想完全地覆盖本地的代码,只保留服务器端代码,则直接回退到上一个版本,再进行pull:
1
2
git reset --hard
git pull origin master

跨团队协作

  • fork:将远程库的代码复制到另一个远程库
  • pull request:拉取请求,经过审核后进行合并
  • merge:合并

GitHub操作

创建远程库别名

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

推送本地库到远程库

  • git push + 别名/链接 + 分支

拉取远程库到本地库

  • git pull + 别名/链接 + 分支

克隆远程库到本地

  • git clone + 远程地址

邀请加入团队

团队内

  • 可以邀请加入共同编辑一个远程库
  • 然后就可以推送内容到这个远程库中

跨团队

  • 点击fork,可以将别人的库复制一份,变成自己的一个库
  • 在自己的库中修改,但原来的库不会变化
  • 可以发送pull request,经过同意后可以合并改变原来的库

## SSH免密登录

  • ssh-keygen -t rsa -C + 邮箱
    • 生成密钥
  • 然后添加到账号里面的ssh列表里

创建.ignore文件

  • 忽略与代码无关的编译器文件内容
  • 第一步,创建.ignore文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Complied class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Moblie 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文件中
1
2
3
4
5
[user]
name = Ye22
email = 12554804@qq.com
[core]
excludesfile = C:/Users/36382/git.ignore

Idea内git操作

  • 创建本地库
    • 在VSM中点击create git respository
  • 切换版本
    • 在Log中点击checkout进行切换