Git相关

git相关的使用技巧都在这篇文章,随时补充完善ing!!

0、Git的几种状态

原始内容
      ↕       ←     修改操作  
 工作区
      ↓       ←     缓存操作(git add)
 缓存区
      ↓       ←     提交操作(git commit)
本地仓库
      ↓       ←     推送操作(git push)
远程仓库

1、Git常用操作

1、拉取服务器代码

git pull

提交代码之前,需要先从服务器上面拉取代码,以防覆盖别人的代码。

拉取后代码就处于”工作区“。

2、查看当前工作目录树的工作修改状态

git status

状态有如下几种:

1:Untracked:未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
2:Modified:文件已修改, 仅仅是修改, 并没有进行其他的操作.
3:deleted:文件已删除,本地删除,服务器上还没有删除.
4:renamed:

3、将状态改变的代码提交至缓存

git add 文件      #添加单个文件
git add -u 路径   #将修改过的被跟踪代码提交缓存(路径下的文件)
git add -A 路径   #将修改过的未被跟踪的代码提交至缓存(路径下的文件)

git add -u ./server/     #将 ./server目录下被跟踪的已修改过的代码提交到缓存中 ;

git add -A ./server/     #将 ./server目录下未被跟踪的已修改过的代码提交到缓存中 ;

add后更改文件处于“缓存区”。

4、将代码提交到本地仓库中

git commit -m "注释部分"

 commit操作后更改文件处于“本地仓库”。

5、将代码推送到服务器

git push

 push操作后更改文件处于“远程仓库”。

6、代码误提交问题

(1)已修改,未缓存(只修改内容,未进行其他操作)

恢复方法:使用以下任一指令:

方法一:git reset --hard
方法二:git checkout .
方法三:git checkout -- <FILENAME>

(2)已缓存,未提交(已执行git add,未执行git commit)

即缓存区的内容不想要了。

恢复方法:使用以下任一指令:

方法一:git reset --hard
方法二:git reset HEAD
方法三:
       git reset
       git checkout .

(3)已提交,未推送(已执行git commit,未执行git push)

恢复方法:使用远程仓库覆盖本地仓库。

git reset --hard origin/branch

(4)已经推送(已执行git push)

恢复方法:回滚本地仓库,强制推送覆盖远程仓库。

git reset --hard HEAD^
git push -f

2、分支管理

(1)分支命名

master 分支

  • master 为主分支,也是用于部署生产环境的分支,确保master分支稳定性

  • master 分支一般由develop以及hotfix分支合并,任何时间都不能直接修改代码

develop 分支

  • develop 为开发分支,始终保持最新完成以及bug修复后的代码

  • 一般开发的新功能时,feature分支都是基于develop分支下创建的

feature 分支

  • 开发新功能时,以develop为基础创建feature分支

  • 分支命名: feature/ 开头的为特性分支, 命名规则: feature/user_module、 feature/cart_module

release分支

  • release 为预上线分支,发布提测阶段,会release分支代码为基准提测

当有一组feature开发完成,首先会合并到develop分支,进入提测时,会创建release分支。
如果测试过程中若存在bug需要修复,则直接由开发者在release分支修复并提交。
当测试完成之后,合并release分支到master和develop分支,此时master为最新代码,用作上线。
复制代码

hotfix 分支

  • 分支命名: hotfix/ 开头的为修复分支,它的命名规则与 feature 分支类似

  • 线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支

(2)常见任务

增加新功能

(dev)$: git checkout -b feature/xxx            # 从dev建立特性分支
(feature/xxx)$: blabla                         # 开发
(feature/xxx)$: git add xxx
(feature/xxx)$: git commit -m 'commit comment'
(dev)$: git merge feature/xxx --no-ff          # 把特性分支合并到dev
复制代码



注:对于有删除文件的情况执行git add可能还是要多加些参数
1. 忽略删除的文件
git add --ignore-removal <pathspec>

2. 作用删除的文件
git add --all <pathspec>

修复紧急bug

(master)$: git checkout -b hotfix/xxx         # 从master建立hotfix分支
(hotfix/xxx)$: blabla                         # 开发
(hotfix/xxx)$: git add xxx
(hotfix/xxx)$: git commit -m 'commit comment'
(master)$: git merge hotfix/xxx --no-ff       # 把hotfix分支合并到master,并上线到生产环境
(dev)$: git merge hotfix/xxx --no-ff          # 把hotfix分支合并到dev,同步代码
复制代码

测试环境代码

(release)$: git merge dev --no-ff             # 把dev分支合并到release,然后在测试环境拉取并测试
复制代码

生产环境上线

(master)$: git merge testing --no-ff          # 把testing测试好的代码合并到master,运维人员操作
(master)$: git tag -a v0.1 -m '部署包版本名'  #给版本命名,打Tag
复制代码

image

git merge和rebase的区别

git merge 与 git rebase的区别_Michaelliu_dev的博客-CSDN博客_merge和rebase区别

