Git学习笔记

git的架构组成

  1. git init 可以将本文件夹作为git仓库

  2. git status 可以查看git状况

  3. git diff 文件名 可以查看文件发生的改变

  4. git add 文件名 将文件加入到提交队列,实际上就是把文件修改添加到暂存区;

  5. git commit -m "本次提交信息",实际上就是把暂存区的所有内容提交到当前分支。你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
    默认我们提交文件的话,是两步, git add 加到暂存区, git commit -m “message” 真正提交, 如果想省一步的话,可以使用。git commit -am "message" 但是这种方法只适用于修改或者删除文件,新增文件还是要先add的.

  6. git log命令显示从最近到最远的提交日志

  7. 在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

  8. git reset --hard HEAD^ 可以将文件退回到上一个版本. 如果想把会退的版本强制推到远程,就用 git push origin HEAD --force

  9. Git提供了一个命令git reflog用来记录你的每一次命令:

  10. HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

  11. 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

  12. 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

  13. 命令git checkout --文件名 可以将文件退回到最近一次git commitgit add时的状态。

  14. 用命令git reset HEAD^可以把暂存区的修改撤销掉(unstage),重新放回工作区

  15. 关于撤销修改

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

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

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

  16. 要关联一个远程库,使用命令git remote add 起一个名字 git@github.com:gaoleilearnjava/仓库名.git

    删除远程仓库: git remote rm 远程仓库名

    关联后,使用命令git push -u 远程仓库名 master第一次推送master分支的所有内容;

    此后,每次本地提交后,只要有必要,就可以使用命令git push 远程仓库名 master推送最新修改;

    抓取的话就是 git pull (后面没参数)

  17. git clone git@github.com:michaelliao/gitskills.git 可以克隆远程仓库到本地

  18. 关于git分支的讲解,点我 学习git分支操作点这里

  19. 创建分支git branch 分支名 切换分支 git checkout 分支名 两条命令也可以合并成一条命令 git checkout -b 分支名

  20. git branch 查看当前分支. git branch -a 可以查看所有的远程以及本地的分支。 git branch -r 可以查看所有的远程分支。

  21. git merge 分支名 git merge命令用于合并指定分支到当前分支,这种快速合并看不到原来的分支了,普通合并请用 git merge --no-ff -m "合并消息" 制定分支名

  22. git branch -d 分支名 删除分支

  23. 创建并切换到新的dev分支,可以使用:

    $ git switch -c dev
    
  24. 直接切换到已有的master分支,可以使用:

    $ git switch master
    
  25. git log --graph命令可以看到分支合并图。

  26. 为了方便操作,Git专门提供了一个git cherry-pick <提交的版本号>命令,让我们能复制一个特定的提交到当前分支:
    git stash可以保存工作现场。git stash pop可以将工作现场还原。

  27. 要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

  28. 要查看远程库的信息,用git remote -v

  29. 敲命令git tag <name>就可以打一个新标签,可以用命令git tag查看所有标签:

  30. git checkout 提交的节点 可以快速切换过去

  31. git branch -f 分支名 节点名 强制把某个分支指向某个节点

  32. git reset 分支名 可以将当前节点会退到另一个历史节点

  33. git revert 分支名git reset 分支名很像,但是不是直接回退,而是复制该历史节点,然后前进一格.

  34. git cherry-pick <提交号>... 如果你想将一些提交复制到当前所在的位置(HEAD)下面的话, Cherry-pick 是最直接的方式了。 比如说 git cherry-pick C2 C3 C4就相当于直接把C2 C3 C4拿过来,然后复制到当前分支上.

  35. git rebase -i 分支节点 出来一个UI界面,让你手动调整提交的顺序,甚至可以删除某些提交.

  36. 如果远程已经有分支. 那么,在本地创建与远程有关联的分支,就用 git co -b 本地分支名 origin/远程分支名

  37. 如果远程没有分支,想直接把本地的分支推到远程. 可以用git push origin 远程分支名. 这样推过去的是没有追踪关系的,你还要用下面的方法建立追踪关系.

  38. 如果本地也有分支,远程也有分支,想建立一个追踪关系,可以这样, git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名>, 或者这样 git push -u <远程主机名> <本地分支名>

  39. 查看追踪关系 git branch -vv

  40. fork是将代码复制到云端的仓库,clone是下载到本地的仓库.

  41. git查看当前分支是从哪个分支切出来的, git reflog --date=local | grep 当前分支名

posted @ 2019-11-24 15:59  时光轻轻吹  阅读(108)  评论(0编辑  收藏  举报