Git使用指南

180 阅读5分钟

这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战

基本命令

  1. git init 初始化一个git仓库,即在当前文件夹下生成一个.git文件夹

  2. git status 查看当前文件所在哪个工作区

  3. git add test01.txt  提交文件,将工作区的文件提交到暂存区

    • git add ./ 把当前目录下所有修改过的文件全部提交
  4. git commit -m "描述" 将暂存区的文件提交到本地git仓库,并配上相关描述

    • git commit --all -m "说明"一次性把所有文件直接提交到仓库
  5. git log  提交版本日志,显示从最近到最远的提交日志

    • git log --oneline 精简版日志
    • git log -p 2a65db916 显示某次提交的修改记录
  6. git reset --hard HEAD^  回退到上一个版本

    • git reset --hard HEAD~0回退到上一次的版本,~1表示回退到上两次的版本
    • git reset --hard 1094a (版本号:commit id) 指定回到某个版本
  7. git reflog  用来记录你的每一次命令历史

  8. 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

  9. 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景一

  10. 显示暂存区和工作区的差异git diff

远程仓库

  1. 关联远程仓库:使用命令git remote add origin(这相当于一个变量自己随便起) git@server-name:path/repo-name.git(远程仓库的地址) 关联远程仓库后,以后只要是在这个本地仓库中push就可以使用简单命令git push [你自己起的远程仓库名]origin master 执行pull操作也可以这样使用
  2. 关联后,使用命令git push -u origin master第一次推送master分支的所有内容,-u参数会把本地分支与远程指定的分支关联起来,以后就可以直接push
  3. git push origin master 向远程仓库的master分支推送最新修改
  4. git pull [远程仓库的地址] master:可以把远程仓库的分支数据拿到,前提是本地要初始化一个本地仓库
  5. git clone [远程仓库的地址]:可以拿到远程仓库相同的数据,如果多次执行会覆盖本地内容
  6. git push [远程仓库的地址] master:向远程仓库推送分支数据

分支操作

  1. 创建分支:git branch
  2. 切换分支:git checkout 或者git switch
  3. 创建+切换分支:git checkout -b 或者git switch -c
  4. 查看分支:git branch:当前分支前面会标一个*号
  5. 删除分支git branch -d [branch-name]
  6. 合并分支:git merge dev:合并指定分支到当前分支上
  7. git branch --set-upstream [branch] [remote-branch]
  8. 删除本地已合并过的分支 git branch -d dev
  9. 删除本地未合并的分支 git branch -D dev (强制删除)

打标签

  1. 给当前分支打一个标签:git tag
  2. 查看所有标签:git tag
  3. 对指定的commitid打标签:git tag v0.9 f52c633
  4. 创建带有说明的标签,-a指定标签名,-m指定说明文字:git tag -a v0.1 -m "version 0.1 released" 1094adb
  5. git show 可以看到说明文字
  6. 如果标签打错了,也可以删除git tag -d v0.1
  7. 推送某个标签到远程:git push origin

stash功能

  1. git stash list 查看暂存列表
  2. git stash apply 恢复暂存,但是stash内容不删除,默认回复第一个
    • git stash apply stash@{0} 指定恢复哪个暂存
  3. git stash pop 同样是恢复暂存,但是恢复的同时也会将暂存删除
    • git stash pop stash@{1} 应用并删除指定暂存
  4. git stash save "xxx"   执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别
  5. git stash show 显示第一个暂存的改动,默认显示第一个
    • git stash show stash@{0} 显示第一个暂存的改动
  6. git stash drop stash@{0} 从列表中删除暂存
  7. git stash clear 删除所有的缓存

git cherry-pick

当我们master分支上有bug时修复后,那dev分支上肯定也有这个bug,那怎么在dev分支上修复同样的bug?重复操作一次那样也可以但特别麻烦,为了方便操作Git专门提供了一个cherry-pick命令,让我们能复制一个特定的提交到当前分支

  1. git cherry-pick 4c805e2 复制一次特定的提交到当前分支上
//git合并某个分支的特定commit到master分支
git checkout master
git cherry-pick 62ecb3

  1. git合并feature分支上多个特定的commit到master分支{

首先需要基于feature创建一个新的分支,并指明新分支的最后一个commit:git checkout -b newbranch 62ecb3 然后,rebase这个新分支的commit到master(--ontomaster)。76cada^ 指明你想从哪个特定的commit开始git rebase --onto master 76cada^

Revert操作

revert 操作相当于是重新提交了一次commit,只不过这个commit是把你的那些修改给还原了。

1.在gitlab上远程revert:不要哪次提交的代码就在哪个commit上revert 2.在本地revert代码:git reset --hard 846asdv 3.与远程仓库的代码保持同步:git reset origin/feature-hierarchyChart

常用命令

  1. git checkout -b dev origin/dev  新建立本地分支并与远程指定的分支关联
  2. git reset origin/master  使本地的分支和远程的master保持一致
  3. git reflog --date=local | grep [分支名称]  判断当前分支是基于哪个分支创建的

问题

1. 解决git push代码到github上一直提示输入用户名及密码的问题

解决方法:将http连接方式改为ssh方式

  1. Git remote -v 查看当前连接方式
  2. Git remote rm origin 移出旧的关联
  3. git remote add origin git@github.com:mm.git 以ssh方式关联