git教程

git教程

git、gitlab、github

git: 版本控制系统。

gitLab 和 gitHub:都是基于web的Git仓库,gitHub使用私有仓库需要收费。

https://www.cnblogs.com/leeyongbard/p/9777498.html

git安装和使用

【下载】,执行,点击下一步即可。

配置user信息:user.name 和 user.email
git config --global user.name 'xx name'
git config --global user.email 'xx.com'

注:windows系统命令用户名和email不用加 引号

注:多次操作同一个配置,后面的操作会覆盖前面的

config的三个作用域

git config --local :对某个仓库有效
git config --global:对当前用户的所有仓库有效(常用)
git config --system:对系统所有登录的用户有效
查看config配置,通过list
git config --list --local
git config --list --global
git config --list --system

增加配置项:–add(–add可省略)

git config [--local|--global|--system] --add section.key value(默认是添加在local配置中)

删除配置项:–unset

git config [--local|--global|--system] --get section.key(默认是获取local配置中内容)

git config 详细配置:https://www.cnblogs.com/fireporsche/p/9359130.html

新建仓库

gitee创建仓库:https://gitee.com/help/articles/4120

建立本地仓库并上传到Gitee

1.把已有项目代码纳入Git管理
cd 项目代码所在文件夹
git init
git init 后,会生成.git文件夹

git remote add origin https://gitee.com/crazywsp/test.git   :同步本地仓库到远程仓库

git pull origin master --allow-unrelated-histories  :合并本地分支和远程仓库分支

git push origin master  : 提交文件到远程仓库
2.新建的项目直接用Git管理
cd 某个文件夹
git init your_project
cd your_project

git图形化工具 - Tortoisegit使用

【下载】 【使用】

git ignore文件解释

/mtk/  过滤根目录下的mtk整个文件夹
注意:非根目录下的mtk文件夹及文件夹中文件会被上传,只有根目录下的该文件夹及文件夹文件会被忽略

mtk/  过滤所有目录下的mtk文件夹及文件夹下文件
注意:所有目录下的该文件夹及文件夹文件都会被忽略

*.zip 过滤所有.zip文件
/mtk/do.c 过滤具体文件 mtk目录下的的do.c文件

!src/   不过滤所有目录下的src文件夹
!*.zip   不过滤所有.zip文件
!/mtk/do.c 不过滤该文件

# dependencies  npm包文件
/node_modules

# production  打包文件
/build

# misc 
.DS_Store

npm-debug.log*
常用gitnore文件:涵盖idea和vue日常项目的ignore文件
.idea/
target/
node_modules/
.vscode/
dist/

*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

Git 常用命令

提交文件
git Add 文件名					--添加文件到暂存区
git commit 
git push

git reset --hard			   --将暂存区的所有操作还原

git commit -m"注释信息"		    --提交暂存区文件到本地版本库
git commit -am"注释信息"	    --直接将文件提交

git push 				--将本地版本库的分支推送到远程服务器上对应的分支
Git日志、分支操作命令:
git log --oneline			简洁的看commit记录
git log -n4 --oneline	     查看最近四次的commit记录
git branch -v				查看本地分支信息
git branch -av				查看当前工作分支(包括本地和远端)
git log --all				查看所有分支提交记录
git log --all --graph		 对分支区分查看提交记录
git log --oneline --all -n4 --graph	查看所有分支最近的4次提交记录
git help --web log			用浏览器查看git参数指令
gitk					   图形化界面工具
git checkout master			切换到master分支
git branch newBranch		添加newBranch新分支
git checkout -b newBranch2 master			基于master分支,创建并切换到newBranch2分支上

git rm filename 		    删除文件并add到暂存区
.git目录分析
HEAD		代表当前正在工作的分支
config 		存放配置信息,用户名、邮箱等
refs		存放标签和分支信息
objects		tree对象
git分支理解

作用:更好的进行团队工作,保证不同任务(分支)之间互不影响。

