1.记住用户名密码

push的时候默认每次都需输入Gitee的密码,git config credential.helper store 可记住用户名密码,无需每次推送都输入了

或者在git仓库根目录下.git文件夹的config文件末尾增加如下内容
[credential]
     helper = store

2. Git提交时忽略部分文件

在根目录下创建.gitignore文件,然后把要忽略的文件名填进去。 注意:新加.gitignore只能忽略那些原来没有被提交过的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'

忽略文件的原则是:
1.忽略操作系统自动生成的文件,比如缩略图等;
2.忽略编译生成的中间文件、可执行文件等,比如Java编译产生的.class文件;
3.忽略敏感信息的配置文件,比如存放口令的配置文件。

GitHub上详细的针对数十种项目及语言的 .gitignore 文件列表

3.bug分支

dev进行到一半没办法提交,这时需要改bug,可以使用stash功能把当前工作现场“储藏”起来,等恢复后继续工作。

1. git stash
2. 在哪个分支上修复bug,就从哪个分支创建临时分支
   git checkout master
   git checkout -b issue
3. 修改后执行git addgit commit
4. 切换到master分支,并完成合并
   git switch master
   git merge --no-ff -m "merged bug fix issue" issue
5. 切换回dev分支 
   git switch dev
   查看工作区和stash内容
   $ git status
   $ git stash list
   stash@{0}: WIP on dev: f52c633 add merge
6. 恢复工作现场
    - 恢复的同时把stash内容也删了
   git stash pop 
    - 恢复后stash内容并不删除,需要用git stash drop来删除
   git stash apply stash@{0}

如果在master分支上修复的bug,想要合并到当前dev分支

git cherry-pick <commit>

4. Feature分支

每添加一个新功能,最好新建一个feature分支,在上面开发,完成后合并,最后删除该feature分支。

1. git switch -c feature
2. 执行git addgit commit
3. 切回dev 准备合并 git switch dev
  • feature-1 和 feature-2 都是基于 dev 同一节点的分支。feature-1先完成开发并合并到dev,feature-2还没开发完,但是想同步feature-1的代码。
git rebase origin/dev

5.关于撤销修改

  • 提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了
git commit -m 'initial commit'
git add forgotten_file
git commit --amend
  • 改乱了工作区某个文件的内容,想直接丢弃工作区的修改。
//把某文件在工作区的修改撤销,让这个文件回到最近一次git commit或git add时的状态
git checkout -- file
  • 不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改。
第一步 git reset HEAD <file> 回到场景1
第二步 按场景1操作 git checkout -- file
  • 已经提交了不合适的修改到版本库时,想要撤销本次提交,前提是没有推送到远程库。
回退到上一版本 
git reset --hard HEAD^
  • 本地代码还未commit就执行了git pull,撤销操作回退到上一版本
git reflog
git reset --hard <commit id>
  • checkout用版本库里的版本替换工作区的版本,恢复工作区被修改或者被删除的文件
git checkout -- <file>

6.关于合并

  • 只拉取某次提交到dev分支
git checkout dev  
git cherry-pick <commit id>
  • 从指定分支拉取指定文件
//只是简单的从A分支copy到B分支
git checkout [commit id|branchName] <file>
//将A分支上的文件追加补丁到B分支上的文件。提示输y或者n(接受或拒绝补丁内容)
git checkout --patch branchName <file>
  • 合并某个分支上的多次提交
合并bug分支的76cada ~ 62ecb3 到dev分支:
git checkout bug 
git checkout -b newbranch 62ecb3
git rebase --onto dev 76cada^ 

7. 整理commit提交信息

将同一个分支上的第一个提交:change 1 和 第二个提交:change 2 合并为一个提交

  • 已经push到远程
  1. git 输入如下指令
//将两次提交的请求以文本的形式进行展示
git rebase -i HEAD~2
//或者 如果不指定end则默认当前分支HEAD所指向的commit
git rebase -i  [startCommit]  [endCommit]

提交信息如下:
在这里插入图片描述

指定说明:

  • p-pick:保留该commit
  • r-reword:保留该commit,但需要修改该commit的注释
  • e-edit:保留该commit, 但要停下来修改该提交(不仅仅修改注释)
  • s-squash:将该commit和前一个commit合并
  • f-fixup:将该commit和前一个commit合并,但不保留该提交的注释
  • x-exec:执行shell命令
  • d-drop:我要丢弃该commit
  1. 输入i进入vim编辑模式,将第二行的pick改成s, 然后Esc进入命令模式,输入 ZZ (或者:wq)保存文件并退出vim
pick dc63080 显示运单号并复制
s ab3990a 安装包

执行结果如下:
在这里插入图片描述

  1. 继续输入i进入编辑模式,修改上图中的commit信息合并为一条,然后保存并退出vim
    在这里插入图片描述
    在这里插入图片描述

  2. 最后git push origin dev -f 强制推送

PS:vim的简单使用

  • 在本地未push到远程
  1. 点左下角的Git,显示本地的commit信息
    在这里插入图片描述
  2. 在commit1信息上(startCommit)右键,选择Interactively Rebase from Here
    在这里插入图片描述
  3. 点击commit2(endCommit),选择squash,点击startRebasing开始合并
    在这里插入图片描述
  4. 编辑commit信息,Ctrl+Enter完成
    在这里插入图片描述
    在这里插入图片描述
    Git常用指令总结
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