Git学习

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 “hello@redis.com”

查看配置

git config --list

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

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

git config --global --replace-all user.email “hello@redis.com”

相关概念

工作区包含.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 <name>

切换分支:git checkout <name>或者git switch <name>

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

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

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. 再次推送到远程仓库
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值