teark

Git安装与配置

# mac安装command line tools之后自带git开发环境,以下是linux的安装,Windows安装客户端即可。
sudo apt-get install git
​
# 初始化git
git init
​
# 配置用户信息
git config --global user.name \'teark\'
git config --global user.email \'...@...com\'
git config --global user.password \'18340800000\'
git config --global credential.helper cache 记住密码15分钟 git config credential.helper \'cache --timeout=3600\' 记住密码一小时 git config --global credential.helper store 永久记住(经常弹窗的话,输入完用户名密码后输入这个就记住了) ​ # 重置git git config --system --unset credential.helper

 

Git常用命令

# 查看文件状态,红色-工作区;绿色-暂存区
git status
​
# 工作区到暂存区
git add .
​
# 暂存区到仓库
git commit -m \'haha\'# 回滚到第2版
git reset --head 2/<version number># 切分支
git checkout <filename># 创建并切换到dev分支
git checkout -b dev
​
# 提交分支到服务器
git push -u origin dev
​
# 临时贮存起来(遇到切换分支提示必须commit可以用这个)
git stash
​
# 查看远程仓库地址
git remote -v
​
# 放弃当前的修改,若没改,不用git stash了
git checkout .
​
# 对比不同(退出按q)
git diff
​
# 查看日志(退出按q)
git log/reflog

 

清理分支

  自己不能删自己,删自己所在的分支时记得先切换到别的分支。

# 先切换到别的分支
git checkout zcx_pay

# 删除自己开发的分支
git branch -d lx_chainblock

# 删不了强制删
git branch -D lx_chainblock

 

仓库太大清理历史垃圾

  删除臃肿的.git文件夹,重新建立索引。

rm -rf .git
git init
git add .
git commit -m "init"
git remote add origin 远程仓库地址(https://xxx.git 或 git@xxx.git 均可)
git push -f origin master

 

新功能开发

# 创建分支并同步
git checkout dev(若没有就git branch -b dev,它等于git branch dev, git checkout dev)
git pull
​
# 开发完之后
git add .
git commit -m "添加了新功能"
git push
​
# 后台审核代码
merge request
submit 提交合并请求

 

dev提交到master

git checkout master
git merge dev
git push

 

Git工作流专业词

  master:保存历史版本的主分支。

  dev:是开发的活跃分支, 所有人编写的功能或bug修复代码都要最先整合到dev分支上,在需要打包发布上线的时候,在从dev分支创建release分支,再整合到master上。

  feature:功能分支,每个人在开发新功能的时候都是从dev分支上创建一个功能特性分支feature,如开发区块链功能lx_chain_box。

  release:发布分支,从dev中分出 ,用于整合打包测试。

  hotfix:紧急bug修复分支。

 

解冲突

  冲突解决两种方式,推荐fetch,这样能保证自己的代码整洁性。pull过程中会有冲突提醒解决代码冲突之后就可以在gitlib上进行merge,就可以成功了。pull等于fetch+merge

fetch解冲突

# fetch 拉取最新的代码 但是不会与本地代码合并
git fetch origin/dev
​
# 比较代码两种方式二选一
git diff origin/dev
pycharm git-> compare with branch
​
# 自己手动修改冲突代码
# 重新提交合并请求
git add .
git commit -m "修复了..."
git push
​
# 或放弃
git merge --abort

pull解冲突

# pull 拉取最新代码,同时还会与本地的代码在本地进行合并,即git pull == git fetch & git merge
git pull origin/dev
​
# 查看冲突地方
git status或者git diff
​
# 自己手动修改冲突代码
# 重新提交合并请求
git add .
git commit -m \'修复了...\'
git push
​
# 或放弃
git merge --abort

 stash之后借冲突

git stash
git pull

# 观察
git stash list

# 全恢复第一个版本的stash git stash pop

 

报错集锦

报错:git pull出现 fatal: refusing to merge unrelated histories

git merge master --allow-unrelated-histories

git pull origin master --allow-unrelated-histories

git push --set-upstream origin master

 

 

报错:Please move or remove them before you can merge

  这是因为本地有修改,与云端别人提交的修改冲突,又没有merge,如果确定使用云端的代码,最方便的解决方法是删除本地修改,可以使用以下命令

# 强制清除(d:删除未被添加到git的路径中的文件;f:强制运行;x:删除忽略文件已经对git来说不识别的文件)
git clean -df

报错:The current branch dev has no upstream branch.To push the current branch and set

# 重新设置源分支即可
git push --set-upstream origin master

报错:The file will have its original line endings in your working directory

# windows中的换行符为CRLF,而Linux/macOs下的换行符为LF,环境不一致导致换行符报错,相关配置项改为false即可
git rm -r --cached .
git config core.autocrlf false
git add .

gitignore文件中忽略项不起作用?

  新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的,这时候我们就应该先把暂存区文件删除,再进行add,commit,push。所以养成先习惯建立.gitignore再开发的习惯。

#删除所有缓存区(保留工作区)
git rm -r --cached .

# 如:删掉远端的.idea文件
git rm -r --cached .idea

 放弃本地修改,选择远程分支

git fetch --all 

git reset --hard origin/dev

git pull

 

分类:

技术点:

相关文章: