git实操
铁律
- 永远不要在主分支上写代码(不要提交到主分支)
- 开始和结束一天的工作之前,务必拉取最新代码
准备工作(组长)
主分支:
-
git init
-
gitignore (排除不上传的文件)
add . //本地缓存区 -
git commit -m ‘描述’ //本地仓库 初始版本
-
git remote add origin https://gitee.com/uncle9/nz1901.git
关联远程仓库 ,需要事先创建远端仓库(github|gitee|gitlab)
远程仓库public 无需密码, private需要
public可以考虑克隆仓库后把.git替换项目脚手架生成的.git -
git push -u origin master //第一次提交远仓库
git push 以后
开发分支:
1. git checkout -b 分支名(功能,人名) // 创建开发分支
git branch //查看
2. git checkout 分支名 //切换
..........开发........
3. git add . //本地缓存区
4. git commit -m '描述' //本地仓库
5. git push origin 分支名 //上传本地到远端分支
组员: 永远不要在主分支上写代码(不要提交到主分支)
1. git clone 项目地址(主分支|开发分支) //下载源码 首次
之后: git checkout -b 分支名(功能,人名)
git pull origin 分支|开发分 //之后拉取最新
2. cd 项目
3. git checkout -b 分支名 // 创建自己的开发分支 如果组长给了分支,可以省略
........开发..........
git pull origin 分支 拉取最新
4. git add .
5. git commit -m '张三提交了xxx'
6. git push origin 分支名 // 上传到自己的分支仓库
合并代码工作 (组长|组员)
1. git checkout master | 分支 //切换到主|其他分支
2. git pull origin 分支1 //拉取分支1
git pull origin 分支2
( 保持当前 | 应用最新 | 都保留 | 比较√ )
....比较...拍错错....
3. git add .
4. git commit -m '合并代码一些描述'
5. git push origin master | 分支 //提交远端
删除分支文件
删除暂存区或分支上的文件, 同时删除工作区相应文件
git rm file_name
git commit -m "del file"
git push origin your_branch
删除分支
删除本地分支
git branch -D your_branch
删除远程分支
git push origin --delete your_branch
添加指定目录下的文件
config目录下及子目录下所有文件,home目录下的所有.php文件
git add ./src/component/uc-input/*
放弃工作区某个文件的修改
从 缓存,本地仓库,远端分支 拉回
git checkout -- ./src/index.js
版本回滚
git log --pretty=oneline 查看提交日志
git reset --hard id 根据 id 回退到指定的版本
git push origin HEAD --force 推送到本地到远程仓库 强推老代替新
git reflog 查看命令操作的历史
单文件版本回滚
git log fileName 查 看文件的修改记录
git reset id fileName 回退到指定版本 (不在工作区,在缓存区)
git commit -m “提交的描述信息”
git checkout fileName 更新到工作区
Q&A
代码改乱了,想强拉取远端分支
版本回滚
代码改好提交不到远端分支
权限|版本不够新 拉取最新与本地合并再提交
git log 乱码
git config --global core.quotepath false
git config --global gui.encoding utf-8
git config --global i18n.commit.encoding utf-8
git config --global i18n.logoutputencoding utf-8
# bash 环境下
export LESSCHARSET=utf-8
# cmd环境下:
set LESSCHARSET=utf-8 设置环境变量
git 放弃修改,放弃增加文件操作
- 本地修改了一些文件 (并没有使用 git add 到暂存区),想放弃修改
- 单个文件/文件夹:
git checkout -- filename
- 所有文件/文件夹:
git checkout .
- 本地新增了一些文件 (并没有 git add 到暂存区),想放弃修改
- 单个文件/文件夹:
git rm -rf filename
- 所有文件:
git clean -xdf
删除新增的文件,如果文件已经已经 git add 到暂存区,并不会删除!
- 所有文件和文件夹:
git clean -xdff
[谨慎操作] 本命令删除新增的文件和文件夹,如果文件已经已经 git add 到暂存区,并不会删除!
- 本地修改/新增了一些文件,已经 git add 到暂存区,想放弃修改
- 单个文件/文件夹:
git reset HEAD filename
- 所有文件/文件夹:
git reset HEAD .
- 本地通过 git add 和 git commit 后,想要撤销此次 commit
- 撤销 commit, 同时保留该 commit 修改:
git reset commit_id
这个 commit_id 是你想要回到的那个节点,可以通过 git log 查看,可以只选前 6 位。
撤销之后,你所做的已经 commit 的修改还在工作区!
- 撤销 commit, 同时本地删除该 commit 修改:
git reset --hard commit_id
这个 commit_id 是你想要回到的那个节点,可以通过 git log 查看,可以只选前6位
[谨慎操作] 撤销之后,你所做的已经 commit 的修改将会清除,仍在工作区/暂存区的代码也将会清除!