git 方法

git 方法 :

第一次拿到项目 :

1. 设置提交代码的用户名和电子邮件地址(不重要)

​ 这两个命令不重要,知道就好,一次性操作

​ git config –global user.name “[name]”

​ git config –global user.email “[email address]”

2. 第一次从github/GitLab上拉代码 (不重要)

​ 一次性操作,知道就好

​ git clone [url] 该命令可用于通过指定的URL获取一个代码库。

3. 正常开发阶段 (重要)

​ 每一个项目正常都会有一个master分支或者develop分支 ,这两个分支一般不在上面的进行开发,我们自己会创建自己的分支来进行开发。

​ 创建并跳转分支 git checkout -b 分支名 这边的分支名一般以任务名来命名

​ 正常进行开发,每天开发记得要提交代码,在提交代码前,要记得在本地保存(commit)自己的代码

​ 本地commit自己的代码 步骤

​ **git status ===> git add . ===> git commit -m ‘干了什么’ **

​ git status 该命令将显示所有需要提交的文件

​ git add . 将多个文件添加至stage(暂存区)

​ git commit -m ‘干了什么’ 在版本历史记录中永久记录文件

​ 完成以上三步,还需要拉一下远程仓库当前分支的最新代码,如果这个分支是你一个人在用,这一步可以省略,如果是多人开发,再同一个分支,一定要拉代码

​ git pull origin 分支名 该命令是拉取远程分支的代码

此时拉取下来的代码可能会有冲突 ,那就要继续解决冲突,解决冲突可以用viscode的工具 ,解决完冲突之后,需要重新走一遍 (git status ===> git add . ===> git commit -m ‘干了什么’ ),走完这个之后,就可以安心提交代码了

​ git push origin 分支名 提交代码

4. 其他操作 (重要)

跳转分支 git checkout 分支名

查看分支 git branch

删除分支 git branch -D 分支名

合并分支 git merge 分支名

查看 两个分支的不同 git diff 分支名 分支名2

查看当前分支所有的commit git log

查看git 所有的操作 git reflog

回退版本 git reset --hard 版本号

修改上一个提交 git commit --amend

查看文件每一行的提交人 git blame filename(文件路径)

​ git blame filename -la,b(指定行数)

5. 特殊情况(重要)

  1. 拉取远程仓库中的某个分支

​ 远程仓库中有一个分支a,在自己本地环境没有,你不能基于自己所有在的develop分支,在创建这个分支出来a,然后再git pull origin a 这种做法是有风险的(具体风险就不说了,容易出问题)

正确的做法

​ 先 git fetch 然后 git checkout 分支名

​ git fetch 这个命令将某个远程仓库的更新全部取回本地

​ git fetch 和 git pull的区别:

​ git pull = git fetch + git merge
git fetch 相当于把远程仓库的文件同步到了本地仓库中,并没有同步到工作目录中,所以此时需要merge 一下,而 git pull 相当于把远程仓库的文件同步到了本地仓库和工作目录中。

  1. 忽略文件改动,不进行提交 git update-index --assume-unchanged 文件名

作用:忽略文件的改动,但是不加入.gitignore 文件中,这样可以达到仅在本地目录中忽略,不影响其他团队成员的工作。

忽略文件改动

  1. 更改本地commit名字 git commit --amend

  2. 修改分支名 git branch -m oldbranch newbranch

  3. git rebase 合并分支

​ 自己所在的分支myBranch,更新develop主线上的东西到该分支上: git rebase develop

​ git rebase 和 git merge 的区别:

​ 两个使用场景是不一样的,merge只是合并另外一个分支的内容,rebase也合并另外一个分支的内容,但是会把本分支的commits顶到最顶端

6.git stash

应用场景

在开发分支上干活,突然接到紧急bug,需要到主分支上修改。 开发分支的功能才开发一半,一般情况会先commit 一下 ,再跳到主分支上。但是又不想commit ,因为commit 过后,会有记录(无关记录)。所以这个时候就可以先stash一下,把开发到一半的代码存到stash中 ,然后在切换到主分支上修改bug,修改完之后再回到开发分支,git stash apply之前的存储,继续开发,这样就不会产生无用的commit

