git命令

作者: 3e2235c61b99 | 来源:发表于2020-08-10 19:49 被阅读0次

    1.查看本地文件的修改明细

    // git diff 查看工作区和暂存区的差别,即未add的内容
    git diff [path]      //[path]是文件路径  如:git diff text.txt 或  git diff src/
    git diff    //查看全部修改内容
    

    2.撤销本地修改

    即放弃对本地已修改但尚未提交的文件的修改,还原其到未修改前的状态。
    注意: 已 add/ commit 的文件不适用个方法

    git checkout .      # 撤销对所有已修改但未提交的文件的修改,但不包括新增的文件
    git checkout [filename]     # 撤销对指定文件的修改,[filename]为文件名
    

    3.git回退项目版本

    可以回退到任意已经提交过的版本。已 add / commit 但未 push 的文件也适用

    git reset --hard [commit-hashcode]      # [commit-hashcode]是某个 commit 的哈希值,可以用 git log 查看
    

    4.git新建分支

     git checkout -b [branch name]        #[branch name]即新分支名称
    

    上面的命令相当于一下两个命令

    git branch [branch name]      # 创建新分支
    git checkout [branch name]      # 切换到分支
    

    或者也可以用下面的命令创建或切换分支

    git switch -c dev   // 创建并切换到dev分支
    git switch main     // 切换到main分支
    

    5.git删除文件

    之前不小心把本地测试用的一个文件提交到git上了,现在想把它从git仓库中删除,但是本地保留,命令如下:

    git rm --cached [filename]    //从索引中删除文件。但是本地文件还存在, 只是不希望这个文件被版本控制。
    

    然后正常commit,push就可以了
    另外:

    git rm    // 同时从工作区和索引中删除文件。即本地的文件也被删除了。
    git rm --cached    //从索引中删除文件。但是本地文件还存在, 只是不希望这个文件被版本控制。
    
    git rm    //来删除文件,同时还会将这个删除操作记录下来;
    rm    //来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除;
    //提示:即使你已经通过 rm 将某个文件删除掉了,也可以再通过 git rm 命令重新将该文件从 git 的记录中删除掉。
    
    git rm text1.txt    //删除文件示例
    git rm -r mydir    //删除文件夹示例
    

    6.git add

    git add [path]    //如:git add src/test.txt   跟踪指定文件,[path]可以指定到具体的文件,也可以是文件夹
    git add [path] [path] [path]    //跟踪多个指定文件
    git add .    //不加参数默认为将修改操作的文件和未跟踪新添加的文件添加到git系统的暂存区,注意不包括删除
    git add -u .      //-u  == --update ,表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件,注意这些被删除的文件被加入到暂存区再被提交并推送到服务器的版本库之后这个文件就会从git系统中消失了。
    git add -A .    //-A == --all  , 表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。
    git add -i .    //这个暂时不知道怎么用...
    

    7.git add后撤销

    git reset [path]    //撤销指定文件的add操作,[path]可以指定到具体的文件,也可以是文件夹(会撤销文件夹下被add的所有文件)
    

    git reset HEAD    //如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 
    git reset HEAD [path]    //对指定文件进行撤销
    

    加不加HEAD有什么区别,暂时还不清楚......,以后再探索喽

    8.git commit 后修改或撤销

    git commit -m "提交"之后,感觉注释写错了,怎么办呢,用下面这个命令可以修改commit的注释

    git commit --amend    //可以修改 git commit时的注释
    

    commit之后想要撤销本次commit操作

    git reset --soft HEAD^ 或 git reset --soft HEAD~1        //撤销commit操作
    // HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1,如果进行两次的commit,想要都撤回,可以使用HEAD~2
    

    commit之后想要撤销本次commit操作和add操作

    git reset --hard HEAD^    //把上面的soft改为hard就可以
    
    --soft     不删除工作空间的改动代码 ,撤销commit,不撤销git add file
    --hard    删除工作空间的改动代码,撤销commit且撤销add    会撤销本地修改
    
    git reset --hard [commitId]  // 把文件重置到这个commit时的状态,如提交三次1,2,3,从第三次提交之后硬性重置到2的状态时,只要git窗口没关还能看到第三次提交时的cimmitId,也可以用这个命令再把文件重置到第三次提交时的状态
    

    9.git pull之后查看本次更新的内容:

    git diff HEAD^  #显示工作目录与git仓库之间的差异
    

    10.git commit 后查看commit的内容:

    git log    //显示从最近到最远的提交日志,可以获取commit的id
    git show [commitId]    //查看commitId对应的修改内容
    
    git log --pretty=oneline  // 以单行模式查看提交日志,显示commit id和提交时的备注信息
    git reflog  // 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
    

    11.git 删除远程分支

    git push origin --delete [branch_name]    //只会删除远程分支
    git branch -d [branch_name]    // 删除本地分支
    

    12.git merge

    1.开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支

    git checkout dev
    git pull
    git checkout master
    git merge dev
    git push -u origin master
    

    2.或者只是有一个本地分支(shen),并没有往线上推送,想把这个分支的更新合并到master分支

    git add -u .    //当前在shen分支
    git commit -m "commit info"
    git checkout master
    git merge shen  //当前在master分支
    
    git merge 之后取消合并

    在执行完git merge shen之后,如果两个分支修改了同一个文件,那就有可能会导致文件内容冲突.
    代码合并出现冲突之后,如果两个修改都想要,可以解决冲突之后重新提交
    如果冲突代码很混乱不知道怎么修改或者不想要合并过来的版本,可以用下面的命令取消合并

    git merge --abort  // 取消合并
    

    13.提交现有代码到git

    一:git init
    二:git add --all
    三:git commit -m '第一次提交'
    四:在gitee上建好仓库,复制仓库地址
    五:git remote add origin https://gitee.***.git
    六:git push -u origin master

    14git修改分支名称

    • 本地分支重命名(还未推送到远程)
    git branch -m oldName newName
    
    • 远程分支重命名(已推送到远程)
    git branch -m oldName newName    // 1.重命名远程分支对应的本地分支
    git push --delete origin oldName    // 2.删除远程分支
    git push origin newName    // 3.上传新命名的本地分支
    git branch --set-upstream-to origin/newName    // 4.把修改后的本地分支与远程分支关联
    

    15.切换分支

    1. 如果本地有分支,只需要用以下命令就可以切换分支
    git checkout [branchName]
    

    如:git checkout shen可以从当前分支切换到 shen 分支

    1. 如果本地没有分支,需要拉取新分支的代码并切换到新分支的话,可以
      (1). git checkout -b shen origin/jianshu,这个命令可以在当前分支拉取到远程jianshu分支的内容,并把本地分支命名为shen
      git checkout -b jianshu origin/jianshu,这个命令可以在当前分支拉取到远程jianshu分支的内容,并把本地分支命名为jianshu
      因为是想要切换分支,所以我一般把本地分支和远程分支取相同名称
    git checkout -b [本地分支名称] origin/[远程分支名称]
    

    (2). 或者用下面这种写法

    git checkout --track origin/远程分支名  //(这种写法是上面的简化版,效果完全一样)
    如: git checkout --track origin/shen
    

    (3). 上面第二种写法还能简化

    git checkout -t origin/远程分支名(这种写法是2的简化版)
    // git checkout -t origin/shen
    

    (4). 或者用下面这种方法

    git fetch  // 获取远程所有分支
    git branch -r  // 可以看到所有远程分支,假设有一个分支叫origin/shen
    git checkout shen // 即可,会在本地新建一个同名分支,并与该远程分支关联
    // 自己试了下,好像直接 git checkout shen 也可以切换过去......
    

    相关文章

      网友评论

          本文标题:git命令

          本文链接:https://www.haomeiwen.com/subject/updhdktx.html