Git入门
- Git入门
- 本地git初始化
- git仓库初始化
- 创建远端仓库
- github
- gitee
- 指定远端仓库
- 推送至远端
- 多分支
- 将feature分支合并至dev分支
- 其他开发者
Git入门
本地git初始化
git仓库初始化
mkdir myrepo # 创建仓库文件夹
cd myrepo/ # 进入目录
git init # 初始化git仓库 (创建.git文件夹)
git branch -a # 查看分支 (此时无分支)
touch README.md # 创建一个文件
git add . # 将所有文件添加到暂存区
git commit -m "init" # commit一下
git branch # 此时查看分支, 默认为master分支
创建远端仓库
github
gitee
此处我创建了两个远端仓库, 方便后面演示(工作中基本都是1个)
指定远端仓库
注意配置ssh公钥, 自行搜索
github ssh: git@github.com:dengwangtao/git_demo.git
gitee ssh: git@gitee.com:TAOTAO_D/git_demo.git
# git remote add [起个名, 一般都叫origin] [remote 地址]
git remote add origin git@github.com:dengwangtao/git_demo.git
推送至远端
git push origin master:master
# 将master分支推送到origin的master分支(github)
可以看到, 只有github的仓库被推送了
then, 推送到gitee
git push origin2 master:master
# 将master分支推送到origin2的master分支 (gitee)
查看远端仓库
多分支
# 创建了两个分支 dev 和 feature
git branch dev
git checkout -b feature # 创建分支并切换到新分支
在feature分支中创建一个main.cpp文件, 并推送到github
查看git log
将feature分支合并至dev分支
git checkout devgit merge featuregit push origin dev:dev
只将dev分支推送到gitee
其他开发者
# 克隆仓库, 并放在myrepo2文件夹
git clone git@github.com:dengwangtao/git_demo.git myrepo2
查看分支
有多个远程仓库, 假设目前的需求: 更新dev分支的main.cpp, 输出"Hello Git"
- 创建 feature_main 分支
- 修改main.cpp, 验证并测试
- 合并到dev分支
- 推送 (解决冲突)
此处基于远端的dev分支创建了feature_main分支, 并更新了main.cpp的代码
并提交到本地, 注意, 此时还没有推送到远端
为了演示解决冲突, 手动在github上修改代码
// 修改前
#include <iostream>int main() {std::cout << "Hello World" << std::endl;return 0;
}
// 修改后
#include <iostream>int main() {std::cout << "This is https://github.com/dengwangtao/git_demo/edit/dev/main.cpp" << std::endl;return 0;
}
然后, 此时提交代码前, 需要pull (fetch + merge)
合并分支, 发生冲突
查看main.cpp
解决冲突