常用命令

git stash push -m ‘名字’ 将当前修改保存在stash中

git stash list 查看stash 中有哪些存储

git stash pop 将某个存储从stash释放出来 ,并且删除stash这个存储(不推荐使用)

​ 如果要应用并删除其他stash,命令:git stash pop stash@{$num}

git stash apply 将某个存储从stash释放出来 ,但并不会删除stash中这个存储(推荐使用)

​ 如果要应用某个特定的存储,命令 : git stash aplly stash@{$num}

git stash clear 清空stash中所有的存储

注意点:

使用git stash 之前必须要先git add . 只要被git 管理起来的文件才能被git stash

7.如何删除已经提交到远程仓库的commit

方案1:

git reset --hard commit_id(id为你想回到的版本id)
git push -f

方案2:

git reset --hard commit_id
git push  origin HEAD --force

8. 只提交 某个单独的文件

git commit  <file>  -m "your comment"

不需要先git add,执行后,直接git push即可

文件名 添加需要提交的文件名(加路径–参考git status 打印出来的文件路径)

9. git 初始化本地项目并推送到远程

  1. 切到项目根目录中

  2. 初始化git仓库并在本地提交

   git init
   git commit -m "init project"
  1. 把本地仓库和远程关联,并推送到远程
//与远程仓库关联
git remote add origin 远程仓库地址

//推送到远程仓库
git push -u origin master

分享一个知识点, 打个比方,如果要在自己分支(xuzp)合并wy的分支(wangy) 的1.txt 文件,可以先切换到自己分支 git checkout xuzp ,然后用git checkout --patch wangy 1.txt,把wy分支上的1.txt文件合并过来~

在这里插入图片描述

远程仓库项目较大,拉不下!(fatal: early EOF)

git clone命令时报错:fatal: early EOF

  1. 执行部分clone: git clone --depth 1 url克隆的地址
  2. 如果起作用了,clone剩下的代码: git fetch –unshallow
  3. 以后执行常规操作就行了 : git pull –all

git clone --depth=1 只克隆下包含最近一次commit的一个分支,这样这个项目文件就不会很大

10 git 查看 某一个commit 修改内容

git show *************(commit 的hash 值)

11 git rebase

git rebase 变基

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UBBQRpip-1645961365142)(asset\git\rebase.jpg)]

git rebase 和git merge的异同之处如下

(1)两者都可以用于本地代码合并

(2)git merge 保留真实的用户提交记录,且在merge时会生成一个新的提交

(3)git rebase 会改写历史提交记录,这里的改写不仅限于树的结构,树上的节点的commit id也会别改写,收益是可以保证提交记录非常清爽
在这里插入图片描述

git rebase 和git merge的异同之处如下

(1)两者都可以用于本地代码合并

(2)git merge 保留真实的用户提交记录,且在merge时会生成一个新的提交

(3)git rebase 会改写历史提交记录,这里的改写不仅限于树的结构,树上的节点的commit id也会别改写,收益是可以保证提交记录非常清爽

12. 强推代码

git push origin 分支名 -f

13.tag

git tag //显示默认列表

git tag tag名 //创建tag

git tag -a tag名 -m ‘注释信息’ //创建tag 并添加注释

git show v1.0.0 //v1.0.0为tag名称

git push origin --tags //推送所有tag到远程仓库

git push origin :refs/tags/tag名 // 删除远程仓库tag

git tag -d tag名*// 删除本地tag*

git tag -l | xargs git tag -d // 删除所有本地分支

git fetch origin --prune // 从远程拉取所有信息

14.提交规范

  • feat 增加新功能
  • fix 修复问题/BUG
  • style 代码风格相关无影响运行结果的
  • perf 优化/性能提升
  • refactor 重构
  • revert 撤销修改
  • test 测试相关
  • docs 文档/注释
  • build 对构建系统或者外部依赖项进行了修改
  • chore 依赖更新/脚手架配置修改等
  • workflow 工作流改进
  • ci 持续集成
  • types 类型定义文件更改
  • wip 开发中

返回上一次提交,并且保留提交前的代码

git reset --soft HEAD~1

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值