左璞凡的博客

日出之美便在于它脱胎于最深的黑暗

0%

Git

[Git]

常用命令

  1. git init:初始化当前目录为一个git仓库,信息记录在隐藏的 .git 文件夹中

  2. git add XX:将XX文件添加到暂存区

  3. git add .:将所有待加入暂存区的文件加入暂存区

  4. git commit -m "注释信息":(暂存区 -> 本地仓库)

  5. git status查看修改状态

  6. git config --global user.name xxx:设置全局用户名,信息记录在 ~/.gitconfig 文件中

  7. git config --global user.email xxx@xxx.com:设置全局邮箱地址,信息记录在 ~/.gitconfig 文件中

  8. git restore --staged XX :将文件的修改从暂存区撤出到工作区,暂存区还有文件,会显示暂存区和工作区两文件的变化情况

  9. git rm --cached XX:会直接从暂存区删除文件,工作区则不做出改变。uncommitted且untracked。不会显示 git diff 的区别

  10. git log:查看当前分支的所有版本,即从空打印到当前HEAD节点的路径

  11. git log [option]查看提交日志
    option:
              --all 显示所有分支
              --pretty=online 将提交信息显示为一行
              --abbrev-commit 使得输出的commitId更简短
              --graph 以图的形式显示
    
    1
    2
    3
    4
    5
    6

    12. ```markdown
    git reset --hard HEAD^ 或 git reset --hard HEAD~:将代码库回滚到上一个版本
    git reset --hard HEAD^^:往上回滚两次,以此类推
    git reset --hard HEAD~100:往上回滚100个版本
    git reset --hard 版本号:回滚到某一特定版本
  12. git reflog:查看HEAD指针的移动历史(包括被回滚的版本)

  13. git restore XX git checkout — XX:将工作区中XX文件尚未加入暂存区的修改全部撤销,不是回滚到上一个版本,而是从工作区回滚到暂存区里存储的版本

  14. git remote add origin git@github.com:Zac-saodiseng/Zac-saodiseng.github.io.git:将本地仓库关联到远程仓库/推上去

  15. git push origin master(第一次需要写全,以后只需写 git push):将本地的某个分支推送到远程仓库(默认创建的都叫 master 分支即主分支)

  16. git clone git@github.com:Zac-saodiseng/Zac-saodiseng.github.io.git:将远程仓库通过使用SSH克隆将XXX下载到当前目录下(下载下来后 reflog 引用记录没有了,所幸所有 git log 节点都有)

  17. git checkout -b branch_name:创建并切换到 branch_name 这个分支。比如git checkout -b dev开了 dev 的分支

  18. git branch:查看所有分支和当前所处分支

  19. git branch -a:查看远程分支,以remote开头且为红色的都是远程分支

  20. git branch branch_name:创建新分支

  21. git checkout branch_name:切换到 branch_name 这个分支(注意这只是切换,创建加切换还要加上 -b

  22. git merge branch_name:将分支 branch_name 最新版本合并到当前分支的当前节点上。比如在 master 分支上将 dev 分支上的内容合并到 master 上可以写成:git merge dev

  23. git branch -d branch_name:删除本地仓库的 branch_name 分支(必须先去其他分支才能删除本分支)

  24. git push -d origin branch_name:删除远程仓库的 branch_name 分支

  25. git push [-f] [--set-upstream] [远端分支 [本地分支:远程分支]]推送到远程仓库
        -f 强制覆盖
        若远程分支和本地分支名称相同,可只写本地
    git push origin master --set-upstream 推送到远端同时建立关联关系
        若已关联 可省略分支名和远端名
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    27. ```
    需求背景:Git将本地某一个分支的内容上传到远程不同名分支(本地master分支上传到远程dev分支)
    解决方法:这种时候一般可分为两种情况,一种是dev分支在远程已经存在了,我们只需要把本地的内容push上去。另一种是dev分支在远程还没有被创建,我们需要在本地给远程创建dev分支,并把本地内容push上去。下面将分别进行描述。
    1. 远程dev分支已经存在:
    1)远程分支不一定能在本地被搜索到,当通过命令:$ git branch -a 查看不到远程dev分支时,可以通过命令:$ git fetch 进行刷新,然后再通过 $ git branch -a ,就可以看到远程分支了。
    2)通过命令: $ git branch -u origin/dev 将本地当前分支(目前为master)与远程库origin/dev分支进行关联绑定
    3)通过命令: $ git push --set-upstream origin master 将本地master分支的内容上传到远程dev分支。由于两个分支不同名,--set-upstream 参数不可省略,当然可以通过命令: $ git config --global push.default upstream 将push的默认方式改为upstream,这样以后push时就不用再输入参数--set-upstream
    2.远程dev分支还没有创建:
    这种情况可以在push的同时创建远程dev分支,并把本地master的内容上传上去。可通过命令:$ git push -u --set-upstream origin master:dev ,表示把本地master分支提交到远程dev分支,第一次运行时加上参数-u,表示把本地master分支与远程dev分支关联起来,效果与 $ git branch -u origin/dev 一样
  26. git push -d origin branch_name:删除远程仓库的branch_name分支

  27. git push --set-upstream origin branch_name:设置本地的 branch_name 分支对应远程仓库的 branch_name 分支 push 到远程

  28. git branch --set-upstream-to=origin/dev dev:将远程的 dev 分支与本地的 dev 分支对应,并拉/下载到本地。和下面一条的区别在于这条要先建立本地dev分支,且需要merge。强制删除分支用 git branch -D dev

  29. git checkout -t origin/dev:在本地只有master分支,要将devclone下来,即将远程的dev分支拉取到本地。

    • 补充:Git 2.23 版本之后,git checkout -t 命令已经被 git switch 命令取代,所以你也可以使用 git switch -t origin/dev 来实现相同的效果
    1
    2
    3
    4
    5
    6
    总结:

    git branch --set-upstream-to=origin/dev dev 用于已经存在的本地分支,只设置跟踪关系。
    git checkout -t origin/dev 用于创建并切换到与远程分支对应的本地分支。

    两个命令的最终效果是相似的,都是将本地分支与远程分支进行关联,使得在进行 git pullgit push 等操作时,Git 可以自动与远程分支进行交互。选择使用哪个命令取决于你的具体需求和当前的工作环境。
  30. git pull:将远程仓库的当前分支与本地仓库的当前分支合并

    • git pull origin branch_name:将远程仓库的 branch_name 分支与本地仓库的当前分支合并
  31. git stash:将工作区和暂存区中尚未提交的修改存入栈中

  32. git stash list:查看栈中所有元素

  33. git stash apply:将栈顶存储的修改恢复到当前分支,但不删除栈顶元素

  34. git stash drop:删除栈顶存储的修改

  35. git stash pop:将栈顶存储的修改恢复到当前分支,同时删除栈顶元素