三五、Git使用流程(上传、下载、修改账号、生成SSH公钥)

一、git使用

1.配置用户信息

git config --global user.email 用户名@baidu.com # 百度邮箱
git config --global user.name 用户名

2.生成并配置ssh-key

#生成密钥,一路回车、用默认选项
ssh-keygen -t rsa
#复制到粘贴板
cat ~/.ssh/id_rsa.pub | clip # Windows
cat ~/.ssh/id_rsa.pub | pbcopy # MacOS
#粘贴到iCode,在iCode右上角>个人设置>添加SSH Keys[注意:一定要把不可见的换行符去掉](入口链接:http://icode.baidu.com/account/profile)

3.克隆代码

git clone ssh://xxx.xxx.xxx/xxx/xx

常用命令

首先查看代码库状态
git status
然后确定要添加到暂存区的文件
git add file_name
首先查看代码库状态
git status
提交到代码库
git commit -m “feat: commit message”

feat:新增 feature
fix: 修复 bug
docs: 仅仅修改了了⽂文档,⽐比如 README, CHANGELOG, CONTRIBUTE等等 style: 仅仅修改了了空格、格式缩进、逗号等等,不不改变代码逻辑
refactor: 代码重构,没有加新功能或者修复 bug
perf: 优化相关,⽐比如提升性能、体验
test: 测试⽤用例例,包括单元测试、集成测试等
chore: 改变构建流程、或者增加依赖库、⼯工具等
revert: 回滚到上⼀一个版本
log: ⽇日志优化 

查看提交记录
git log
当进行改编后,还不想有新的提交可以使用 -amend参数
git commit --amend --no-edit

同步到远程代码库

git push origin HEAD:refs/for/master
撤销操作

  1. 撤销工作区
    git checkout – filename
  2. 撤销暂存区
    git reset head
  3. 撤销版本库
    git reset --hard HEAD

分支操作

查看分支:git branch
创建分支:git branch

切换分支:git checkout

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge

删除分支:git branch -d

多人协作

解决冲突: 合并分支时有可能两个分支在同一处进行了不同的修改,为了解决冲突需要手动修改达到统一。
多人协作: add -> commit -> push失败 -> pull -> 解决冲突 -> add -> commit -> push


二、git其他常用命令

  1. 新建tag
git tag V1.0
git push origin V1.0
  1. 比对文件差异
    命令: git diff
    用来比较暂存区文件内容与工作区文件内容的区别

  2. 如果暂存区没有文件,就会将工作与代码与最近一次提交对比
    命令:git diff --cached 比较暂存区的文件和仓库中文件的区别

  3. 对比之前某两次提交的文件的差异
    命令:git diff [版本号1] [版本号2] [想比较的文件路径]

  4. 查看日志
    命令:git log,可以查看每一次提交的日志
    命令:git log --oneline 表示使用简洁的形式输出提交日志

  5. 版本回退
    命令:git reset --hard Head~1
    这是将代码回退到上上一次提交时的状态

  6. 命令:git reset --hard Head~2
    回退到上上上次
    命令:git reset --hard Head~0

  7. 回退到上次提交时的状态,~0可以省略
    命令:git reset --hard 版本号
    通过每次提交时生成的版本号来回退版本
    通过git reflog命令可以查看之前所有版本切换的操作记录,可以通过这个命令得到的版本号回退到指定的版本。

  8. 创建分支
    命令:git branch [分支名]
    创建一个新分支
    命令:git branch
    查看当前所有的分支

  9. 切换分支
    命令:git checkout [分支名]
    切换分支后可以在切换后的分支中进行正常的操作

  10. 合并分支
    命令:git merge [分支名]
    git会将指定的分支合并到当前分支.

  11. 删除分支
    命令:git branch -d [分支名]
    删除指定分支,-d参数表示要执行删除操作

  12. Git fetch
    从远程获取最新版本到本地,不会自动merge
    把服务器origin的master分支 下载到本地的tmp_branch分支里;
    git fetch origin master:tmp_branch
    查看当前分支何两个分支的差异点;
    git diff tmp_branch
    把tmp_branch 分支的commit 合并到 当前master分支;
    git merge tmp_branch

  13. git stash
    可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
    git stash save “work in progress for foo feature”
    当你多次使用’git stash’命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,
    ’git stash list’ 命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用’git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用’git stash clear’来将栈清空。
    详情请看git stash

  14. git pull报错:Pull is not possible because you have unmerged files解决方法

  • 将本地的冲突文件冲掉,不仅需要reset到MERGE-HEAD或者HEAD,还需要–hard。没有后面的hard,不会冲掉本地工作区。只会冲掉stage区。
    git reset --hard FETCH_HEAD
  • git pull就会成功。
    原博客地址
  1. git pull报错:You are not currently on a branch.
解决方法:
首先git checkout -b temp
其次git checkout master
即可恢复到master repository的状态,然后就可以pull了
  1. git切换到指定远程分支
  • $ git branch -a
  • git checkout -b 本地分支名 origin/远程分支名 (git checkout -b dev origin/dev)
  • git branch -vv 查看本地分支及追踪的分支
  1. git pull --rebase origin master (不新建节点合并代码)

  2. A分支上的commit提交到B分支上

    1. 执行git log -3 --graph A,查看A分支下的commit:    注:commit 后面的hash值代表某个commit,这里把”82f1fb7138c5860cc775b4b5ea71c5d19c4e6497“这个commit提交到B2. 执行git checkout B,切换到B分支;
     
    3. 执行 git cherry-pick 82f1fb7138c5860cc775b4b5ea71c5d19c4e6497,该commit便被提交到了B分支;
     
    4. git push     //注:将该commit推到远程服务器
    
  3. git 其他操作
    本地工作区文件恢复
    远程分支删除后,删除本地分支与其关联
    修改提交时的备注内容
    修改分支名,实现无缝衔接
    撤回提交
    撤销本地分支合并
    恢复误删的本地分支
    不确定哪个分支有自己提交的 commit

git rebase解决冲突

Step1. 在本地仓库中, 更新并合并代码

git fetch origin

git rebase origin/dev

Step2. 依据提示分别打开冲突的文件, 逐一修改冲突代码
Step3. 所有冲突都修改完毕后, 提交修改的代码

git add -u

git rebase --continue

Step4. 更新patch

git push origin HEAD:refs/for/dev

missing or invalid Change-Id line format in commit message footer

原因1. 克隆代码库的时候没有安装commit-msg hook导致(克隆代码库时没有选择『克隆并安装hook』)。
解决办法:

step1. 在本地代码库的根目录下先安装hook:

scp -p -P 8235 {用户名}@icode.baidu.com:hooks/commit-msg $(git rev-parse --git-dir)/hooks

step2. 执行git commit --amend,vim打开提交信息的文件,不用做任何修改直接保存退出(wq)即可。

(若依然无法push,请尝试git reset --soft origin/[branchname]后重新commit)

原因2.已经安装hook,本地做merge操作,此时默认生成的merge commit不带change-id。

解决方法:

这种情况下执行git commit --amend一下就会自动生成change-id,进而正常push了。

原因3.已安装hook,本地也不是做merge操作,依然报错。原因很可能是由于你的commit信息在编辑的时候写到了最后一行『change-id:xxxxx』的后面,push时的check会检查最后一行是否为change-id,如果夹在commit信息中间会被识别为commit信息的内容造成change-id缺失无法push。

解决方法:使用git commit --amend修改commit message信息,一定要保证change-id在最后。


最后推荐一个 js常用的utils合集,帮我点个star吧~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值