比如说,需要向项目中添加一个新功能,一般的团队都不会直接在主分支上修改,
都会新建一个分支,在上面更改代码。这样做的好处就是保证主线代码的完整性和可用性,
也就是说,主线上都是稳定的代码,可以直接拿来发布的。
特点:
GIT的技术可以说是非常强大,说一切开发都依赖于分支一点都不过分。一般项目的master分支都是稳定的代码,
可以直接发布或者被项目之外的人使用。新特性和BUG修改都在不同的分支上进行开发和测试。
这样规范了整个软件的开发流程。分支之间的互不影响这种特性可以增加团队合作的效率。
GIT分支的另外一个重要特性就是可以合并不同软件仓库(fork)的分支。
大体就是:开发团队有一个主软件仓库,开发者可以fork这个仓库,相当于克隆了一个私有的软件仓库,
然后开发者就可以在自己的软件仓库中建立分支并开发测试,测试完毕之后,可以向主软件仓库提交merge request,
这样新开发的特性就会被合并到主软件仓库的某个分支中。这种特性极大地推动了开源项目,
多年前参加开源项目都是神话,自从GIT出现后,每个人都可能成为开源项目的贡献者,
就是基于这种特性(请参照Github的pull request,和merge request是同一个东西)。
分支命令
git branch testing                 --创建一个testing分支
git checkout testing               --切换到testing分支

git checkout -b newbranch          --创建newbranch分支并立即切换到该分支
git branch -v                      --查看每一个分支的最后一次提交
git branch -d branchName	       --删除分支
分支合并
git checkout master            --跳转到master分支
git merge test                 --合并test分支的内容到master分支
冲突处理

若执行分支合并时(git merge develop)出现冲突,如下:

$ git merge develop
Auto-merging a.java
CONFLICT (content): Merge conflict in a.java
Automatic merge failed; fix conflicts and then commit the result.

**查看冲突内容:**both modified: a.java 说明两个分支都修改了a.java文件,且出现了冲突

$ git status
On branch master
Your branch is ahead of 'origin/master' by 4 commits.
  (use "git push" to publish your local commits)

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:   a.java

处理冲突

1.修改冲突文件                                         --vi a.java
2.通过git add命令标记为冲突已解决。                     --git add a.java
3.通过git commit来完成合并提交。					    --git commit -m "fix conflict"

commit处理

修改commit的message

修改最新一次的commit注释:

git commit --amend				--进入修改注释页面,修改后保存即可

修改老旧commit的message:

1.找到要修改的注释的“前一次提交编号”
2.git rebase -i 0c02722826   --0c02722826为要修改注释的上一次提交编号,进入修改注释页面
3.把要修改注释信息的 pick 修改为 r,代表修改提交信息命令
4.修改注释信息,保存退出即可

暂存区相关操作(版本回退)

工作区:指本地文件被修改,没有保存到暂存区。

git diff --cached		--该命令用来比较暂存区和HEAD文件差异
git diff		        --比较暂存区和工作区所含文件差异。

git reset HEAD           --恢复暂存区和HEAD相同(上上一个提交状态就是HEAD^)
git reset --hard HEAD 	 --恢复工作区、暂存区和HEAD相同
git reset --hard "commit编号"     回退到指定状态

git checkout 文件名       --恢复工作区和暂存区相同(删除后未提交文件进行恢复),将文件回到最近一次commit或git add时的状态

git clean -f		     --删除 untracked files(还原修改的文件)

git reset HEAD 文件名 文件名		文件名+空格+文件名,可同时取消多个暂存区文件的更改(即将暂存区的文件删除,返回到工作区,若需要继续恢复为修改前的状态,需执行“git checkout 文件名” 命令)
回退
git reset --hard commit编号		--恢复到该commit记录位置

gitLinux下删除未监视的文件(untracked files)

# 删除 untracked files
$ git clean -f
 
# 连 untracked 的目录也一起删掉
$ git clean -fd
 
# 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
$ git clean -xfd
 
# 在用上述 git clean 前,建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
$ git clean -nxfd
$ git clean -nf
$ git clean -nfd

idea配置git及gitee

配置git

File–>Setting->Version Control–>Git–>Path to Git executable,选择安装git目录下的git.exe文件在这里插入图片描述

配置gitee

1.安装Gitee插件:File - Settings – Plugins – Gitee
在这里插入图片描述

2.选择Version Control - Gitee:File - Settings – Version Control – Gitee – 输入 邮箱账号和密码

3.拉取仓库代码:VCS - Get from Version Control
在这里插入图片描述

4.Commit代码:提交代码到版本库

选择文件或文件夹,点击右键,Git – Commit File/Commit Directory
在这里插入图片描述

5.执行Push,提交到远程仓库。VCS – Git – Push在这里插入图片描述
在这里插入图片描述

相关文档:

gitee使用文档

git文档

svn使用文档

引用:

https://www.cnblogs.com/Sungeek/p/9152223.html#sg10
https://www.cnblogs.com/fireporsche/p/9359130.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值