- 名词解释
git add 把文件添加到暂存区
git commit 把暂存区的所有内容提交到当前分支上
git push 把当前分支的修改推送到远程分支
git pull 把远程分支的修改下拉到当前分支
git status 查看当前分支状态
git log 查看当前分支状态提交日志
git diff <文件名> 查看指定文件修改内容
- 本地仓库
# 用户标识
git config --global user.name cooolr
git config --global user.email i@lr.cool
# 初始化仓库
git init
# 创建测试文件lr.txt
echo 'hello world'> lr.txt
# 添加进暂存区
git add lr.txt
# 提交到仓库
git commit -m "提交"
- 远程仓库
# 本地关联远程仓库
git remote add origin https://github.com/xxxxx/xxxxx
# 克隆远程仓库
git clone https://github.com/xxxxx/xxxxx
# 推送本地修改到远程仓库
git push origin master
# 本地拉取远程命令
git pull origin master
# 修改远程仓库地址
git remote set-url origin <新的地址>
- 免密推送
# SSH keys(使用SSH公钥认证, 推送远程分支无需输入密码)
SSH公钥路径:
linux: ~/.ssh/id_rsa.pub
windows: C:/Users/<用户名>/.ssh/id_rsa.pub
如果没有需要运行命令创建公钥: ssh-keygen
复制id_rsa.pub公钥内容到git账号设置新加SSH keys即可
# HTTP认证(适用http地址的git项目, 推送远程分支无需输入密码)
# 在home目录执行命令,再下拉或推送一次输入密码,往后就无需输入密码了
git config --global credential.helper store
- 撤销修改
# 撤销单个文件修改
git checkout -- lr.txt
# 撤销所有文件修改
git checkout -- .
# git add 后撤销修改
git restore --staged .
- 版本回退
# 查看要回退的版本id
git log
# 回退本地版本
git reset --hard d4f213fc242e574130dcc2fac2db3bc4df304288
# 回退远程版本[强制推送到远程版本]
git push -f
- 分支管理
# 建立分支
git branch <分支名>
# 切换分支
git checkout <分支名>
# 合并分支
git merge master # 合并master分支到dev
git merge <dev分支名> # 合并dev分支到master
# 删除分支
git branch -d <分支名>
# 推送分支到远程仓库
git push origin <分支名>
# 删除远程分支
git push origin -d <分支名>
# 本地合并远程分支实例
## 本地新建并切换到远程测试分支
git checkout -b test -f origin/test
## 合并master分支到test分支
git merge master
## 推送本地测试分支到远程测试分支
git push origin test
- 合并多个git项目
# 1. 克隆主仓库代码
git clone ssh://192.168.1.100:29418/tnaot_data/algorithm.git
# 2. 添加新的git项目作为远程仓库
git remote add other ssh://liyr@192.168.1.158:29418/algorithm.git
# 3. 拉取新添加的git项目数据
git fetch other
# 4. 将新添加的git项目master分支作为新分支checkout到本地
git checkout -b other other/master
# 5. 切换回主仓库master
git checkout master
# 6. 将新分支合并到主仓库master分支
git merge other --allow-unrelated-histories
# 7. 提交更新并推送到远程分支
git add .
git commit -m "merge other"
git push origin master
- git项目迁移方案
利用合并多个git项目的方法,将新项目添加到旧项目的remote地址,再切换到新项目分支,然后删除旧项目remote并且rename新项目remote为origin,即可在旧项目路径运行新项目,无缝切换。
# 1. 把新项目添加到旧项目的remote地址
git remote add new_origin ssh://liyr@192.168.1.158:29418/algorithm.git
# 2. 拉取新项目代码
git fetch new_origin
# 3. 切换到以new_master命名的新项目master分支
git checkout -b new_master -f new_origin/master
# 4. 查看并删除旧项目master分支
git branch -a
git branch -D master
# 5. 重命名new_master分支为master分支
git branch -m new_master master
# 6. 删除旧项目remote
git remote remove origin
# 7. 重命名新项目remote名称为origin
git remote rename new_origin origin
- 附录: 参考文章