Git学习

目录

  • Git
    • 介绍
    • 作用
    • Git全局配置
    • 相关概念
    • Git常用命令
      • 本地仓库命令
      • 远程仓库命令
      • 分支命令
      • 标签相关命令
      • .gitignore模板
    • 可能出现的问题及解决方案

Git

介绍

分布式管理工具,用于管理开发过程中的源代码文件(eg:java文件,xml文件,html页面等)

作用

Git使用仓库存储和管理文件,分为本地仓库和远程仓库

本地仓库:开发人员自己电脑上的Git仓库

代码修改完毕需要提交(commit),每次提交都会生成一个对应的版本

可以根据commit记录回退到任意版本

每个开发人员commit代码都会有一条commit记录,记录了提交时间,原因等信息

远程仓库:远程服务器上的Git仓库

开发人员可以从远程仓库拉取(pull)代码

远程仓库的代码是备份,其他开发人员电脑上的代码也是备份

开发人员开发完毕可以推送(push)到远程仓库,Git自动合并代码

Git全局配置

使用以下命令设置用户名和邮箱(可任意设置),用于提交时Git记录用户信息

git config --global user.name “shifan”

git config --global user.email “[email protected]

查看配置

git config --list

加上–replace-all即可修改用户名和邮箱

git config --global --replace-all user.name “shifan”

git config --global --replace-all user.email “[email protected]

相关概念

工作区包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码

版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等

暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改文件的地方

Git常用命令

本地仓库命令

git status 查看文件状态

git log 查看提交记录

优化命令:–pretty=oneline 一行展示,–abbrev-commit 缩略展示提交id

git log --pretty=oneline --abbrev-commit

命令太长可以配置别名,在本机用户目录下创建.bashrc文件,做如下配置

#用于输出git提交日志
alias git-log=‘git log --pretty=oneline --all --graph --abbrev-commit’
#用于输出当前目录所有文件及基本信息
alias ll=‘ls -al’

即可使用git-log命令替代git log --pretty=oneline --abbrev-commit

git add 文件名 将文件添加到到暂存区(多个文件使用空格隔开)

git add . 将所有未添加文件添加到暂存区

git commit -m “工作描述” 将暂存区中文件提交到本地仓库

出现中文乱码解决方法:

修改Git安装目录下的配置文件 Git\etc\bash.bashrc 文件末位添加如下2行配置

export LANG=“zh_CN.UTF-8”

export LC_ALL=“zh_CN.UTF-8”

git restore --staged 文件名 撤销添加到暂存区 --staged可使用-S代替

git reset 版本号 --hard 回退到指定版本号,工作区暂存区都会退到指定版本

注意:–hard 参数

如果加上,会直接回退到指定版本,丢失工作区的修改,因此回退之前做好备份!

如果不加–hard ,会重置暂存区的文件与指定版本的提交(commit)保持一致,工作区文件内容保持不变。

远程仓库命令

git clone 远程仓库地址 将远程仓库代码克隆到本地

git remote #查看远程仓库简要名称

git remote -v #查看远程仓库详细信息

git remote add 名称 远程仓库地址 #添加远程仓库

git fetch:是从远程获取最新版本到本地,不会自动merge, 基本不用

git pull 远程仓库简称 分支名称:本地分支名 从远程仓库获取最新版本并合并到本地分支

如果远程分支和本地分支同名,可以通过pull命令拉取远程仓库

git pull

注意: 如果不是从远程仓库获取的仓库,而是自己本地 git init 创建的仓库,

  1. 需要先和远程仓库关联 git remote add …
  2. 然后再从远程仓库拉取最新更新

如果拉取的时候报错,提示:

fatal: refusing to merge unrelated histories

原因是本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件

解决办法:在pull 命令后面加 --allow-unrelated-histories 例如: git pull origin master --allow-unrelated-histories

然后再git push origin master

git push 远程仓库简称 远程仓库分支名 将本地仓库代码推送到远程仓库

开发中一般先拉取远程仓库代码,合并后再推送,避免与他人代码发生冲突

分支命令

查看分支:git branch

创建分支:git branch

切换分支:git checkout 或者git switch

创建+切换分支:git checkout -b 或者git switch -c

合并某分支到当前分支:git merge

删除分支:git branch -d

git branch 列出所有本地分支

git branch -r 列出所有远程分支

git branch -a 列出所有本地分支和远程分支

标签相关命令

标签:给某个历史版本打上标签,以示重要,一般用于标记发布节点

  • git tag 查看标签
  • git tag [name] 创建标签
  • git push [shortName] [name] 将标签推送至远程仓库
  • git checkout -b [branch] [name] 检出标签

.gitignore模板

.gitignore 忽略哪些文件不用交给版本库管理,可以编辑使用提供的忽略模板,实际开发还有需要忽略的,加入到.gitignore文件即可

1)我们在使用Git管理项目代码时,并不是所有文件都需要Git管理,例如Java项目中编译的.class文件、开发工具自带的配置文件等,这些文件没有必要交给Git管理,所以也就不需要提交到Git版本库中

2)注意忽略文件的名称 .gitignore 是固定的,不能修改

3)添加到忽略列表中的文件后续Git工具就会忽略它

github 提供的gitignore模板: https://github.com/github/gitignore

# IntelliJ IDEA
.idea
*.iml
**/out
*.ipr
*.iws

# Compiled class file
*.class

# Log file
logs/
*.log

# 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*
replay_pid*

# Maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar

# MacOS
.DS_Store
/repo/
gradle/
gradlew
gradlew.bat

可能出现的问题及解决方案

warning: ----------------- SECURITY WARNING ----------------
warning: | TLS certificate verification has been disabled! |
warning: ---------------------------------------------------
warning: HTTPS connections may not be secure. See https://aka.ms/gcmcore-tlsverify for more information.

缺少了安全认证,所以解决方法是重启安全认证。

git config --global http.sslVerify true

! [rejected] v2 -> master (non-fast-forward)
error: failed to push some refs to ‘https://gitee.com/max-ev/repo-reggie.git’

基本就是出现冲突了:远程仓库的文件发生了修改,你没有及时的同步(、拉取)到本地,但是你同时又添加了一些内容(提交),以致于你在提交时,它会检测到你之前从远程仓库拉取的时候的仓库状态和现在的不一样。于是,它为了安全起见拒绝了你的提交。

解决方案:

  1. 先git pull 拉取最新代码
  2. git status 查看是否有冲突 (fix conflicts and run “git commit”)
  3. 解决冲突并提交
  4. 再次推送到远程仓库

你可能感兴趣的:(Java从入门到精通,git)