Git基础学习

语雀不支持公开分享了,打算将博客转移阵地,目前先把以前的博客转录进来

1.介绍

git cmd 类似Windows的cmd操作
git Bash 类似Linux下的操作
git Gui 图形化操作,操作太慢了,一般不使用

2.基本命令(Linux)

  • cd ..回退到上一个目录
  • pwd 显示当前所在的目录
  • ls 显示当前目录的所有文件
  • touch 新建一个文件 例如:touch index.js
  • rm 删除一个文件夹
  • rm 删除一个目录 例如:rm -r src 删除src目录
  • mv 移动文件 例如:mv index.html src index.html
  • reset 初始化终端
  • clear 清屏
  • history 查看历史命令
  • exit 退出
  • # 号表示注释

3.配置Git

  • git config -l 查看所有配置
  • git config --system --list 查看系统配置
  • git config --global --list 查看用户全局配置

4.环境变量

安装时自动放入环境变量,无需配置

5.基本理论

5.1.分为四个工作区域:

  • workspace 工作目录(本地)
  • index/stage 暂存区(暂存)
  • repository 资源库(本地仓库)
  • remote 远程区(git远程仓库)

5.2.核心命令

  • git add 本地放入暂存区
  • git commit -m '备注备注' 暂存区放入本地仓库
  • git push 本地仓库提交到远程仓库
  • git clone/fetch 将文件复制到本地
  •   git clone <版本库的url>
    
  • git pull 将文件拉取并合并到本地
  •   git pull <远程主机名> <远程分支名>:<本地分支名>
    

5.3.分支

  • master 主分支
    除了主分支 还有其他个人的分支
  •   删除分支 git branch -d 分支名字
    
  •   创建分支 git branch 分支名字
    
  •   切换分支 git checkout 分支名字
    
  •   合并到主分支 git merge 分支名字
    
  •   查看合并后的分支 git branch --merged
    
  •   查看未合并的分支 git branch --no-merged
    
  •   查看状态 git status
    
  •   打开文件查看冲突,确定保留什么内容,修改内容后,删除<<<<<<< , ======= , 和 >>>>>>>这些标记。保存文件。
    
  •   将文件保持到暂存区 git add .
    
  •   提交文件到本地仓库 git commit -m '文件'
    
  •   提交到远程仓库 git push
    

5.4.文件操作

5.4.1.理论

  • untracked 未跟踪(在文件夹中,未加入git,未参与版本控制) 通过git add 将状态变为staged;
  • unmodify 文件已经入库,未修改
  •   有两种去处:被修改变为`modify`,使用`git rm`移除版本库,则变为`untracked`文件; 
    
  • modified 文件已修改,仅修改,未作其他操作
  •   也有两个去处:通过`git add` 可进入暂存staged状态,使用`git checkeout`则丢弃修改过,返回到`unmodify`状态,这个`git checkout`即从库这种取出文件,覆盖当前修改; 
    
  • staged 暂存状态
  •   执行`git commit`则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为`unmodify`状态,执行`git reset HEAD filename`取消暂存,文件状态为`modify `
    

5.4.2.文件提交操作

查看文件状态
git status

添加本地工作区
git add .

提交到本地
git commit -m '文件'

5.4.3.文件忽略操作

  • *.txt 忽略所有以.txt结尾的文件,这样的话上传不会被选中
  • !666.txt 忽略666.txt这个文件
  • /temp 忽略temp文件的上一级的文件夹的内容,但不会忽略其他目录下的temp
  • build/ 忽略build/文件夹下面的所有文件
  • doc/* .txt 会忽略doc子目录下的.txt文件 例如: 会忽略doc/notes.txt,但不包括doc/server/arch.txt

5.5.使用gitee

  • 设置本机免密码登录
  1. 本机访问C:\Users\用户\ssh目录
  2. 输入命令ssh-keygen -t rsa
  3. 访问ssh/id_rsa.pub文件,记事本打开复制ssh公钥
  4. 登录gitee->设置->ssh公钥->粘贴刚刚复制的ssh公钥

6.使用场景以及使用出现的问题

6.1.如何强制覆盖本地文件

错误命令:
error: Untracked working tree file 'public/images/icon.gif' would be overwritten by merge.

使用git reset命令(注:所有未被推送的本地提交都将丢失

点击查看代码
在重置之前可以通过从master创建一个分支来维护当前的本地提交:
git checkout master
git branch new-branch-to-save-current-commits

从远程下载最新的,而不尝试合并或rebase任何东西
git fetch --all

将主分支重置为您刚刚获取的内容
git reset --hard origin/<branch_name>

6.2.如何同时删除本地分支和远程分支

点击查看代码
删除分支使用--delete(-d)选项,命令如下:
git push --delete <remote_name> <branch_name>
git branch -d <branch_name>

只删除本地分支
git branch -d branch_name
git branch -D branch_name

6.3.如何撤销最近一次提交

点击查看代码
1.如果你只是在本地进行提交commit,还没有推送push到远程,可以使用它来撤销
git reset HEAD~

保留提交之后的本地文件修改(soft 保留)
git reset --soft HEAD~ 

不保留提交之后的本地文件修改(hard 不保留)
git reset --hard HEAD~ 

弄错了一次错误提交
git commit -m '错误提交'

撤销本地提交
git reset HEAD~

修改文件后继续提交
git add ...
git commit -c ORIG_HEAD

2.如果你已经把提交推送到远程,只能本地回滚然后再次提交

回滚到上一次的命令使用
git revert HEAD

对文件重新修改后提交到远程即可

6.4.如何在提交之前撤销

点击查看代码
1. git add错了一个配置文件
git add db.conf

2. 撤销上一次git add
git reset db.conf

6.5.提交代码时发生冲突不能合入

发生场景:Web端对分支进行了操作,但是本地端没有git pull同步代码就修改提交,导致两部分代码冲突。

点击查看代码
1. 在本地仓库中, 更新并合并代码
git fetch origin
git rebase origin/uusama

2. 依据提示分别打开冲突的文件, 逐一修改冲突代码

3. 所有冲突都修改完毕后, 提交修改的代码
git add -u
git rebase --continue

4. 提交代码到远程分支 uusama
git push origin HEAD:refs/for/uusama

6.6.两个分支之间出现冲突如何解决

发生场景:比如当前有一个共有的开发分支dev(基准分支),个人分支uusama两个分支出现冲突。

点击查看代码
1. 拉取分支需要解决冲突的分支
git checkout uusama

2. 从基准分支合并
git merge --no-ff origin/dev
git add .
git commit -m "合并分支解决冲突"

3. 提交代码到远程分支 uusama
git push origin HEAD:refs/for/uusama

6.7.解决代理问题

发生场景:遇到了Failed to connect to www.google.com port 80: Timed out

点击查看代码
1.查询到当前设置的代理
git config -l

2.关闭http代理
git config --global --unset http.proxy

3.关闭https代理
git config --global --unset https.proxy










本文链接:https://www.cnblogs.com/yumn/p/17614561.html

posted @   千山淼  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示