首页 > 其他分享 >Git详解

Git详解

时间:2023-03-18 15:34:06浏览次数:35  
标签:git 仓库 rebase -- Git 远程 详解 分支

Git的详解

一.git的全局设置

git config --global user.name  "username"  
git config --global user.email  "email"

二.Git的基础命令

(在需要目录下打开Git bash窗口)

1.在本地初始化一个Git仓库(不常有)

git init

2.从远程仓库克隆

git clone +地址

3.基础命令

3.1基础操作

通用:
`git log`  查看版本号

`git status`:查看状态

清除密码:
git config --system --unset credential.helper
git credential-manager uninstall

重新设置要存储账号密码:
git config --global credential.helper=store

3.2本地仓库操作:

`git add`: 把文件添加到本地仓库的暂存区
git add * 添加所有

`git commit`: 把文件提交到本地仓库,注意必须加 -m 后面跟着本次提交的内容说明
git commit -m "...内容说明.." + 被提交文件名
添加了说明没有文件名  就只要说明没有文件名
没有添加说明  说明默认为文件名
内容说明最号为:   说明 + 文件名 git commit -m "init test.txt" test.txt

`git reset`: 将暂存区的文件取消暂存或者却换到指定版本
git reset + 文件名  取消暂存
git reset --hard + 版本号 回到指定版本

3.3远程仓库操作:

`git push`:将本地仓库的内容变更 提交到远程仓库  origin就代表远程仓库,master代表分支 ,第一次提交需要加上`-u`参数,git会将本地仓库的master分支和远程仓库的master分支做一个关联

`git remote`: 将本地仓库和远程仓库链接起来 origin是远程仓库的名称,git的默认,可以理解为给远程仓库起了个别名
git remote -v  加v可以查看具体哪一个远程仓库

git remote add origin + url  :连接远程仓库

git push origin + 分支名:  从本地推送到远程

git pull origin + 分支:  从远程拉取

无法push的问题!!!注意事项

!!!push前需要pull拉下
git pull origin + 分支= git fetch + git merge FETCH_HEAD 
**git pull --rebase origin + 分支 = git fetch + git rebase FETCH_HEAD **

git merge需要冲突要手动解决  git rebase会解决冲突 会更好

git merge:

       D--------E
      /          \
 A---B---C---F----G---   test, master
 
 git rebase:

A---B---D---E---C‘---F‘---   test, master

git --rebase会将两个分支融合成一个线性的提交,不会形成新的节点。

rebase好处
想要更好的提交树,使用rebase操作会更好一点。
这样可以线性的看到每一次提交,并且没有增加提交节点。
merge 操作遇到冲突的时候,当前merge不能继续进行下去。手动修改冲突内容后,add 修改,commit 就可以了。
而rebase 操作的话,会中断rebase,同时会提示去解决冲突。
解决冲突后,将修改add后执行git rebase –continue继续操作,或者git rebase –skip忽略冲突。

解决问题

解决每次git pull、git push都需要输入账号和密码的问题
git config --global credential.helper store
然后再重新执行一次git pull,这次它还是提示你输入账号和密码:

如果本地仓库和远程仓库都有各自的历史
git pull origin 分支 --allow--unrelated--histories

3.4分支操作:

`git branch`: 分支操作命令
git branch  列出所有本地分支
git branch -r  列出所有远程分支
git branch -a 列出所欲本地分支和远程分支

`git branch 分支名称`: 创建新分支 (默认从当前的分支进行创建)

`git push origin + 新分支名`  推送新分支到远程

`git branch 新分支名称 已有分支名称` : 从已有的分支copy创建一个新的分支 

`git checkout 分支名称` : 切换到对应的分支

`git branch -d 分支名称`:删除分支(当前所在的分支 不能删除)

3.5分支合并

`git merge` 
例:将a1 a2 合并到主分支master
git checkout master
git merge a1 到编辑窗口 保存退出后合并
git merge a2 同理

可以手动将特殊的删掉 留下需要合并的

