git安装
windows: winget install --id Git.Git -e --source winget
macos: brew install git
基础配置
- 设置username和email,作为你本地git账户的名称和账号,后续remote到远程仓库就可以直接使用。
git config --global user.name "your_name"
git config --global user.email "your_email"
##
设置user.name/email作为本地仓库的绑定的账户名称和账号,--global参数实现全局管理,在本地任何位置下都会应用
该账户,类似于全局变量
##
git config user.name "your_name"
git config user.email "your_email"
##
不加--global参数则仅在当前目录的仓库中应用该账户,切换目录(仓库)后账户失效,效果类似于局部变量。便于用户
针对不同路径下的本地仓库单独管理
user.name/email尽量与远程仓库(如github、gitlab)使用的用户名、邮箱一致以便后续远程同步可直接使用。
##
- 初始化生成本地仓库
git init
## 将当前目录初始化为本地仓库,ls -a可以看到目录内新增.git文件
- 设置ssh-key
ssh-keygen -t rsa -b 2048 或者 ssh-keygen -t rsa -b 2048 -C "your_email_addr"
## 生成一对ssh公—私钥,公钥设置在远程仓库,私钥存在本地
git config core.sshcommand 'ssh -i [your private_key_path]'
## git默认使用当前系统用户.ssh中的私钥,如需另外指定私钥使用core.sshcommand配置
- 关联远程仓库
git clone [ssh://your_remote_repository_addr]
## 从远程下载一个git仓库添加到当前目录下,并自动关联别名origin
git remote add [alias] [ssh://your_remote_repository_addr]
## 将远程仓库手动关联一个别名
git remote -v
## 显示所有远程仓库
- 推送&拉取
git push [alias] [local_branch]:[remote_branch]
##
推送本地仓库的某个分支到远程仓库某个分支并自动merge,[alias]为远程仓库地址对应的别名,
若[local_branch]:[remote_branch]名称相同则写一次即可 git push [alias] [branch]
##
git pull [alias] [remote_branch]:[local_branch]
##
从远程仓库拉取某个分支到本地仓库某个分支并自动merge,用法同push相同,但注意[remote_branch]
和[local_branch]先后顺序
##
git fetch [alias] [remote_branch]:[local_branch]
## 仅从远程仓库提取某个分支到本地仓库的某个分支,但不进行merge
基础命令
[查配置]
git config --list ###列出当前仓库的配置,也可以直接查看.git/config文件
[暂存区]
git add [file] ###添加需要commit的文件到暂存区
git add . ###添加当前目录所有文件到暂存区
git diff [file] ###查看暂存区文件修改情况
git status ###查看暂存区、工作区的文件状态,一般用在commit之前检查文件是否add
[提交]
git commit -m "[msg about commit(necessary)]" ###将暂存区的数据提交到本地仓库,记录一次版本
[查版本]
git log ###查看初始版本 至 HEAD指针当前指向版本,之间每个commit版本的记录(不包含回退前的所有版本)
git reflog ###查看所有commit版本的记录(不论是否回退)
[回滚]
git reset --hard HEAD^ ###通过修改git log中HEAD的指向来回退到前一个版本,一个^代表一个版本,^^表示回退到前两个版本,^^^表示前三个版本...以此类推
git reset --hard HEAD~100 ###直接回退100个版本
git reset --hard [version_id] ###指定回退到某个版本
### --soft参数回滚版本后会将先前版本保存入暂存区,(a>b>c>d) ->(a>b)则c、d进入暂存区
git checkout -- [file] ###撤回一步文件变更,逻辑类似三元运算:[撤回版本] = [更新到暂存区] ? [暂存区版本] : [仓库版本]
[分支管理]
git branch [branch_name] ###创建分支
git checkout [branch_name] ###切换分支
git checkout -b [branch_name] ###创建并切换分支,若已存在则直接切换