之前用git命令行提交代码的,后面用了段时间小乌龟,以至于命令行使用生疏了,真应了那句话:用则熟,不用则生。谨以记录之前的笔记,中间如用一些谬误,还请不吝指出,感谢!
常用指令:
1、git add readme.txt
2、git commit -m "注释"
3、git diff readme.txt //文件修改了,但未提交,此命令可查看改了什么内容
4、git log //显示最近到最远的日志
5、git reset --hard HEAD^ //返回上个版本,HEAD^^退到上上版本
git reser --hard (+commitID) //返回到某个版本
6、cat readme.txt //查看readme.txt内容
7、git reflog //显示所有版本号日志版本,再通过git reset --hard (commitID),返回到哪个版本。
8、git checkout fileName //移除这个文件的修改
git checkout . # //移除所有的修改
rm b.txt //删除这个文件
9、git commit --amend //再次提交,覆盖上次的提交
10、git pull origin master //更新本地代码
11、git push origin master //提交
12、在一个分支下,出现多个提交(commits),但是代码没有冲突的情况下,可以输入:git rebase -i 来合并到一个commit上。
13、git stash save -u //添加到缓存区(包括新建文件)
14、git stash apply //把缓存区内容拉到该分支
创建与合并分支命令:
1、git branch //查看自己分支
2、git bracnh -a //查看所有分支
3、git branch name //创建分支
4、git checkout name //切换分支
5、git checkout -b name //创建+切换分支
6、git merge name // 合并某分支到当前分支
7、git branch -d name //删除分支
提交代码步骤
1、git status //查看你修改的文件
2、git add . //提交所有修改
3、git commit -m "+注释" //提交并注释
4、git push origin sven0228 //提交到sven0828分支
修改后再次提交:git commit --amend
git push origin sven0228 --force
git checkout -b sven0308 origin/v_2.2.32 //再从某主干分支拉新分支
解决冲突:
1、git fetch //拉取最新的
2、git rebase
git status (查看哪些文件冲突,并手动解决冲突)
3、git add .
git rebase --continue
回退命令:
1、修改某文件后,但又不想修改了,且未进行git add操作:
解决方法: git checkout fileName
2、修改某文件后,进行add操作,但又不想修改了:
解决方法:git reset HEAD fileName
3、修改某文件后,进行add且进行git commit 操作,需要回退前一步(进行add,但未进行commit):
解决方法:git reset --soft HEAD^
4、修改文件后,进行add且进行git commit操作,需要还原文件(未被add,未被commit):
解决方法:git reset --hard HEAD
5、回退到上个版本(commitID版本)状态:
解决方法:git reset --hard commitID
更换git 远端仓库地址:
最近要在原项目基础上开发新项目,把原项目拉下来,更换一个git地址即可
1、首先把项目拉下来,并保存修改:
git commit -m "message"
2、移除之前的远端地址:
git remote remove origin
3、将新的git地址添加进去
git remote add origin [new .git url]
4、最后提交所有代码
git push -u origin master
查看Git 提交日志
git log --pretty=format:"%ad | %s%d (%an)" --date=short
删除远程分支
git push origin --delete dev //删除远程分支
git branch -D dev //删除本地分支
统计项目代码总量:
git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'
代码回退至某个版本,并覆盖git
git reset --hard 123456789 // 回退到某个commitID
git push -f // 强制把该commit内容推到远程仓库
代码回退至某个分支,并覆盖这个分支(如把dev分支推到master)
git reset --hard origin/dev // 在master分支上,重置内容为dev分支
git push -f // 强制把该commit内容推到远程仓库
放弃本地所有修改、新增、删除文件和目录
git checkout . && git clean -df
注释:
git checkout . //放弃本地修改,没有提交的可以回到未修改前版本
git clean //是从工作目录中移除没有track的文件.
git clean -df //-d表示同时移除目录,-f表示force,因为在git的配置文件中,clean.requireForce=true,如果不加-f,clean将会拒绝执行.
本地已远超冲突,强制拉取远程代码
git fetch --all //只是下载代码到本地,不进行合并操作
git reset --hard origin/master //把HEAD指向最新下载的版本
查看用户名和邮箱地址:
$ git config user.name
$ git config user.email
// 修改用户名和邮箱地址:
$ git config --global user.name "username"
$ git config --global user.email "email"
git 强推跳过eslint检查
git commit -m "XXX" 改为 git commit --no-verify -m "XXX"
git查看当前分支是基于哪个分支拉取
git reflog show --date=local | grep develop