Git常见使用

  1. git clone http||ssh 代码拉取;

  2. git status 查看当前分支有哪些修改;

  3. git diff 查看当前没有add的内容

  4. git add . 将本地所有新增文件提交到本地缓存区

  5. git add [filepath] 将本地某个新增文件提交到本地缓存区

  6. git commit -m 'log' 把stage中所有的修改提交到本地库

  7. git push 把本地库的修改提交到远程库中

  8. git pull 把远程库的代码更新到工作台

  9. git fetch 把远程库的代码更新到本地库,相较于git pull,fetch只更新了本地的origin分支,需要用户自行与工作区比较合并,但pull会更新本地origin,同时更新工作区。

  10. git branch -a 查看全部分支

  11. git checkout master/branch 切换到某个分支

  12. git log 查看当前分支上面的日志信息

  13. git remote -v 查看远程仓库地址

  14. git branch 分支名 创建新的分支

  15. git revert commitid 将本地修改还原回 线上的版本

  16. git checkout -- a.txt 放弃某个文件在工作区的修改,不会修改缓存区(add)和HEAD(commit)版本,还原到缓存区状态

  17. git checkout -- . 放弃整个工作区的修改

  18. git reset HEAD --hard 放弃缓存区(add)的修改,–hard 同时更改工作区,不然只撤销对缓存区的修改

  19. git reset HEAD a.txt 放弃缓存区某个文件的记录,但是不会更改文件

  20. git reset HEAD . 放弃整个缓存区的文件记录,但是不会更改文件

  21. git reset --hard commitid 回到某个提交的commit

  22. git reset --hard HEAD^ 回到当前HEAD的上一个版本

  23. git checkout -b branchName 切换都某一个分支,如果没有此分支,则创建后切换到该分支

常见场景:

撤销:未进行git push前的所有操作,都是在“本地仓库”中执行的。

  1. 文件被修改了,但未执行git add操作(working tree内撤销)。 记住checkout是撤销对工作区的更改。

    git checkout fileName
    git checkout .
    
  2. 同时对多个文件执行了git add操作,但本次只想提交其中一部分文件。记住reset是撤销对缓冲区的更改。HEAD代表回退操作的版本。

    git add *
    git status
    # 取消暂存
    git reset HEAD filename
    
  3. 文件执行了git add操作,但想撤销对其的修改(index内回滚)。

    # 取消暂存
    git reset HEAD fileName
    # 撤销修改
    git checkout fileName
    
  4. 修改的文件已被git commit,但想再次修改不再产生新的Commit

    git add sample.txt
    git commit --amend -m "说明"
    
  5. 撤销指定文件到指定版本

    # 查看指定文件的历史版本
    git log <filename>
    # 回滚到指定commitID
    git checkout <commitID> <filename>
    
  6. 删除最后一次远程提交

    # 使用revert
    git revert HEAD
    git push origin master
    # 使用reset
    git reset --hard HEAD^
    git push origin master -f
    # revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
    # reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。
    
  7. 回滚某次提交

    # 找到要回滚的commitID
    git log
    git revert commitID
    
  8. 分支合并

    git checkout master
    git merge dev
    # 若有冲突,则处理冲突完毕后git add, git commit提交
    git push
    
  9. 建议线上版本以tag的方式进行保存,而不是一个分支,分支更新如果出错就会回滚,而用tag就可以直接切换,方便快捷。

  10. git强制拉取更新远程最新代码,当reset重置了本地head后。

git fetch --all
# 重置head为远程head
git reset --hard origin/master
# 更新
git pull