Git使用方法

原理图

git 基本常用命令
git rev-parse --show-toplevel查看当前仓库名称
mkdir: XX (创建一个空目录 XX指目录名)
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态
git diff XX 查看XX文件修改了那些内容
git log 查看历史记录
git reset --hard HEAD^ 或者 git reset --hard HEAD~ 回退到上一个版本
(如果想回退到100个版本,使用git reset –hard HEAD~100 )
cat XX 查看XX文件内容
git reflog 查看历史记录的版本号id
git checkout -- XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件
git remote 查看远程仓库信息
git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库
git clone https://github.com/tugenhua0707/testgit 从远程库中克隆
git checkout –b dev 创建dev分支 并切换到dev分支上
git branch -a 查看当前所有的分支
git checkout master 切换回master分支
git merge dev 在当前的分支上合并dev分支
git push -d origin branchName 删除远程分支
git push origin localbranch
将代码推送到远程仓库的指定分支
git revert HEAD^ 回到某个commit
git branch –d dev 删除dev分支
git branch <name> 创建分支
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作
git stash list 查看所有被隐藏的文件列表
git stash apply 恢复被隐藏的文件,但是内容不删除
git stash drop 删除文件
git stash pop 恢复文件的同时 也删除文件
git remote -v 查看远程库的信息
git push origin master Git会把master分支推送到远程库对应的远程分支上
取消本地目录下关联的远程库:
git remote rm origin
git push origin --delete <branch>删除远程分支
git rev-parse --show-toplevel 显示仓库根路径
您好,这是Bing。我可以帮您解答关于git的问题。根据我的搜索结果,如果您想让本地的docker分支的head设置为远程的origin/docker,您可以使用以下命令:
git remote set-head origin docker
git branch --set-upstream-to=origin/<分支> docker 建立映射
`git branch --set-upstream-to=origin/docker docker`用于建立本地分支与远程分支的关联,`git checkout origin/docker`用于切换到远程分支的本地副本,而`git remote set-head origin docker`用于设置远程仓库的默认分支。这些命令在不同的场景中使用,具有不同的目的和效果。
二分查看哪一次导致的错误
git bisect start [终点] [起点]
git bisect good
git bisect bad
变基
只对尚未推送或分享给别人的本地修改执行变基操作清理历史, 从不对已推送至别处的提交执行变基操作
一般步骤
- 在本地创建一个新的 Git 仓库或者克隆一个已有的 Git 仓库。
- 在本地修改文件后,使用
git add命令将修改后的文件保存到本地仓库。 - 使用
git commit命令将本地仓库的文件提交到本地分支。 - 使用
git push命令将本地分支的更新,推送到远程主机。
分支
- 创建一个新分支:
git branch feature1 - 切换到新分支:
git checkout feature1 - 在新分支上进行开发,修改文件并提交:
git add <file>和git commit -m \"<message>\" - 切换回主分支:
git checkout master - 合并新分支到主分支:
git merge feature1 - 删除新分支:
git branch -d feature1
本地分支和远程分支的名字可以相同,也可以不同。如果名字相同,可以直接使用 git push 命令推送到远程分支;如果名字不同,需要使用 git push <remote> <local branch>:<remote branch> 命令推送到远程分支。
git pull <remote> <branch> 命令会从远程分支拉取更改并将其合并到当前分支
# 配合 Github
1. 注册 github 账号,并新建仓库
> Github 支持两种同步方式 `“https”` 和 `“ssh”`。
>如果使用 `https` 很简单基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。
>如果使用 `ssh` 方式就需要客户端先生成一个密钥对,即一个公钥一个私钥。然后还需要把公钥放到 githib 的服务器上。
2. 创建空白文件夹右键 Git Bash Here
1. `git config --global user.name "XXXX"` 用户名标识 ----可以填写 github 仓库的名称
2. `git config --global user.email " xxxx@xxx.com "` 邮箱标识 -------可以填写 github 仓库的邮箱
3. 创建密钥
1. `ssh-keygen -t rsa `
2. 复制 id_rsa. Pub 内容
4. 进入 github 设置选择 SSH and GPG keys 添加新的 SSH keys
5. 连接仓库 `git push -u origin master`
## 一个仓库
>Git init 之前可以 mkdir xxx
>Cd xxx
git init
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:xxx/xxx.git <ssh>/<url>
git push -u origin main
多个仓库
- 打开命令行终端,并进入您的 Git 仓库所在的目录。
- 添加第一个远程仓库,使用以下命令:
git remote add origin <第一个远程仓库的 URL>这里将远程仓库命名为origin,您可以根据需要选择其他名称。 - 添加第二个远程仓库,使用以下命令:
git remote add <自定义名称><第二个远程仓库的URL>将<自定义名称>替换为您想要的远程仓库名称,<第二个远程仓库的URL>替换为第二个远程仓库的 URL。 - 切换到不同的远程仓库,使用以下命令:
git remote set-url origin <新的远程仓库的 URL>
这里将origin替换为您要切换的远程仓库的名称,<新的远程仓库URL>替换为新的远程仓库的 URL。
常见报错
error: RPC failed; curl 28 OpenSSL SSL_read: Connection was reset, errno 10054”
禁用 git ssl 验证
git config http. sslVerify "false"
SSH 方式需要对 config 为文件进行相关配置
优点是可以长期保存和管理远程仓库信息
配置远程仓库的 url
[remote "origin"]
配置 SSH 密钥和认证信息
[core]
SshCommand = ssh -i /path/to/private_key
feat: 新功能(feature)
fix: 修补 bug
docs: 文档(documentation)
style: 格式(不影响代码运行的变动)
refactor: 重构(即不是新增功能,也不是修改 bug 的代码变动)
chore: 构建过程或辅助工具的变动
revert: 撤销,版本回退
perf: 性能优化
test:测试
improvement: 改进
build: 打包
gitignore 忽略
实现这个功能,你可以在.gitignore文件中使用感叹号(!)来表示例外或者反模式。感叹号(!)开头的模式将否定先前的模式,表示不要忽略该文件或目录。例如,如果你有一个名为test的文件夹,你想忽略其中的所有文件,除了a.txt和b.txt,你可以在.gitignore文件中添加以下内容:
# 忽略test文件夹下的所有文件
test/*
# 但不忽略a.txt和b.txt
!test/a.txt
!test/b.txt
bin/: 忽略当前路径下的 bin 文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin: 忽略根目录下的 bin 文件
/*. c: 忽略 cat. c,不忽略 build/cat. c
debug/*. obj: 忽略 debug/io. obj,不忽略 debug/common/io. obj 和 tools/debug/io. obj
**/foo: 忽略/foo, a/foo, a/b/foo 等
a/**/b: 忽略 a/b, a/x/b, a/x/y/b 等
!/bin/run. sh: 不忽略 bin 目录下的 run. sh 文件
*. log: 忽略所有 .log 文件
config. php: 忽略当前路径的 config. php 文件
这样,当你执行git add或git commit命令时,只有a.txt和b.txt会被添加或提交,其他文件会被忽略。注意,如果你想忽略整个test文件夹,你需要在最后加上斜杠(/),否则会匹配任何名为test的文件或目录。
git permission denied (publickey)
Git 教程 SSH keys 配置-CSDN 博客
git 提示 permission denied (publickey)问题的解决方法_git@e.coding.net: permission denied (publickey). f-CSDN 博客
刷新缓存:
git rm -r --cached .
git add .
要小心拉取的一半新一半旧!
Github 是玩 fork 模式的,开发者提交自己的代码新建 Pull Request,请求原作者:“把我的代码拉回去吧”。
Gitlab 是玩分支模式的,开发者提交自己的代码新建 Merge Request,想将自己的特性分支合并到主干。

浙公网安备 33010602011771号