海阔天空

当前时间为:
欢迎大家来到海阔天空https://www.9713job.com,广告合作以及淘宝商家推广请微信联系15357240395

2020最新版Git教程

未分类
2020-12-24 10:16:03
1822677238@qq.com

手机扫码查看

2020最新版Git教程

2020最新版Git教程

git安装以及初始化

查看git版本:git –version
设置用户名:git config –global user.name “Your Name”
设置邮箱:git config –global user.email “email@example.com”
查看信息:git config -l

git仓库

创建仓库,在本地磁盘创建个文件夹,然后打开cmd,输入:git init

git基本操作

查看工作区状态:git status

文件上传到暂存区:git add .

文件提交:git commit -m “info”

git远程仓库

上传到哪个远程仓库地址:git remote add origin url

查看关联的地址:git remote -v

将本地仓库文件上传到远程服务器:git push origin master

然后弹窗登录,输入账号和密码

git克隆远程仓库

git克隆远程仓库到本地:git clone url

git远程仓库更新到本地仓库:git pull

git分支

查看分支:git branch

创建分支:git branch v1

切换分支:git  checkout master

分支提交日志

简单日志:git log –oneline

完整日志:git log

图形日志:git log –oneline –graph

分之合并

快速合并:git merge master

如果分支A当前的修改,是完全基于分支B的修改而来,则B分支合并A分支,就是有移动指针即可。

三方合并

在不具备快速合并的条件下,会采用三方合并。




合并冲突

两个分支进行合并,但它们含有对同一个文件的修改,则在合并时出现冲突,git无法决断该保留改文件哪个分支的修改。

出现冲突后,如要由两个开发人员当面协商,该如何取舍,为冲突文件定义最终内容。

解决方案:

1.保留某一方的,删除另一方的。
2.保留双方的
3.但无论如何,要删除 <<<< 和 ===== 以及 >>>>> 符号

再次提交协商修改后的内容

版本回退

每次的修改⽂件并add、commit 。git中也会记录⼀个版本。如果有需要可以回退到之前的⼀个数据版本状态。

git reset –hard HEAD~ # 回退到上⼀个版本

git reset –hard HEAD~~ # 回退到上上⼀个版本

git reset –hard HEAD~5 # 回退到上5个版本

git rest –hard e475a #回退到commitID 为 “e475a…”的版本, commitID可以只写前⼏位,唯⼀即可

e475afc93c209a690c39c13a46716e8fa000c366=commitID, e475a是commitID的前⼏位

1> 每次commit,git都会保留⼀个版本,每个版本都有⼀个全局唯⼀的commitID
2> git有个游标: HEAD ,指向当前的版本,所以可以移动游标来回退版本
3> 也可以通过 commitID 回退到某个版本
4> 回退并不会删除任何版本,所以版本间可以来回切换

细节:发⽣版本回退后,通过 git log 只能看到最原始提交点 ⾄ 当前提交点的 ⽇志。 git reflog 可以看全部⽇志

撤销修改

工作区撤销:

git checkout — hello9.txt 可以撤销到最近⼀次 git add 或 git commit 的状态

如果 暂存区有此⽂件,则将暂存区中的⽂件内容恢复到⼯作区。
如果 暂存区没有此⽂件,则将分⽀中的⽂件内容恢复到⼯作区。

注意: — hello9.txt ⼀定不能少写 — ,否则就是其他语意啦。

暂存区撤销:

如果在⼯作区中修改了⽂件并发送到暂存区中,但⽂件中有需要撤销的内容
则可以执⾏: git reset HEAD hello9.txt 将hello.txt在暂存区的内容清除。
然后可执⾏: git checkout — hello9.txt 回退到上⼀个版本

 

idea关联git

忽略文件

先创建忽略文件:.gitignore

内容:

.idea
*.iml
target
*.class
jdbc.properties
*.jar
*.war

idea创建git仓库

idea提交文件


idea新增文件弹窗

点击ADD 或者CANCEL 也可以

idea关联远程仓库


idea检测链接后弹出 github登录,输入账密即可

idea新增分支

idea切换分支

idea查看日志

idea克隆远程仓库


idea从远程仓库更新本地仓库

打开之前的仓库,然后新建文件,然后提交并上传。

在新的idea窗口分支并创建分支


idea冲突解决

冲突演示:

在第一个仓库修改一个文件,然后提交并上传远程仓库。

在第二个仓库修改相同文件,然后上传并拉取pull,然后弹窗冲突警告框

然后约谈两个开发者商谈最终版本

然后查看仓库状态:

然后push提交到远程仓库

多人协同开发

协同工作流程

项目管理员(项目经理)

