在场景中使用Git

说明

1、在[…]中的内容,需要根据实际情况进行修改

1、克隆工程

将远程的数据复制一份到本地

1
2
#【仓库copy地址】
git clone [git@rep.xx.com:zoeminghong/hello.git]

2、本地新建Git工程

现在打算将本地的工程,放到Git仓库进行托管了,并且远程Git仓库已经创建了该项目的工程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#本地初始化工程,会生成一个.git文件
git init

#将本地的工程与远程仓库中的项目进行关联(不用关心项目名不一致的问题)
#此时本地工程与远程仓库已经建立了联系
git remote add origin [git@rep.xx.com:zoeminghong/hello.git]

#将本地所有文件添加到Git中,进行监管
git add .

#将内容提交 【提交注释】
git commit -m "[...]"

#将本地的内容同步到远程仓库中
git push -u origin master

3、本地代码与远程代码冲突问题

本地代码未commit的前提下,解决与远程代码冲突问题

1
2
3
4
5
6
7
8
#将当前修改进行暂存起来
git stash

#获取最新的远程仓库代码
git pull

#恢复暂存的内容
git stash pop

本地代码已经commit后,解决与远程代码冲突问题

1
2
3
4
5
6
7
8
# 获取远端库最新信息 【分支名称】
git fetch origin [master]

# 做比较
git diff [本地分支名] origin/[远程分支名]

# 拉取最新代码,同时会让你merge冲突
git pull

方法2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 获取最新代码到tmp分支上 [远程的分支:本地分支]
git fetch origin [master:tmp]

# 当前分支与tmp进行比较
git diff tmp

# 修改冲突部分,进行本地commit操作
git add .

git commit -m "[...]"

# 将tmp中内容合并到当前分支中
git merge tmp

# 删除分支
git branch -d tmp

4、回退到上一个commit节点,无log记录

当前内容没有commit的情况下

1
2
# 当前HEAD,返回到上一次commit点,不会有任何日志记录
git reset HEAD --hard

最近内容已经commit的情况下

1
git reset HEAD^ --hard

5、回退到上一个commit节点,存在log记录

当前内容没有commit的情况下

1
2
# 当前HEAD,返回到上一次commit点
git revert HEAD

最近内容已经commit的情况下

1
git revert HEAD^

6、切换到指定commit节点

不存在log记录

1
2
3
4
5
# 获取所有的HEAD更改信息的sha1值
git reflog

# 切换至指定的sha1节点
git reset --hard [sha1值]

7、删除文件

保留副本操作

1
git rm --cache [文件名]

还原操作

1
git reset HEAD [文件名]

直接文件删除

1
git rm [文件名]

还原操作

1
2
3
git reset HEAD [文件名]

git checkout -- [文件名]

8、本地分支与远程分支相连

本地创建了一个分支,远程也有一个分支,进行两者关联

1
git checkout -b [本地分支名] origin/[远程分支名]

9、Tag使用

我们在开发的时候,可能存在线上发布了一个版本,需要给这个版本代码打上一个标签,到时候可以方便回退到这个版本

1
2
3
4
5
6
7
8
# 创建tag 【tag名】
git tag v1.0

# 查看存在的tag
git tag

# 将tag更新到远程
git push origin --tags

接下来就讲解回退到具体的tag

1
2
3
4
5
6
7
8
9
10
11
12
13
# 保存当前编程环境
git stash

# 切换回某个tag(v1.0)
git show v1.0

#【sha1】
git reset --hard [2da7ef1]

# 创建分支来保存tag的数据,tag只是一个节点的标记,无法承载数据的修改记录,【分支名】
git checkout -b [bill]

# 接着你就可以在这里改啊改了

切换回主干或其他分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 切换分支
git checkout master

# 日志记录
git reflog

# 显示stash列表
git stash list

# 恢复之前的工作环境代码
git stash apply

# 删除stash
git stash drop

分支与主干合并

1
2
3
4
5
6
git add .

git commit -m "v1.1"

# bill分支合并到当前分支【分支名】
git merge [bill]

10、关于代码的比较

1
2
3
4
5
6
7
8
9
10
11
# 显示暂存区和工作区的差异
$ git diff

# 显示暂存区和上一个commit的差异【文件名】
$ git diff --cached [hell.txt]

# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD

# 显示两次提交之间的差异【分支名】
$ git diff [first-branch]...[second-branch]
迹_Jason wechat
分享快乐,感受科技的温度
坚持原创技术分享,您的支持将鼓励我继续创作!