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 将本地新建的分支提交的远程

五 .gitignore不起作用

0. 进入项目路径
1. 清除本地当前的Git缓存
git rm -r --cached .

2. 应用.gitignore等本地配置文件重新建立Git索引
git add .

3. (可选)提交当前Git版本并备注说明
git commit -m 'update .gitignore'

.gitignore

# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

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

# Mac
.DS_Store
 
# Maven
log/
target/

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

posted @ 2023-03-18 15:23  西东怪  阅读(21)  评论(0编辑  收藏  举报
返回顶端