管理员在github创建私有仓库,在idea创建一个空项目,包含 .gitignore⽂件,创建分支。

然后提交并push到远程仓库,然后在github邀请成员。


开发人员:

在idea克隆远程仓库,获得项目。

然后在idea选择分支并创建分支。

后续的开发中,都要在新的分支上进行提交并上传远程仓库进行同步。

注意:如果在 git push 远程库时,有⼈⽐你早⼀步 git push ,git服务器将拒绝你的 git push .(乐观锁原理)
不过很简单,你需要 git pull 远程库 dev ,然后再 git push`即可

后续的开发,会接到⼀个个的功能任务,往复操作。

效果:

在实际开发中,我们应该按照⼏个基本原则进⾏分⽀管理:
⾸先, master 分⽀应该是⾮常稳定的, 也就是仅⽤来发布新版本,平时不能在上⾯⼲活;
那在哪⼲活呢?⼲活都在 新 分⽀上,也就是说, 新 分⽀是不稳定的,到某个时候,⽐如1.0版本发布时,再有管理员把 新 分⽀合并到 master 上,在 master 分⽀发布1.0版本;
你和你的⼩伙伴们每个⼈都在 新 分⽀上⼲活,每个⼈都有⾃⼰的分⽀,时不时地往 新 分⽀上合并就可以了。
所以,团队合作的分⽀看起来就像这样:

如上4个分⽀,由上⽽下分别是【远程master,远程dev,micheal的本地dev,bob的本地dev】

 

设置SSH-KEY

git本地库和 github 或 码云 之间传输,建议设置SSH key,避免在传输中反复输⼊密码
执⾏: ssh-keygen -t rsa -C “email” 然后⼀直回⻋即可
-C后”可以随意写⼀个,作为key的title⽽ 已,⽆关紧要”
最后:在 C:\Users\主机名\.ssh ⽬录下⽣产秘钥⽂件,
id_rsa 是私钥,不能泄露出去, id_rsa.pub 是公钥,可以放⼼地告诉任何⼈。
登录GitHub,在账户设置中,选择 “SSH Keys” ,在Title中随便填写⼀个,在Key中填写 id_rsa.pub ⽂件中的所有内容即可。

标签

创建标签:

# 创建轻量标签
git tag v1.1.0
# 创建附注标签 ( 就是带说明的轻量标签 )
git tag -a v1.1.1 -m “说明⽂字”
#注意,创建的标签会⾃动 打在最近的提交点上
#如果要给过往的提交点 追打标签,需要 git log 去查看提交点的 “commitID”
git tag [-a] v1.1.1 “commitID”

查看标签:

#查看所有分⽀上的所有标签 ( 查看标签并不区分分⽀ )
git tag
#查找标签名以 “v1.1”开头的标签
git tag -l “v1.1*”
#显示标签 及其对应的提交点信息
git show v1.1.0

共享标签

标签不会随提交点⼀起 提交到远程服务器,需要单独push。
pull时,标签会⼀同被下载到本地

# 同步⼀个标签 “v1.1.1” 到git服务器
git push origin v1.1.1
# 同步所有标签 到git服务器
git push origin –tags

删除标签

标签删除需要在本地和远程分别删除。

# 在本地删除标签
git tag -d v1.1.1
# 删除远程库中的标签
git push origin :refs/tags/v1.1.1

标签的使用

标签主要⽤于发布版本。
假定已经为各个发布版本打了标签: v1.0 v1.1 v2.0 ….
现在需要 1.0 版本

# 分离⼀个指针到 v1.0提交点位置
git checkout v1.0 #( 分离头指针,是⼀个临时指针,不归属任何分⽀ )
git checkout commitId #( 分离头指针,是⼀个临时指针,不归属任何分⽀,不如标签⽅便 )
# 然后将⼯作区的代码打包(jar或war)即可。
mvn package
# 最后随意切⼀个分⽀,分离头指针消失。什么也没发⽣过。
git checkout ”任意分⽀“

存储工作

功能还没写完,还不适合提交,但此时需要去解决另⼀个bug,需要切换分⽀,则当前功能⼯作区中的改动会被新分⽀的内容覆盖,所以此时可以先储存下当前功能的内容,然后就可以放⼼的切换到其他分⽀先⼲别的事,过后再回来

git stash :储存当前修改( 未提交的内容 ,包括未暂存和已暂存的)

git stash list :查看存储列表

git checkout 其他分⽀ :可以放⼼的切到其他分⽀,完成其他⼯作

git checkout dev :切回dev分⽀,并: git stash apply :恢复储存的⼯作,继续编码

注意:没⽤的存储建议删除: git stash drop stash@{0} :删除某⼀个储存点

git stash clear :清空所有储存点

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注