当前位置:   article > 正文

git常用命令_guthub stage add

guthub stage add

基本概念

working tree(工作区) 新添加的,和修改的未add操作的。
Stage(暂存区Index)   add操作过后,会进入暂存区。
Repository(本地仓库)   commit操作后,会进入本地仓库。
Remote(远程仓库)       push操作后,会提交到远程仓库

HEAD:                 HEAD就是指向当前分支当前版本的游标
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

配置全局你的用户名,邮箱

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
git config –-list       //然后查看自己的配置
git config --global --unset user.name '你的用户名'    //移除某个全局配制
  • 1
  • 2
  • 3
  • 4

克隆远程项目

git clone <远程连接>      // 克隆远程项目,默认 clone 的是这个仓库的 master 分支。
git clone -b 分支名 <远程连接>   // 克隆指定分支到本地
  • 1
  • 2

增加或删除文件

git add [file1] [file2] ...: 添加指定文件到暂存区。
git add [dir]: 添加指定目录到暂存区,包括子目录。
git add .: 添加当前目录的所有文件到暂存区。
git add -p: 添加每个变化前,都会要求确认,对于同一个文件的多处变化,可以实现分次提交。

git rm [file1] [file2]  // 删除工作区文件,并且将这次删除放入暂存区。
git rm --cached [file]  // 从暂存区删除文件,工作区则不做出改变。
git mv [file-original] [file-renamed]: 改名文件,并且将这个改名放入暂存区。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

git rm -h
用法:git rm [<选项>] [–] <文件>…
-q, --quiet 不列出删除的文件
–cached 只从索引区删除
-f, --force 忽略文件更新状态检查
-r 允许递归删除
–ignore-unmatch 即使没有匹配,也以零状态退出

代码提交到本地仓库

git commit -m [message]: 提交暂存区到仓库区。
git commit [file1] [file2] ... -m [message]: 提交暂存区的指定文件到仓库区。
git commit -a: 提交工作区自上次commit之后的变化,直接到仓库区。
git commit -v: 提交时显示所有diff信息。
git commit --amend -m [message]: 用一次新的commit,替代上一次提交,如果代码没有任何新变化,则用来改写上一次commit的提交信息。
git commit --amend [file1] [file2] ...: 重做上一次commit,并包括指定文件的新变化。
git commit --amend    //如果提交时,commit后,突然发现,有些文件漏添加,此时可以重新 git add  文件。随后运行git commit --amend;最后再push即可  (amend 修改)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

远程同步(提交到远程)

git push <远程仓库地址在本地所对应的仓库名,一般为origin> <本地分支名>:<远程分支名>。 //将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反)
git push -u <远程仓库地址在本地所对应的仓库名,一般为origin> <本地分支名>:<远程分支名>  // -u 是指将本地的分支与远程分支相关联,下次直接push即可
git push <远程仓库地址在本地所对应的仓库名,一般为origin> <本地分支名>  //将本地当前分支 推送到 与本地当前分支同名的远程分支上:
git push   // 将本地当前分支 推送到 与本地当前分支同名的远程分支上(需先关联远程分支)
  • 1
  • 2
  • 3
  • 4

注意:

  • 受保护的分支,无法直接向其push代码,只能通过线上手动合并后修改其内容
  • 要想合并代码,先把线上相应分支的代码fetch到本地新建的分支,再用当前的分支把新建的分支内容给合并进来,最后提交合并后的代码

多分支操作

git branch                   // 查看本地所有分支        
git branch -r                // 查看远程所有分支
git branch -a                // 查看本地和远程所有分支
git branch  <分支名>          // 新建一个本地分支,但依然停留在当前分支 
git branch -m <旧分支名> <新分支名>   //重命名本地       
git branch -d <分支名>              //删除本地分支
git branch -r -d <分支名>           //删除远程仓库里的指定分支
git branch -u <远程分支>        //将本地当前分支与远程分支相关联
git branch -vv                 //查看本地分支与远程分支的映射关系

