git常用命令及问题总结

查看当前状态

#可以查看当前的branch和当前branch修改的文件状态
git status

查看提交的日志信息

#以行的形式打印出来
git log --pretty=oneline

提交代码到暂存区

#添加当前目录下,所有文件到暂存区
git add .
#添加当前目录下所有文件,并添加提交信息
git add . -m "commit all files"

从暂存区撤回提交

#撤回所有暂存区的文件,保留修改
git reset
#撤销所有已经add的文件
git reset HEAD .
#撤销某个文件或文件夹
git reset HEAD --fileName

使用stash保存文件(切换到别的文件,但要保留本分支的修改)

#暂存还没有提交的代码
git stash
#暂存时,添加说明信息
git stash save "save message"
#查看保存的stash列表
git stash list
#使用第一个stash(不会删除)
git stash apply
#使用第一个stash(会删除)
git stash pop
#使用指定的stash(不会删除)
git stash apply <stash id>  #如:git stash apply stash@{1}
#查看stash中的内容[修改了哪些文件的详细信息]
git stash show
#删除第一个stash
git stash drop
#删除指定的stash
git stash drop <stash id> #如: git  stash drop stash@{1}
#清空所有的stash
git stash clear

撤销提交【不保留代码】

#查看历史
git log
#回退本地的代码到某个branch或者commit id
git reset --hard version 
	#如:回退到上一次提交,
	git reset --hard HEAD^
	#回退之后,要同步本地与远程(要强制推送到远端)
	git push --force

撤销提交【保留代码】

#使用git reset --soft 
#撤销上一次的提交,并保留
git reset --soft HEAD^1
#撤销最近两次的提交,
git reset --soft HEAD^2
#如果只撤回某次的提交,[需要用commit id]
git reset --soft commit_id
#如果还没有过,可以直接push。如果已经push过,使用如下命令,强制推送
git push -f 

revert 撤销中间的某次提交【不会保留代码】

# git revert commit_id 可能会有代码冲突,需要手动解决。
#假如有五次提交,想要撤销中间第二次提交,不能用git reset --hard[此命令会把已经提交的文件的修改内容,全部删除掉]
#要使用如下命令:
git revert commit_id
#如果此commit_id是合并过来的,可以用-m 参数
git revert -m commit_id 
#如果想撤销多个commit_id
git revert --no-commit commit1 ... commit2 
#最后,push到远程仓库[不需要强制推送]
git push 

reset与revert的区别

#revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
#reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。
#reset --soft会保留代码,但revert不会保留代码

撤销正在进行的merging

#撤销merging
git merge --abort

删除本地多余的分支(远程已经合并的分支)

#方法一:删除本地多余分支(2条命令) 切到master分支
git remote show origin #查看本地分支和追踪情况
git remote prune origin #同步删除本地这些分支

#方法二:使用管道和xargs命令删除
git branch --merged |grep -v "\*" |grep -v "release" | xargs git branch -d

#方法三:写成shell脚本执行
#!/bin/bash
 branches=`git branch --merged |grep -v "\*" | grep -v "release"`; #获取分支名
 echo $branches;
 for branch in $branches
 do 
 	`git branch -d $branch`;
 	echo delete branch $branch; 
 done;

忽略不需要提交的文件

#方法一:
在.gitignore文件中添加
#方法二:
.gitignore只能忽略那些原来被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更改情况
git update-index --assume-unchanged File #File表示要忽略的文件
如果要还原的话,使用命令:
git update-index --no-assume-unchanged File 
#方法三:
修改.git/info/exclude #亲测,去除了idea中.flattend-pom.xml文件

同一个项目查看不同分支的代码

#利用worktree来创建新的目录,把对应的分支的代码全部放入这个目录中
#1.首先要切分支到自己想要看到的其他分支的分支
	#如:你想在featrue分支中,看到feature-1分支的代;就切换分支到feature-1分支
#2.首先添加对应的分支到worktree中
	git worktree add 目录 分支名称
#3. 现在所在区域为项目根目录,可以直接使用分支名称作为新建的目录名称
	git worktree add feature-1 feature-1 #第一个分支名称为目录名称
#4.使用完之后,删除掉worktree的分支
	git worktree remove 分支名称

关联分支失败,解决方案

#当使用git pull发现如下的错误
	#当前分支没有跟踪信息,
	#。。。
	#如果你想要为此分支创建跟踪信息,可以执行: 
	#git branch --set-upstream-to = <远程>/<分支> <本地分支>
#当使用此命令,依然报错。
#需要检查.git/config文件的内容,因为缺少remote等配置信息
#需要在别的目录下,git clone仓库,把.git/config文件的内容复制过来。
#git pull需要merge代码的话,
使用git pull --rebase来变基
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值