3、Git diff操作

1)git diff : 对比工作区和暂存区(git add 之前)

注:如果已经执行“git add ”,执行此指令不会有任何区别显示。

2)git diff --cached: 对比暂存区(git add 之后)和版本库(git commit 之后)

注:如果已经“git commit”,执行此指令不会有任何区别显示。

3)git diff HEAD: 对比工作区(未 git add)和版本库(git commit 之后)

注:

4、Git缩写A C D M R T U X代表的含义

git中,经常会在一些操作后,出现简写字符用于表达某些状态。

操作截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201805/12/150639hp0v0nz0mmt9jkxc.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

在切换分支之后的两行前面分别有两个字符,它们分别代表什么含义呢。

字符含义列表如下:

A: 工作区新增的文件.

C: 文件的一个新拷贝.

D: 你本地删除的文件,服务器上还在。

M: 文件的内容或者mode被修改。

R: 文件名被修改了。

T: 文件的类型被修改了。

U: 文件没有被合并,需要完成合并才能进行提交。

X: 未知状态。

5、Git配置免密登陆(记住密码)

(1)最简介的方式是设置 credential.helper store 配置。

过程很简单,执行如下命令然后再输入一次密码就好了,后续所有的操作就都不用在输密码了。

 git config --global credential.helper store

6、git log查看历史提交记录记录相关

关于git log更多使用方法参见:Git-叹为观止的 log 命令 & 其参数_DRPrincess的博客-CSDN博客_git log

(1)git log   #这个就是最常用的了。效果如下:

但是,通常要查看的提交记录太多久远了,挨个向下翻肯定是不现实的。为此有一下几种方法:

(2)git  log > temp.txt  #然在在这个txt文档里面查找

(3)git log --author="johnyxiong"  #根据提交者查找提交记录,效果如下:

(4)git log --since="2018.08.08" --until="2018.08.09"  #根据起止日期查找,效果如下:

7、查看/修改用户名、邮箱

用户名和邮箱地址的作用

用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变。

每次commit都会用用户名和邮箱纪录。

github的contributions统计就是按邮箱来统计的。

查看用户名和邮箱地址:

git config user.name

git config user.email

修改用户名和邮箱地址:

git config --global user.name "shuozhuo"
git config --global user.email "shuozhuo@tencent.com"

8、提示邮箱不对

或者如下提示。

You can't push commits with committer ‘root’ or email 'root@tencent.com' who is not exit among the registered users

含义很明确。公司代码提交有个规范,必须要是公司的邮箱否则检查不通过。

解决方法也很简单:重新设置下优先就行了。

#修改对应的email
git config user.email shuozhu@tencent.com
 
#查看修改结果
git config user.email

9、Your branch is ahead of 'origin/master' by 4 commits.

原因:在本地主机中进行了修改,但是没有推送到远程主机。 

$ git checkout master
M	mod_global_pb
M	mod_qd_comm_proj
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 4 commits.
  (use "git push" to publish your local commits)

 (1)远端覆盖本地的同步。注意:确保本地代码确实不在需要在进行覆盖。

git reset --hard origin/master
或者
git branch -u origin/master

(2)保留本地当前改动。

git push -u origin master

10、kex_exchange_identification: read: Connection reset by peer

Please make sure you have the correct access rights
and the repository exists.  报错,如下。

和 ssh-keygen 、 id_rsa.pub 没啥关系;主要是ssh失效了,按照 这里 操作一下就可以了。即:

执行一下:

git remote set-url origin http://AAAAAAAAAAAA.git

#注:后面的这个http:XXXX.git从下面复制过来就好。

11、Linux下git diff等操作没有颜色

在linux中git安装后颜色是不自动设置的。
下面的命令设置git的颜色:

git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto

12、Git删除文件

执行git status发现如下:

第二条提示。git checkout 就是丢弃工作期的更改,此时相当于撤销删除;显然不是我们想要的。

第一条提示。即删除文件 git rm file1.txt file2.txt

总结:删除文件和添加文件类似,都是一次commit,本地文件的任何更改都要添加到暂存区然后提交到版本库。 简单来说对于追加提交就是git add,对于删除文件的提交就是git rm。

13、git项目地址替换

这里主要指的就是域名下线,如何切换到一个新的域名。

举个例子:原域名是git.code.ooaa.com,由于证书过期域名被下线了要替换成git.wooaa.com。

Http: 
    git remote set-url origin https://git.wooaa.com/xxx.git
SSH:
    git remote set-url origin git@git.wooaa.com:xxx.git

注:其中xxx为实际仓库路径,一个举例如下.
git remote set-url origin https://git.woa.com/qidian_platform/comm_proj

git remote set-url origin https://git.wooaa.com/xxxxx_platform/qd_cc_proj.git

我们可以通过 git remote -v 查看当前项目在用的地址是啥。

git 入门教程之删除文件 - 哔哩哔哩

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱齿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值