git checkout <分支名>   //切换到本地指定分支
git checkout -b <分支名>      // 新建一个本地分支,并切换到该分支
git checkout -- <file>     //撤销本地的修改操作,恢复到修改之前的
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

设置/取消上游分支

设置上游分支
  • 方式一(适用远程分支已存在)
    用参数 -u 或 --set-upstream-to 设置上游
git branch --set-upstream-to=origin/<远程分支> <本地分支>
  • 1
  • 方式二(适用远程分支不存在)
    上传本地分支到远程,同是把上传后的远程分支设置为本地分支的上游分支:
git push set-upstream origin <远程分支>
  • 1
取消上游分支
 git branch --unset-upstream
  • 1

分支合并

git fetch <远程地址> <分支名> //取回origin主机的master分支。eg: git fetch origin master

git remote -v: 显示所有远程仓库。
git remote add  <本地命名的仓库名>  <远程所对应的地址url>     //本地增加一个新的远程仓库,并命名。
  • 1
  • 2
  • 3
  • 4
  • 合并本地其它分支到本地当前分支
//将<指定分支>合并到当前分支,对所要合并的分支不产生影响,只对当前分支产生影响
git merge  <指定分支>    
  • 1
  • 2
  • 合并远程指定分支到本地当前分支
// 取回远程仓库的变化,并与本地分支合并。
// 此操作相当于两个操作,1, git fetch 从服务器上抓取数据;2,git merge 尝试合并入当地远程分支
git pull <远程仓库在本地对应的仓库名> <远程分支名>:<本地分支名> 

// 或者
git pull     // 将与本地当前分支同名的远程分支 拉取到 本地当前分支上(需先关联远程分支)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 允许不相干历史合并
//允许不相干历史合并
git pull <远程仓库在本地对应的仓库名> <远程分支名>:<本地分支名>   --allow-unrelated-histories  
  • 1
  • 2
  • 合并分支后需要再次提交到线上
