创建仓库以及本地初始化仓库并连接到仓库
Git 全局设置:
git config --global user.name "xxx"
git config --global user.email "xxxx@xxx.xx"
当前项目文件家设置
git config --local user.name "XXX"
git config --local user.email "xxx@xx.xxx"
# 查看
git config --list
创建 git 仓库:
# 创建文件夹并进入
mkdir xx
cd xx
# 初始化仓库
git init
# 创建一个文件
touch README.md
# 将该文件添加到暂存区
git add README.md
# 将暂存区内容添加到本地仓库中,并添加备注
git commit -m "初始化项目"
# 将一个远程仓库与本地Git仓库关联起来
git remote add origin https://gitee.com/xxx/xx.git
# 本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push
git push -u origin "master"
已有仓库
cd existing_git_repo
git remote add origin https://gitee.com/carwang/mygit.git
git push -u origin "master"
分支
创建一个分支
# 创建一个分支
git branch xxx
# 切换一个分支
git checkout xxx
# 创建一个分支并切换(合并上面俩个命令)
git checkout -b xxx
创建一个分支完了后,将新的分支推到远程去(也可以不推)
# 起始不是这个命令,但是输完后会有提示。
git push
# 提示
git push --set-upstream origin xxx
将远程有的分支拉取到本地
git fetch origin dev
俩种分支的合并
git merge aaa into bbb
git rebase aaa
实际场景
在开发新需求的时候来了bug
主分支(线上):master
开发分支:dev
新需求分支(从主分支上切出来,最后请求合并到dev,由leader审核并到dev分支):HCKJ-1024
测试分支(如果这条大功能开发完成或者bug修复完成合并到test分支,然后进行测试。测试完成后合并到主分支):test
修改bug分支(可能从主分支切也有可能从测试分支切,最后都是合并到测试分支):fix-bug
# 创建分支并切换
git checkout -b HCKJ-1024
# 创建远程分支并连接本地
git push --set-upstream origin HCKJ-1024
# coding.....
git add .
git commit -m "xxxx"
git push
# 切到主分支一定要将当前分支保存起来
# a:提交git commit -m,可推送到远程也可以不推送(最后还是有记录)
# b:放入栈里面暂存
# 暂存
git stash save
# 查看暂存
git stash list
# 取出(按顺序弹出暂存,必须在当前分支最好这个分支不要有改动,不然会有merge)
git stash pop
# 取出(根据ID取,必须在当前分支最好这个分支不要有改动,不然会有merge)
git stash apply ID
# 切换到主分支
git checkout master
# 切出修复分支
git checkout -b fix-bug
# coding.....
git status //查看当前状态,并且给出下一步具体解决方案
git status -s //简洁显示修改的文件名
git add .
git commit -m "xxxx"
git push
# 查看提交日志,格式化git log --pretty=oneline
git log
# 回退到之前某个提交的时候 (回退之前的提交前可以先查看一下git show commitID)
git reset commitID
# 切换到主分支
git checkout test
# 拉取最新test
git pull
# 合并修复bug分支到test分支
git merge fix-bug into test
# 切换到新功能开发分支
git checkout HCKJ-1024
# 弹栈
git stash pop
# coding
git add .
git commit -m "xxxx"
git push
# 切换到dev分支
git checkout dev
# 拉取dev最新代码
git pull
# 合并HCKJ-1024分支到dev分支
git merge HCKJ-1024 into dev
# 注意,如果coding的功能内容很多天,我们得每天合并一下test分支到我们当前的开发分支。
# 在HCKJ-1024分支
git merge orgin dev
rebase压缩commit
# 查看是从什么地方切出来的
git log
# 找到切出点的ID
git rebase -i 切出点的ID
# 留第一个,其它都改成s。然后:wq
# 删除其它commit记录保留一个大功能的,然后:wq
# add已经跟踪的文件
git add -u // 不用
# 提交
git commit -m "修改信息"
# 强制push以替换远程仓的commitID
git push --force