Git Command(待更新)

本文详细介绍了Git的各种核心命令,包括初始化仓库、添加文件、提交、版本控制、分支管理、合并、解决冲突、远程仓库操作以及https推送的凭据管理。
摘要由CSDN通过智能技术生成

Git 命令详解

operation

server
# 初始化仓库
git init

# 添加到暂存区 (cache 缓存)
git add <file>

# 提交到版本库 (暂存区持久化)
git commit -m "<tag info>"

# 查看文件内容区别 
# 工作区 和 暂存区(版本库) 比较
git diff <file>

# 从暂存区删除添加的文件
git rm --cached <file> # 从暂存区转到工作区 commit的时候不包含这个文件
git restore --staged <file> # 从暂存区转到工作区 commit这个文件的原版本

# 取消修改文件(未 add 状态) -- 回到暂存区(代码库)版本
git restore <file>

# 查看当前分支的全部版本 从头走到当前节点
git log
git log --pretty=oneline # 一个版本显示在一行

# 回滚版本
git reset --hard ( HEAD^ | HEAD~ ) # 回滚一次
git reset --hard ( HEAD^^ | HEAD~~ ) # 回滚两次
git reset --hard ( HEAD<n> | HEAD<n> ) # 回滚n次
git reset --hard <id> # 回滚特定版本号

# 查看 HEAD 路径
git reflog
web
# 添加远程仓库
git remote add <origin> git@git.acwing.com:<user>/<project>.git # AcGit
git remote add <origin> git@github.com:<user>/<project>.git # GitGub
git remote add <origin> git@gitee.com:<user>/<project>.git # Gitee
git remote add <origin> git@<服务器ip>:<user>/<project>.git # 自己搭建的 git 云平台
git remote add <origin> git@gitcode.net:<user>/<project>.git # GitCode
git remote add <origin> git@gitlab.com:<user>/<project>.git # GitLab
git remote add <origin> git@bitbucket.org:<user>/<project>.git # Bitbucket
git remote add <origin> git@git.dev.tencent.com:<user>/<project>.git # Coding.net
git remote add <origin> git@sourceforge.net:<user>/<project>.git # SourceForge
git remote add <origin> git@ssh.dev.azure.com:v3/<organization>/<project>/<repository> # Azure DevOps

# 提交到云端 (第一次) -u 关联自动识别
git push -u <origin> <local_branch>:<remote_branch> # 可以直接指定

# 推送到云端指定文件夹
git push origin master:folder/subfolder

# git clone 项目
git clone git@<服务器ip>:<user>/<project>.git

# 更改仓库 url
git remote set-url origin new_url

# 更改仓库名字
git remote rename <origin> <new_origin>
branch

共用暂存区

# 创建分支
git branch <dev>

# 切换分支
git checkout <dev>

# 查看分支
git branch

# 合并分支最新节点到当前分支当前节点
git merge <branch> 
# 快速合并 -- 改变引用
# 强制合并 -- -no-ff

# 删除本地分支
git branch -d <dev>

# 删除远程分支
git push <remote_name> --delete <branch_name>

# 本地分支对应云端分支 (云端分支存在,本地不存在)  '--set-upstream-to=' = '-u' 
git branch --set-upstream-to=<origin>/<remote_branch> <local_branch>

# 云端分支对应创建本地分支
git checkout --track <origin>/<remote_branch>

# 从云端拉取代码 并合并到当前分支
git pull <origin> <remote_branch>

# 更改本地分支名字
git branch -m <old_branch_name> <new_branch_name>

# 更改云端分支名字
将本地分支上传给云端某分支 && 将云端旧分支删除

# fetch 和 pull
git pull = git fetch && git merge

git fetch <remote>       # 从指定的远程仓库获取更新,并将它们下载到本地仓库中
						 # 如果不指定远程仓库,则默认使用名为 `origin` 的远程仓库
git fetch --all          # 从所有远程仓库获取更新,并将它们下载到本地仓库中
git fetch --tags         # 获取远程仓库的标签,并将它们下载到本地仓库中
git fetch --prune        # 在获取远程更新时,删除本地已经不存在的远程分支
git fetch --dry-run      # 模拟执行 `git fetch` 命令,显示将要下载的内容,但不会真正执行下载操作
stash
# 将当前操作存入栈
git stash

# 查看栈里内容
git stash list

# 弹出第一个内容恢复到工作区(当前分支)
git stash pop # 删除栈顶
git stash apply # 不删除栈顶

# 删除栈顶元素(不恢复)
git stash drop

合并冲突

# b1
branch1: vim <file>
git add .
git commit -m "b1"

# b2
branch2: vim <file>
git add .
git commit -m "b2"

# 多个分支同时修改同一个文件 产生冲突
* branch1: git merge branch2   'both modefied'

# 手动修改 处理冲突

多人修改冲突

# 共同开发分支
user1: push
user2: push --报错 --版本更改

# 解决冲突
先 pull 最新版本
再手动处理冲突

下载部分代码

拉取代码
  1. sparsecheckout
# 初始化仓库
git init

# 添加远程仓库
git remote add <origin> git@<服务器ip>:<user>/<project>.git

# 开启 sparse checkout 功能
git config core.sparsecheckout true

# 指定要获取的文件或文件夹路径
echo <path> >> .git/info/sparse-checkout

# 拉取指定文件
git pull origin master
  1. checkout
# 指定仓库分支 拉取该路径文件夹或文件(可以多个文件名)
git checkout <origin>/<master> -- path/to/file.txt
还原拉取
# 删除 sparse checkout 配置文件
rm .git/info/sparse-checkout

# 关闭 sparse checkout 功能
git config core.sparsecheckout false

# 重新拉取你的仓库 master是远程仓库的分支
git pull origin master

# 其实 clone 就行

others

# 显示当前分支下的所有文件和文件夹的列表
git ls-tree --name-only HEAD

# 查看当前分支下的所有文件
git ls-files 

# の 自己查
git rebase

问题

https推送不成功与凭据管理器

那么我在本地用https推送 gitlab 的时候呢出现了没有权限的问题, 这是因为登陆过并且git的凭证管理是开启的,他通过凭证管理失败具体什么原因我也不知道,那么解决方法如下:

# 清除全局凭据助手配置 ~/.gitconfig
git config --global --unset credential.helper
# 禁用 git 凭据管理器 两种方法
git credential-manager unconfigure
git config --global credential.helper ''

关闭凭据管理器之后就是默认输入账号密码的形式登录, 他会默认跳出一个程序框输入, 如果你不想要这个程序框而直接在命令行输入, 方法如下:

git config --global core.askpass ''
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值