Git大全

git总结

commit处理

  1. 修改提交

    git commit --amend
    git push -f //和远程分支记录已经不同了,需要强制推送,在自己的分支可以这么操作

    或者使用git压缩将几个commit合并压缩

不需要提交某些文件

  1. 将文件夹加入Ignore Files:右键文件 – Git – add到Ignore

    这个只能将文件夹加入忽略文件,本质也是移出了VCS

  2. 项目有个.idea文件,编辑下面的.gitignore

  3. 也可以将某个文件移出VCS以达到不提交远程仓库的目的

    git rm -r  --cached "vue.config.js"
    

    比如前端的 vue.config.jspackage-lock.json 一般是不需要提交到远程的,移除VCS

恢复

  1. 不暂存检出
    使用命令将某一个文件的改变还原(对于没有暂存的红色文件)
git checkout src/main/java/com/wpp/framework/config/KaptchaTextCreator.java
// 如果文件已经暂存,使用`git reset 文件`将文件取消暂存,然后选择是否检出
    
// 撤销所有修改,新增
git checkout .
  1. 将文件移出版本控制
// 不需要加入版本控制的不小心加入了,使用下面命令移出VCS
git rm --cached src/test/java/Main.java

git的使用总结

首先检出checkout是不能随便检出的,会丢失或者将文件自动暂存or搁置起来(不太懂具体怎么回事);所以在检出之前最好做好处理

  1. 比如可以将代码搁置起来,具体操作看文档不要弄错了
  2. 或者将代码提交,需要的话push到远程;
    1. push之前需要pull拉取代码,防止别人提交了新的代码造成合并冲突,拉取后的代码应该是进入版本库了,这个不要自己担心
    2. push远程的时候默认push到远程同名分支,可以设置关联或者指定分支push
  3. git也是可以查看文件修改的地方的,使用git diff 文件名Git基础-git diff 比较文件的差异-CSDN博客git diff tjw_dev_new origin/tjw_dev_new查看远程和本地版本库的代码差异,红色的-表示远程删除的,绿色的+表示远程添加的

其次不想提交的代码可以使用

  1. 如果想暂存使用git add 文件名git add .暂存所有
  2. git restore 文件名将暂存区(工作目录)的修改丢弃,git restore .丢弃所有,但是未追踪的文件不会被丢弃,new file不会消失,只会丢弃更改不会丢弃文件

想要保留代码但合并远程冲突

  1. 自行百度git stash
  2. git stash能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
  3. git stash直接保存工作目录和暂存区的改动,版本回退到你的上一次提交,可以发现文件代码也回退了,已经提交了不能stash
  4. 在stash之后可以进行拉取合并了,合并解决后使用git stash pop弹出保存的内容
  5. 删除stash堆栈中的内容:
    • 先查看git stash list
    • 清除git stash clear
    • 删除第一个队列git stash drop stash@

git版本回退

  1. 提交错了或者提交了不需要的东西,可以进行版本回退慎用
  2. git commit --amend -m "提交消息"可以将上一次的提交记录去除,修改commit信息

更多了解

强制更新覆盖本地

本地分支被我弄乱了,虽然代码一样但是git分支信息不同也提示push,所以直接将远程分支信息拉取强制覆盖本地

git reset --hard origin/develop 

工作区:本地编辑器

暂存区:git add后进入暂存区

本地仓库:git commit后进入本地仓库

git流程

添加到暂存区->拉取->提交->推送

没有添加到暂存区->拉取(会将你的更改搁置,不过好像没啥影响,后面流程一样,搁置架一般不去管,但是有时候可以去里面找到你不小心丢失的更改)…

首先添加到暂存区

git add . —添加全部修改

git status —查看文件状态

git pull

git commit -m “提交信息”

提交自己的分支到远程

git push

push报The current branch master has no upstream branch,将本地的分支与远程仓库的分支进行关联

git branch --set-upstream-to origin/develop

git push —set-upstream origin tjw_develop

推到远程开发分支

git pull origin develop

git push origin tjw_develop:develop

Git

搁置

对应git stash

Shelf的地方,译为架子,Unshelve可以取消搁置,

当我们需要切换分支,但又不想提交代码时,可以将改动搁置,检出之后再回来 在git-Shelf可以看到搁置代码,使用Unshelve取消搁置还原代码

git stash pop

当然如果不需要了可以删除搁置的代码,删除后会进入Recently Deleted,防止误删

暂存

对应git add

添加到暂存区之后,检出分支是会丢失没有提交的代码的。。。

git stash 和 git add 的区别及使用技巧_git stash和git add区别-CSDN博客

restore和reset

restore是将暂存区的改动丢弃,未跟踪的文件restore之后不会受影响

GIT中reset, restore and revert指令的区别_git restore-CSDN博客

Git命令

  • Git是免费、开源的分布式版本控制系统
  • 用户即使离线也可以本地提交,push推送到远程服务器才需要联网。

Git工作流程

推拉

认识git工作区域:

  1. 工作空间:电脑本地看到的文件和目录,在git的版本控制下就形成了工作空间
  2. 暂存区,临时存放你未提交的改动,.git目录下,比如:git add
  3. 本地仓库:git clone之后就是把远程仓库克隆到本地仓库
  4. 远程仓库:github、gitee、gitlab这些

红色:没有提交到暂存区,不在版本控制范围之内

绿色:add之后没有提交,在暂存区

