git基础

205 阅读6分钟

1. Commit message 的格式

<type>(<scope>): <subject>

(1)type

type用于说明 commit 的类别,只允许使用下面7个标识。

  • feat:新功能(feature)
  • fix:修补bug
  • docs:文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
  • test:增加测试
  • chore:构建过程或辅助工具的变动

如果typefeatfix,则该 commit 将肯定出现在 Change log 之中。其他情况(docschorestylerefactortest)由你决定,要不要放入 Change log,建议是不要。

(2)scope

scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

(3)subject

subject是 commit 目的的简短描述,不超过50个字符。

  • 以动词开头,使用第一人称现在时,比如change,而不是changedchanges
  • 第一个字母小写
  • 结尾不加句号(.

2. 新建本地分支并推送到远端

新建本地分支

git checkout -b dev

提交本地分支到远程分支

git push origin dev

3. 合并分支并推送到远端

首先切换到release分支

git  checkout release

把远程release上的代码pull下来

git pull origin release

把dev分支的代码合并到release上

git  merge dev

4. 回退版本

查看代码提交记录,提交id

git log

回退到指定的id

git reset --hard 提交id

强推远程

git push -f

5. 切换git代码源地址

设置需要切换的源地址
git remote set-url origin http://xxx.git

查看源地址
git remote -v

6. 复制git仓库的项目

新建项目
选择Import repository ---> Repo by URL

输入Git repository URL
http://junchao:54910207Li@192.168.16.193/dev9/pmb.git

http://192.168.16.193/dev9/pmb.git 为复制仓库地址

junchao:54910207Li 为git 用户名:密码

7. 强制覆盖本地

git强制覆盖本地命令(单条执行): git fetch --all && git reset --hard origin/master && git pull

  • 第一个是:拉取所有更新,不同步;
  • 第二个是:本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件);
  • 第三个是:再更新一次(其实也可以不用,第二步命令做过了其实)

8. 设置git pushgit pull的默认origin

git remote show origin查询远程仓库配置情况

(1)pull操作

1、将远程指定分支 拉取到 本地指定分支上:

git pull origin <远程分支名>:<本地分支名>

(注:命令里的尖括号<>只是包裹中文的标识,方便你看的,实际使用时不用写,不过冒号需要)

2、将远程指定分支 拉取到 本地当前分支上:

git pull origin <远程分支名>

3、将与本地当前分支同名的远程分支 拉取到 本地当前分支上(需先关联远程分支)

git pull

在克隆远程项目的时候,本地分支会自动与远程仓库建立追踪关系,可以使用默认的origin来替代远程仓库名

(2)push操作

1、将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反):

git push origin <本地分支名>:<远程分支名>

2、将本地当前分支 推送到 与本地当前分支同名的远程分支上(注意:pull是远程在前本地在后,push相反):

git push origin <本地分支名>

3、将本地当前分支 推送到 与本地当前分支同名的远程分支上(需先关联远程分支)

git push
注:

关联git push的远端分支:

git push --set-upstream origin dev

本地关联远程分支命令:

git branch --set-upstream-to origin/分支名

9. 全局免密码配置

配置存储模式

git config --global credential.helper store

执行之后会在用户主目录下的.gitconfig文件中多加 helper = store

Linux 下查看:

 vim ~/.gitconfig

windows10 下当前用户路径:%USERPROFILE%

内容如下:

[user]
        name = uxpi
        email = 360032368@qq.com
[credential]
        helper = store

然后在项目目录,执行git pull命令,会提示输入账号密码。这次输入账号密码之后,就会记住账号密码,并且会在当前用户根目录下生成一个.git-credentials文件,下一次就不用再输入账号密码了。

10. 提交代码-取消暂存和查看修改

取消暂存的文件

git reset filename

查看文件的修改

git diff README.md

11. 恢复之前版本的两种方法

方法一:git reset

原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本

适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。

方法二:git revert

原理: git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。

适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。

12. 基于远端分支创建本地分支

git checkout -b 新的分支名 origin/远程仓库分支名

13. 合并新的分支到当前分支,合成一条提交记录

git merge --squash 新的分支名

14. 代码检出

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。

这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并(git merge)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。

git cherry-pick <commitHash>

上面命令就会将指定的提交commitHash,应用于当前分支。这会在当前分支产生一个新的提交,当然它们的哈希值会不一样。

git cherry-pick <HashA> <HashB>

上面的命令将 A 和 B 两个提交应用到当前分支。这会在当前分支生成两个对应的新提交。

15. Git 跳过检查提交代码

git commit -m '提交信息' --no-verify

16. 强制覆盖本地代码的命令

git fetch --all
git reset --hard origin/master
git pull

17. 修改最近一次提交信息

git commit --amend