git示例
模拟多人协作分支操作 测试git站点:zmx2321.coding.net
单人开发的情况
bash
# 从站点拉取仓库代码
# 使用https需要输入用户名和密码
# ssh不用输入账号密码,但需要ssh key
git clone https://e.coding.net/zmx2321/testgit/testgit1.git
# mac添加公钥指令
# cat ~/.ssh/id_rsa.pub => pub 就是公钥的意思
# 把公钥拷贝下来,在站点添加公钥,添加名称
# 添加完之后就可以直接使用ssh下载仓库了
# 进入文件夹
cd testgit1
# 查看当前git状态
git status
# 查看当前分支 master是主分支,也是默认新建的分支
git branch
# 修改git仓库
# 再次查看状态
git status
# 查看修改的内容
git diff
# 查看某个文件修改的内容 => 新增的文件不会在diff里面
git diff README.md
git diff *.md
# 添加一个文件
git add README.md
git add *.md
# 添加所有文件
git add .
# 再次查看状态 => 绿色的表示已经添加
git status
# 生成一条记录,并写上注释
git commit -m 'test'
# 查看日志
git log
# 有些需要进行配置 => 这样就能看到你提交的用户名和邮箱
# 多人协作的时候就知道这是谁提交的
git config user.name zmx2321
git config user.email zmx2321@163.com
# Initial Commit 表示当时创建的时候提交的记录
# 查看某条记录提交的内容 => git能够跟踪你改的哪些东西
git log
# 把下面的commit的标识(id)拷下来
git show 27e936aab0ff888ff46abf0f1dac215b744cba6b
## 再次修改文件内容
## 查看状态
git status
## 如果反悔之前修改的内容 => 就会把之前修改的内容取消掉(删除)
git checkout README.md
git checkout *.md
## 撤销所有修改
git checkout .
# 即git有查看当前修改内容的能力,以及反悔的能力
# 在commit之前,可以把之前修改的内容撤销回来
# 推送到代码仓库(服务端) => 此时站点才有之前提交的代码
git push origin master
git push
# 多人协作的时候,推送之前,先下拉代码
git pull origin master
git pull
# 从站点拉取仓库代码
# 使用https需要输入用户名和密码
# ssh不用输入账号密码,但需要ssh key
git clone https://e.coding.net/zmx2321/testgit/testgit1.git
# mac添加公钥指令
# cat ~/.ssh/id_rsa.pub => pub 就是公钥的意思
# 把公钥拷贝下来,在站点添加公钥,添加名称
# 添加完之后就可以直接使用ssh下载仓库了
# 进入文件夹
cd testgit1
# 查看当前git状态
git status
# 查看当前分支 master是主分支,也是默认新建的分支
git branch
# 修改git仓库
# 再次查看状态
git status
# 查看修改的内容
git diff
# 查看某个文件修改的内容 => 新增的文件不会在diff里面
git diff README.md
git diff *.md
# 添加一个文件
git add README.md
git add *.md
# 添加所有文件
git add .
# 再次查看状态 => 绿色的表示已经添加
git status
# 生成一条记录,并写上注释
git commit -m 'test'
# 查看日志
git log
# 有些需要进行配置 => 这样就能看到你提交的用户名和邮箱
# 多人协作的时候就知道这是谁提交的
git config user.name zmx2321
git config user.email zmx2321@163.com
# Initial Commit 表示当时创建的时候提交的记录
# 查看某条记录提交的内容 => git能够跟踪你改的哪些东西
git log
# 把下面的commit的标识(id)拷下来
git show 27e936aab0ff888ff46abf0f1dac215b744cba6b
## 再次修改文件内容
## 查看状态
git status
## 如果反悔之前修改的内容 => 就会把之前修改的内容取消掉(删除)
git checkout README.md
git checkout *.md
## 撤销所有修改
git checkout .
# 即git有查看当前修改内容的能力,以及反悔的能力
# 在commit之前,可以把之前修改的内容撤销回来
# 推送到代码仓库(服务端) => 此时站点才有之前提交的代码
git push origin master
git push
# 多人协作的时候,推送之前,先下拉代码
git pull origin master
git pull
模拟多人开发的情况
bash
# 进入文件夹
cd testgit1
# 模拟另一个开发人员
# 做一个新功能之前,需要切换一个新的分支
# 创建分支
git checkout -b test2
# 查看分支 => 高亮表示当前指向的分支
# git地址后面的括号是当前指向的分支名
git branch
# 查看git状态
git status
git diff
# 提交 commit之后,代码已经在这个分支下面了
git add .
git commit -m 'test2'
# 切换到主分支
# 和撤回文件内容是一个命令,后面加分支名就是切换分支
git checkout master
# 再次模拟一个开发人员
# 开新分支
git checkout -b test3
# 查看分支
git branch
# 修改文件,查看状态
git status
# 提交
git add .
git commit -m 'test3'
# 提交test3到服务端仓库
git push origin test3
# 提交test2到服务端仓库
git push origin test2
# 刷新站点仓库,可以看到多出两个分支
# 将test2和test3合并到主分支master上来
# 切换到master分支
git checkout master
# 模拟项目负责人
# 合并test2和test3分支
# 先把服务端所有分支全部拉下来
git fetch
# 查看所有分支(本地)
git branch
# 将test2分支的代码合并到主分支
# 切换到test2分支
git checkout test2
# 拉取test2分支代码
git pull origin test2
# 切回到主分支
# 合并代码
# 将test2分支的代码合并到当前分支上来
git merge test2
# 主分支提交代码到服务端
# 没有冲突直接push,不用commit
git push origin master
# 将test3分支的代码合并到主分支
# 主分支 => 先把服务端所有分支全部拉下来
# git fetch
# 切换到test3分支
git checkout test3
# 拉取test3分支的代码
git pull origin test3
# 切回主分支
git checkout master
# 合并代码
# 将test3分支的代码合并到当前分支
git merge test3
# 解决冲突
# 只要是confict显示的文件都冲突了
# 打开编辑器(vscode)
# vscode能够失败冲突,并且有快捷方式
# 接受当前的改变(本地)
# 接受传入的改变(merge的分支)
# 两者同时接受
# 查看文件状态
git status
# 解决完冲突需要进行add
git add .
git commit -m 'test3 branch'
# 再次merge显示already up to date
# 主分支提交代码到服务端
git push origin master
# 意外情况
# 做一个test4功能
# 新建一个分支
git checkout -b test4
# 切回到master分支
git checkout master
# 如果我们不小心在主分支上做了修改
# 查看分支 => 此时主分支上有test4功能
git status
# 把当前修改的东西划出来
# 把修改的东西暂存起来
git stash
# 此时使用status查看,只会显示新建的文件
# 此时再建分支
git checkout -b
# 此时使用status查看,只会显示新建的文件
# 开放暂存区
git stash pop
# 此时使用status查看,显示正常
# 提交分支代码
git add .
git commit -m 'test5'
git push origin test5
# 切换到主分支
git checkout master
# 撤回主分支上修改的代码
git checkout .
# 进入文件夹
cd testgit1
# 模拟另一个开发人员
# 做一个新功能之前,需要切换一个新的分支
# 创建分支
git checkout -b test2
# 查看分支 => 高亮表示当前指向的分支
# git地址后面的括号是当前指向的分支名
git branch
# 查看git状态
git status
git diff
# 提交 commit之后,代码已经在这个分支下面了
git add .
git commit -m 'test2'
# 切换到主分支
# 和撤回文件内容是一个命令,后面加分支名就是切换分支
git checkout master
# 再次模拟一个开发人员
# 开新分支
git checkout -b test3
# 查看分支
git branch
# 修改文件,查看状态
git status
# 提交
git add .
git commit -m 'test3'
# 提交test3到服务端仓库
git push origin test3
# 提交test2到服务端仓库
git push origin test2
# 刷新站点仓库,可以看到多出两个分支
# 将test2和test3合并到主分支master上来
# 切换到master分支
git checkout master
# 模拟项目负责人
# 合并test2和test3分支
# 先把服务端所有分支全部拉下来
git fetch
# 查看所有分支(本地)
git branch
# 将test2分支的代码合并到主分支
# 切换到test2分支
git checkout test2
# 拉取test2分支代码
git pull origin test2
# 切回到主分支
# 合并代码
# 将test2分支的代码合并到当前分支上来
git merge test2
# 主分支提交代码到服务端
# 没有冲突直接push,不用commit
git push origin master
# 将test3分支的代码合并到主分支
# 主分支 => 先把服务端所有分支全部拉下来
# git fetch
# 切换到test3分支
git checkout test3
# 拉取test3分支的代码
git pull origin test3
# 切回主分支
git checkout master
# 合并代码
# 将test3分支的代码合并到当前分支
git merge test3
# 解决冲突
# 只要是confict显示的文件都冲突了
# 打开编辑器(vscode)
# vscode能够失败冲突,并且有快捷方式
# 接受当前的改变(本地)
# 接受传入的改变(merge的分支)
# 两者同时接受
# 查看文件状态
git status
# 解决完冲突需要进行add
git add .
git commit -m 'test3 branch'
# 再次merge显示already up to date
# 主分支提交代码到服务端
git push origin master
# 意外情况
# 做一个test4功能
# 新建一个分支
git checkout -b test4
# 切回到master分支
git checkout master
# 如果我们不小心在主分支上做了修改
# 查看分支 => 此时主分支上有test4功能
git status
# 把当前修改的东西划出来
# 把修改的东西暂存起来
git stash
# 此时使用status查看,只会显示新建的文件
# 此时再建分支
git checkout -b
# 此时使用status查看,只会显示新建的文件
# 开放暂存区
git stash pop
# 此时使用status查看,显示正常
# 提交分支代码
git add .
git commit -m 'test5'
git push origin test5
# 切换到主分支
git checkout master
# 撤回主分支上修改的代码
git checkout .