你好呀~

Git使用指南

一. 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 reset --soft HEAD~1  # 这会将 HEAD 指向的分支的最新提交撤销掉,并保留所有更改在工作目录中。这样你就可以重新提交,并修改提交信息。

git reset HEAD~1  # 这会将 HEAD 指向的分支的最新提交撤销掉,并将暂存区的文件取消暂存,但保留在工作目录中。这样你可以重新选择要暂存的文件。(由于本地没有其他修改,暂存区也没有文件,因此,使用该命令)

git reset --hard HEAD~1  # 这会将 HEAD 指向的分支的最新提交撤销掉,并丢弃所有更改,包括暂存区和工作目录中的文件。这样你就可以完全回到上一个提交的状态。

git reset --hard <commit-hash>  # 这会将 HEAD 指针移动到指定的提交,并丢弃所有更改。这可以用来回滚到历史提交状态

git push --force  # 将本地分支推送到远程仓库,并且使用 --force 选项强制覆盖远程仓库中的提交历史。

  

十. 报错集锦

  报错: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

   或者重置再pull(推荐这种)

git fetch --all
git reset --hard origin/master
git pull

 

  报错: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

 

posted @ 2021-01-06 15:06  测神  阅读(172)  评论(0编辑  收藏  举报