Git常用命令

常用Git命令


1、基本使用

工作区 --> 暂存区 --> 本地仓库 --> 远程仓库


1、添加到暂存区

git add 文件名
# 添加所有被修改文件
git add .. 

2、提交到本地仓库

git commit -m "提交说明"

3、推送到远程仓库

git push origin master 

4、查看本地提交记录

#查看本地最新提交
git show
# 查看简短的git提交日志 ,按q退出
git log --oneline

2、故障解决

2.1 修改了工作区,但是没有add到暂存区,此时想撤销这次的修改(当然,你可以选择手动讲修改改回来只要你不嫌麻烦),一般情况下我们都使用IDE开发,很多修改会被自动add到暂存区,所以这个命令一般很少用到

# 查看哪些文件会被撤销
git checkout --
# 指定撤销某个文件
git checkout --  ./文件路径/文件名
# 指定撤销某个目录下的所有文件
git checkout 相对目录/
git checkout src/

2.2 修改被add到暂存区,还没有提交到本地仓库,测试就要做两部,先把暂存区的内容退回到工作区,然后按照上面的命令撤销本次修改

# 将某一个被修改的文件退回到工作区
git reset head --  指定文件
# 将所有修改退回到工作区 不加任何参数
git reset head -- 
# 撤回工作区的修改
git checkout -- 文件名

和上面类似的命令

git restore --staged [file] : 表示从暂存区将文件的状态修改成 unstage 状态。当然,也可以不指定确切的文件 ,例如:
git restore --staged *.java 表示将所有暂存区的java文件恢复状态
git restore --staged . 表示将当前目录所有暂存区文件恢复状态
--staged 参数就是表示仅仅恢复暂存区的
  • 总结:**

上面两个操作在工作中不是很常用,应为IDE一般会又回退修改的按钮直接一件就能做到,所以一般不需要写命令


2.3 当我们不想提交的代码被commit到本地仓库怎么办:

 git restore -s HEAD~1 READEME.md  // 该命名表示将版本回退到当前快照的前一个版本
 git restore -s 91410eb9  READEME.md  // 改命令指定明确的 commit id ,回退到指定的快照中
 git reset --soft HEAD^  // 该命令表示撤销 commit 至上一次 commit 的版本

git reset --soft HEAD^ 使用这个命令的时候报下面错,与下面相同的原因
今天在使用git回退功能的时候,遇到以下错误:
git reset --hard HEAD^:
fatal: ambiguous argument ‘HEAD^’: unknown revision or path not in the working tree.
Use ‘–’ to separate paths from revisions, like this:
‘git […] – […]’
查了下原因可能有两种:
因为cmd控制台中换行符默认是,而不是 ,所以符号被git编译为换行符了,解决方案:
git reset --hard “HEAD^”
git reset --hard HEAD~[return times]
该仓库到目前为止只有commit过一次代码,故已经是head版本,也会报这样的错,无需关心直接commit或者rm即可
参考原文链接:https://blog.csdn.net/voledmort/article/details/100794005

2.4 当错误的提交被推到了远程仓库时

后面更新

3、清理未跟踪的文件

  • 查看哪些文件/目录将会被删除
git clean -dn
  • 只删除没跟踪的文件,不删除目录
git clean -f
  • 删除没跟踪的文件和目录
git clean -df

用之前先查看一下会删除哪些文件,不要造成误删!!!!

4、分支管理

  • 1、查看本地和远程的分支
git branch -a
  • 2、删除本地/远程分支(确保分支已合并)
#删除本地分支
git branch -d 分支名
#删除远程分支
git push origin --delete 分支名  # 删除远程分支时不会同步删除本地分支,需要再次删除
  • 3、创建分支
git branch 分支名
# 指定版本号创建分支 这个命令非常实用 
# 当你想从某次提交或tag拉一个分支出来时就可以用这个分支
# 注意此处的commitId需要完整的commitId,简写的不行
git checkout -b branchName commitId/tag

  • 4、打版发布
# -a标签名 -m提交说明
git tag -a 标签名(v1.0) -m"标签说明"  某一次提交的id
git tag -a v1.0 -m"基本完成" 363e9be 
#  查看标签
git show v1.0
# 删除标签
git tag -d v003
# 推送标签到远程
git push origin v003
# 推送所有标签到远程(本地删除过标签,远程也会修改)
git push origin v003

5、暂存当前修改

git stash
# 恢复最后一次修改
git stash pop 
# 查看还有多少修改
git stash list

常用git stash命令:

(1)git stash save "save message"  : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。

(2)git stash list  :查看stash了哪些存储

(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}

(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show  stash@{$num}  -p ,比如第二个:git stash show  stash@{1}  -p

(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} 

(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}

(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储

(8)git stash clear :删除所有缓存的stash

# 单独保存指定的几个文件
$ git stash push <file1> <file2> <file3> [file4 ...]
$ git stash push xx.txt aa.java -m"保存信息"
摘自:https://blog.csdn.net/fs000x/article/details/104329487/

6、合并遇到冲突时,回到合并前状态

git merge --abort
# 总结一下
该命令仅仅在合并后导致冲突时才使用。git merge --abort将会抛弃合并过程并且尝试重建合并前的状态。
但是,当合并开始时如果存在未commit的文件,git merge --abort在某些情况下将无法重现合并前的状态。
(特别是这些未commit的文件在合并的过程中将会被修改时)

警告:运行git-merge时含有大量的未commit文件很容易让你陷入困境,这将使你在冲突中难以回退。因此
非常不鼓励在使用git-merge时存在未commit的文件,建议使用git-stash命令将这些未commit文件暂存
起来,并在解决冲突以后使用git stash pop把这些未commit文件还原出来。
摘自:https://blog.csdn.net/weixin_43883776/article/details/85062087

7、远程分支已经删除,但是本地任然能看见,看起来比较难受;更新本地的远程分支信息

git fetch origin --prune

8、配置全局和单个仓库的usernameemail
通常git会配置一个全局的usernameemail但是又是我们需要给单个仓库配置usernameemail

# 查看全局配置 其中在最下面会显示但前仓库的配置
git confit --list

# 配置全局username和email
git config --global user.name "github's Name"
git config --global user.email "github@xx.com"

# 配置单个仓库的username和email
git config user.name "gitlab's Name"
git config user.email "gitlab@xx.com"

# 单个仓库的配置可以到仓库根目录的.git中的config文件查看
vim .git/config

9、本地分支和远程分支关联
有时候直接使用git pull 拉取远程提交时提示拉取失败

$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> dev

此时需要指定哪个远程的哪个分支货主将本地分支和远程建立联系

git branch --set-upstream-to=origin/dev dev

在多远程仓库的情况下未尝试,待以后探索

9、分支的操作

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>或者git switch <name>

创建+切换分支:git checkout -b <name>或者git switch -c <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

10、日志查看

git log --graph --pretty=oneline --abbrev-commit
--graph 线型比较详细的日志 包含hash message 提交时间和提交人
--pretty=oneline 将详细的日志简化为一行 只包含hash 和提交message
--abbrev-commit 缩写hash值

11、版本回退

# 回退到指定commit
$ git reset --hard 1094a
# 回退到上一个版本
$ git reset --hard HEAD^
# 本地当前分支和远程某分支保持一致的HEAD位置
$ git reset --hard origin/master

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值