<<<<<<< HEAD
 这块代码是当前版本的代码
=======

=======
这块代码是dev分支的代码
>>>>>>> dev

然后重新提交上去
如果出现 cannot do a partial commit during a merge
在commit'时最后加上 -i

3.6 git标签

`git tag`:查看标签

`git tag + name`: 创建标签

`git push origin + name`:将标签推送到远程,记录下当前分支的所有信息

`git checkout -b 分支名 标签名`: 将标签中的消息到处到某分支

三.工作区和缓存区

Git 工作区、暂存区和版本库概念:

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:

四 idea使用git

!!!初始化本地 git init

!!!克隆

4.1 gitignore

.gitignore : 忽略不需要提交的文件

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr


# Maven
log/
target/

4.2 idea解决冲突

绿色:无脑点箭头 (Accept)

红色(冲突) :当前的版本和远程仓库版本之间选择一个 ,另一个忽略即可(选一个箭头Accept,另一个x Ignore)

蓝色:无脑点箭头 (Accept)

4.3 stash

`git stash list`:查看

`git stash apply`: 恢复

`git stash drop`: 删除

`git stash pop` :恢复并删除

4.4 revert回滚

1、找到你误提交之前的版本号

2、git revert -n 版本号

3、git commit -m xxxx 提交

4、git push 推送到远程

4.5 idea分支切换和合并

Checkout切换到develop分支

Merge 'develop' into 'master' 将develop分支合并到master分支

push 将本地新建的分支提交的远程

标签:git,仓库,rebase,--,Git,远程,详解,分支
From: https://www.cnblogs.com/kidzxy/p/17230846.html

相关文章

  • Centos7安装Gitlab
    1.什么是Gitlab?GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab是......
  • Tarjan算法详解
    Tarjan算法介绍Tarjan算法是用于在有向图中求强连通分量的算法这里给出强连通分量的定义:有向图中一个最大的图,使这个图中每个两点都能够互相到达。这个最大的图称为强连......
  • storybook组件属性详解:组件props到strorybook Args
    首先我们查看官方文档:https://storybook.js.org/docs/vue/writing-docs/doc-block-argstable#customizing官方的例子么有看到v-model如何处理,数组、对象等复杂属性定义。......
  • git add . 解决问题 filename too long/warning: LF will be replaced by CRLF in xxx
    filenametoolong/warningWindows系统下,在Git使用过程中,出现​​“filenametoolong”​​错误提示。直译成中文的意思就是:”文件名过长“。导致始终无法进行将文件添加到......
  • 响应式编程详解,带你熟悉Reactor响应式编程
    文章目录​​一、什么是响应式编程​​​​1、Java的流和响应式流​​​​2、Java中响应式的使用​​​​3、Reactor中响应式流的基本接口​​​​4、Reactor中响应式接口的......
  • jvm jstat -gcutil 参数详解
    jstat-gcutil854410008544进程ID,用jps命令查出1000单位毫秒,每秒读取一次S0survivor0使用百分比S1survivor1使用百分比EEden区使用百分比O老年代使用百分比M......
  • JSON详解转载
    JSON详解阅读目录JSON的两种结构认识JSON字符串在JS中如何使用JSON在.NET中如何使用JSON总结JSON的全称是”JavaScriptObjectNotation”,意思是JavaScript对象表示......
  • git的使用
    1.版本控制工具一种软件工程技巧,确保由不同人所变编辑的同一程序文件都能得到同步追踪、维护、控制集中式集中管理的服务器,保存所有文件的修订版本。开发人员需要......
  • gitlab-ce 初始密码无法登录的问题
    gitlab-ce安装好后,root用户的初始密码放在/etc/gitlab/initial_root_password文件中,但我用这个密码仍然登录失败。用下面的命令可快速重置root密码,已验证通过:[ro......
  • linxu目录详解
    /bin:bin是Binaries(二进制文件)的缩写,这个目录存放着最经常使用的命令。/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev:dev......