菜鸟教程
git官方doc
windows可以用一个可视化git工具tortoisegit,支持代码分支可视化和一系列常用git操作
常用命令
clone
复制远端git仓库,在本地创建本地仓库
git clone [options] <repository> [new directory]
log
查看提交commit记录
虽然帮助文档一长串,但是弱水三千,我只取一瓢饮(我只会用这一种用法嘿嘿
git log
branch
对分支进行增删改查等管理,但不切换分支
git branch [options]
默认列出所有本地分支
-r 查看远端分支
-a 查看所有分支(本地 + 远端)
-m [old] <new> 重命名(move old to new)
-c [old] <new> 拷贝分支(copy old to new)
-d [name] 删除分支(delete),跟-r一起用则是删除远端分支
checkout
切换分支,或是重置文件
git checkout [options]
-b <branch> 设置分支(不存在则新建)
[--detach] [branch/commit] 准备在某分支/提交上工作(分离HEAD)
switch
专用于切换分支,也可以创建分支的同时切换过去
// 切换分支
git switch <branch>
// 从start-point创建分支并切换,可以是某个分支,或是某个提交commit
git switch -c <new branch> [start-point]
pull
& push
一个用于从远端拉取最新的代码到本地,一个用于将(修复bug后的)本地代码推送到远端进行更新保存
git pull
git push
status
显示当前工作目录的情况(文件的修改、新增、删除等)
git status [options]
-s,--short 显示简略信息(默认显示长信息--long)
add
& rm
& restore
修改完文件后,先需要将文件加入add
git索引以准备下一次的提交
git add <file(s)>
git add <path>
git add <pattern>
Examples:
git add *.cpp // 添加当前目录下所有cpp文件
git add \*.cpp // 添加当前目录及子目录下所有cpp文件
git add ./ // 直接添加src目录及子目录下所有文件
删除文件用rm
(如果有不想添加的目录,想让git添加文件的时候忽略它们,具体见这里),用法与add
相似
取消文件修改(不是删除,而是恢复上一次commit的状态)用restore
,用法与add
相似
commit
提交git已记录的更改到仓库
git commit [options]
-m MSG 设置commit log
remote
管理远端仓库、分支、url等信息
这个大概不算是常用命令,我是在有次用多个账户拉取上传代码时遇到了相关问题用到这个命令了,所以记录一下
git remote [options]
-v,--verbose 打印远端详细信息(name & url)
rename <old> <new> 远端重命名
get-url
set-url <name> <url> 设置某个远端的url
忽视文件/子模组管理
.gitignore
与.git
目录处于同一目录下的一个自己创建的文件,名字就叫.gitignore
所有不想让git处理的文件/目录都可以放在这个文件里
比如像下面这样,自动忽略`test`、`build`、`target`等常见测试构建目录:.vscode
build
test
target
submodule
添加子模组都需要在当前项目下通过命令添加,否则git不理解该文件夹是子模组,不好关联对应版本
// show submodules status
git submodule
// add a submodule
git submodule add [options] <repository> [path to place this submodule]
-b branch 指定分支
// update
git submodule update --init
// remove
git submodule deinit <module> // 标记不再追踪该子模组
git rm <module> // 删除目录(可以直接 rm -rf <path>)
常见问题集
permission denied (public key)
这种一般是公钥和私钥没配置好
- 先用
ssh-keygen
在本地生成公钥与私钥文件
ssh-keygen -t rsa -b 4096 -C "myemail@xx.xx"
-t choose algorithms (rsa dsa ecdsa ed25519)
-b bits (key size)
-C STR comment
- 复制公钥文件内容(后缀是
.pub
),到git账号
→profile
→ssh keys
里,创建一个新的公钥,粘贴刚才复制的公钥内容即可。
HTTP Basic: Access Denied
如果你clone代码时是使用HTTPS链接,并且近期改动过git账号密码:
控制面板
→Credential Manager(凭据管理器)
→Generic Credentials(普通凭据)
,如果能找到你的git凭据,修改ID密码- 如果上述步骤不行,试试控制台运行
git config --system --unset credential.helper
,在git操作时重新输入ID密码 - 如果上述步骤仍不行,可以尝试clone代码时改用SSH
ssl certificate problem unable to get local issuer certificate
可通过下述命令解除SSL验证【不建议】,建议仅用于临时解决问题
git config --global http.sslVerify false
将false
换成true
可重新启用
No supported authentication methods available ...
命令行尝试git是否能使用,如果可以,那么说明可能是GIT使用的公钥与TortoiseGIT使用的私钥不同
解决办法:
配置TortoiseGIT:git Settings
→Network
→SSH client
,将 TortoisePlink.exe 改为git安装目录下的/usr/bin/ssh.exe