蓝色:修改过的文件,提交之后变为正常颜色

git status  查看当前状态
git log  查看提交日志
git merge dev  合并dev分支至当前分支
git add .      添加当前目录全部文件至暂存区
git commit -m '测试'     提交,提交信息为测试
git push origin master  推送至远端分支(master为需要推送分支,按实际需要选择)
git pull origin master  合并远端分支至本地 (git pull 等于 git fetch + git merge)
git pull --rebase origin master rebase方式合并远端分支至本地
git branch 查看当前分支
git branch dev 创建dev分支  (dev可选)
git branch -d dev 删除dev分支
git branch -r 查看远程分支
git branch -a 查看所有分支 (包括远程分支)
git checkout master 切换至master分支
git checkout -b dev 创建dev分支并切换至dev分支
git checkout -b dev origin/dev 创建远程分支到本地
git restore file 丢弃工作区修改(file为具体文件名称)
git restore * 丢弃所有工作区修改
git restore --staged file  回退暂存区文件 不会更改文件内容
git rebase --continue   rebase后继续操作
git rebase --abort 退出rebase 操作

基础操作

拉取指定分支:git pull http://117.73.11.3:8090/WindPowerPrediction-server/wpp-web.git zz_develop

  1. 克隆远程版本库
    相当于idea从VCS拉取代码
git clone url  克隆远程版本库
git clone -b  <指定分支名>  <ssh或者http地址>
git init   初始化git仓库,将工作目录交给git管理,会生成一个.git版本库文件
git remote add origin https://github.com/vuejs/vue.git 指定仓库地址,将远程仓库指定为origin
  1. 创建开发分支并切换
    相当于idea新建分支
git checkout -b dev2  新建一个分支,并且切换到新的分支dev2
git branch dev2 新建一个分支,但是仍停留在原来分支
  1. git add的使用格式
    相当于idea将文件交给git管理
git add .   添加当前目录的所有文件到暂存区
git add [dir]   添加指定目录到暂存区,包括子目录
git add [file1] 添加指定文件到暂存区
  1. git commit的使用格式
    相当于idea打包提交
git commit -m [message] 提交暂存区到仓库区,message为说明信息
git commit [file1] -m [message] 提交暂存区的指定文件到本地仓库
git commit --amend -m [message] 使用一次新的commit,替代上一次提交
  1. git status
    相当于idea文件颜色表示是否修改/新建?
git status  查看当前工作区暂存区变动
git status -s  查看当前工作区暂存区变动,概要信息
git status  --show-stash 查询工作区中是否有stash(暂存的文件)
  1. git push的使用格式
    git push origin <指定的分支名> -f
    -f可选,表示强行推送
git push <远程主机名> <本地分支名>:<远程分支名>
  1. git log
    相当于idea查看提交历史
git log  查看提交历史
git log --oneline 以精简模式显示查看提交历史
git log -p <file> 查看指定文件的提交历史
git blame <file> 一列表方式查看指定文件的提交历史
  1. git diff
    相当于idea比较差异
    工作区就是你写代码的编辑器里,暂存区就是git add 之后,使用git add .全部暂存后git diff 就没有差异显示了
git diff 显示暂存区和工作区的差异
git diff filepath   filepath路径文件中,工作区与暂存区的比较差异
git diff HEAD filepath 工作区与HEAD ( 当前工作分支)的比较差异
git diff branchName filepath 当前分支的文件与branchName分支的文件的比较差异
git diff commitId filepath 与某一次提交的比较差异
  1. git pull/git fetch
git pull  拉取远程仓库所有分支更新并合并到本地分支。
git pull origin master 将远程master分支合并到当前本地master分支
git pull origin master:master 将远程master分支合并到当前本地master分支,冒号后面表示本地分支
// pull就是fetch和merge的组合
git fetch --all  拉取所有远端的最新代码
git fetch origin master 拉取远程最新master分支代码

分支操作

查看分支

git branch    查看本地所有的分支
git branch -r  查看所有远程的分支
git branch -a  查看所有远程分支和本地分支

删除分支

git branch -D <branchname>  删除本地branchname分支

切换分支

git checkout master 切换到master分支

合并分支

git merge master  在当前分支上合并master分支过来
git merge --no-ff origin/dev  在当前分支上合并远程分支dev
git merge --abort 终止本次merge,并回到merge前的状态

撤销回退

git checkout

如果文件还在工作区,还没添加到暂存区,可以使用git checkout撤销;这也是为什么切换分支的时候一定要记得提交commit一下,因为checkout有可能撤销掉刚写的代码

git checkout [file]  丢弃某个文件file
git checkout .  丢弃所有文件

git reset

git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本.回退之后后面的版本就会没有了

将暂存区的文件取消暂存或切换到指定版本

git revert

与git reset不同的是,revert复制了那个想要回退到的历史版本,将它加在当前分支的最前端。

git remote

// 列出每个远程服务器的简称 origin
git remote
// -v查看详细信息
git remote -v

分支合并

// 将xx分支合并到当前分支中去
git merge <xx分支>
rebase

rebase好处是: 获得更优雅的提交树,可以线性的看到每一次提交,并且没有增加提交节点。所以很多时候,看到有些伙伴都是这个命令拉代码:git pull --rebase

冲突解决

两个分支同一个文件里面的代码不一样,如果合并就会冲突。

posted @ 2024-03-13 14:26  好滴都  阅读(148)  评论(0)    收藏  举报