> 分支合并后,如果冲突,手动解决冲突后,再次add  --> commit  --> push即可;
## 打标签
```bash
gti tag             // 列出所有tag
git tag [tag]       // 新建一个tag在当前commit
git tag -d [tag]    // 删除本地tag。
git push  <远程仓库>  <标签名>  //把相应标签内容推送到仓库
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

查看

git status      // 显示有变更的文件

git log         //查看提交记录;
git log -p      //查看并详细显示修改的地方   
git log <file>  // 查看该文件每次提交记录
git reflog      //  显示你在这个分支上的操作记录
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

对比差异

git show                   //  显示最近一次提交的内容 
git show <commitId>        //  先前具体某次提交时,所做的改变
git show <commitId> <文件路径>        //  先前具体某次提交时,某个文件所做的改变

git diff             // 查看 工作区 与 暂存区 的差别
git diff <file>      // 比较当前文件工作区和暂存区文件差异
git diff --cached    // 查看index file(暂存区)与commit(本地仓库)的差别的。
git diff HEAD        // 查看working tree(工作区)和commit(本地仓库)的差别的,在这里HEAD代表的是最近的一次commit的信息。
git diff  <commit_id> <commit_id>   //查看两次commit之间的区别
git diff  <远程分支>                //远程分支与当前本地分支的区别
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

回退

还原文件的三种情况
1、如果改动还未做过任何git操作
git checkout .        // 恢复工作区内所有改动过的文件。
git checkout [file]  //  恢复工作区内具体改动过的文件。
  • 1
  • 2
2、如果已经add(提交到暂存区),还未commit
git reset HEAD <file>   // 从暂存区撤销一个add
  • 1
3、如果已经commit操作了
git reset HEAD^  //撤销本次commit操作,注意:工作区内容保留不变
git reset --hard HEAD^  //撤销本次commit操作并回退到上一个版本,注意:工作区内容恢复到上一个版本的时候(即当前工作区内容不做保留
  • 1
  • 2

如果已经 add,可以用 git reset HEAD 先撤销 add,
再丢弃工作区的更改

如果你已经commit了,可以用
git reset --hard HEAD^ 进行回退到上一版本

4、将工作区恢复上一个状态,同时缓存工作区当前的修改
// 暂存现场,即将工作区恢复上一个状态,同时缓存工作区当前的修改,以待之后恢复
// 暂存现场,不论当前变更的内容在哪个状态(尚未add/add)。暂存恢复后,都是在未add的状态(即在工作区)
git stash

// 列出储藏的工作现场
git stash list

// 恢复现场,但现场不删除
git stash apply

// 多个现场时指定恢复某一现场,先用 git stash list 查看
git stash apply <stash id>

// 恢复现场,并将现场删除
git stash pop

// 删除现场
git stash drop
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
回退本地到指定版本 — git. reset 的使用方法(会覆盖之前的提交记录,不建议)
git reset 常用指令的状态

在这里插入图片描述

git. reset 会覆盖之前的提交记录,不建议

git reset --soft 目标版本号   // 仅仅重置HEAD到制定的版本,不会修改 暂存区 和 工作区 
git reset --hard 目标版本号   // 慎用!!!! 重置HEAD、暂存区与工作区。
git reset --mixed 目标版本号   // 重置HEAD、暂存区,工作区不变。

// git reset   如果没有给出<mode>则默认是--mixed
git reset [file]  // 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
git revert 常用指令的状态

git revert 是在当前版本的基础上新增一个版本,不影响以前的代码
在这里插入图片描述

git reset 本地撤消某一版本的提交,并将该版本之后的提交记录删除
// 1.git log查看要回退的版本号
git log 

// 2.reset 回退版本
git reset --hard 目标版本号

// 3. 再通过git log 查看,目标版本号 之后的提交记录都没了,都被覆盖了
git log

// 4. 此时再推到远程仓库用git push 会报错,需要用git push -f强推上去才可以
git push -f
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
git revert 本地撤消某一版本的提交,新增一条log日志(该版本之后的提交仍保留)

在这里插入图片描述

// 1.git log查看要回退的版本号
git log 

// 2.revert 回退版本
git revert -n 目标版本号

// 3. 再通过git log 查看,是新建了一个版本,之前的版本都在
git log

// 4. 此时再正常提交即可。 
git add .
git commit -m ""
git push
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

本地分支与远程分支手动建立映射

git branch -u origin/<分支名称>
# or
git branch --set-upstream-to origin/<分支名称>
  • 1
  • 2
  • 3

远程有新分支但是本地看不到这个新分支

在远程创建了一个新的分支dev,但是我在本地使用命令git branch -r查看远程的所有分支,没有这个新分支。
我们需要去更新一下远程仓库在本地仓库的缓存,通过如下命令:

git fetch origin
  • 1

或者

git remote update origin
  • 1

然后再查看git branch -r,就能看到更新啦

不跟踪文件的设置

不跟踪的文件设置( .gitignore ):
在项目根目录下新建一个 .gitignore文件,将不需要跟踪的文件写入其中即可;(.gitignore可以用notepade++来建立即可)
注意:  / 开头表示根目录
        以/结尾表示是文件夹,而非文件

注意:如果你是新加的,这里需要注意的是.gitignore只能作用于没有被track的文件,也就是工作区的文件,
对于add,commit操作后的文件是没有作用的,这个时候需要先把本地的缓存删除,在去提交,
就可以实现忽略相应仓库文件了。

git rm -r --cached .      //删除本地缓存,即使得所有文件不再被git追踪
git add .                 //再添加新的追踪
git commit -m 'update .gitignore'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

参考链接一:https://github.com/WindrunnerMax/EveryDay/blob/master/Plugin/Git%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4.md
参考链接二:https://blog.csdn.net/arkblue/article/details/9568249/
重点参考链接: https://www.cnblogs.com/Gxiaopan/p/6714539.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/822845
推荐阅读
相关标签
  

闽ICP备14008679号