用git也有一段时间了,遇到了大大小小的问题,写一篇文章来汇总一下。
git用法总结
1. commit回退
写完代码后,我们一般这样
git add . //添加所有文件
git commit -m "本功能全部完成"
执行完commit后,想撤回commit,怎么办?
**git reset --soft HEAD^**
这样就成功的撤销了你的commit
注意,仅仅是撤回commit操作,您写的代码仍然保留。
说一下个人理解:HEAD^的意思是上一个版本,也可以写成HEAD1,如果你进行了2次commit,想都撤回,可以使用HEAD2
至于这几个参数:
--mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add .
操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
--hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend
此时会进入默认vim编辑器,修改注释完毕后保存就好了。
2. 报错"Changes not staged for commit:"
提交时加上参数:-a ,表示新增。
git commit -am "提交说明"
3. 文件过滤
-
新建.gitignore文件:
- 文件夹不想上传如果在仓库根目录下的文件夹则可以 /文件夹名字/ 来标注
- 如果是某个后缀的文件就可以 .*** 这样子 例如 .jar 或者.properties 因为properties里有自己数据库地址的IP或者是账号密码之类的;
- 如果不在根目录而在其子目录下的子目录可以从根目录往下走 /文件夹名字/子文件夹名字/**…/文件名.后缀
例如
/src/main/resources/*.properties
就是src
文件夹下的main
下的resources
下的.properties文件 -
.后缀表示所有该文件夹下的该后缀的文件都不显示 如果只是某一个则可以将*替换为具体的文件名字
!后面跟的表示这个文件是过滤忽略,就是表示该文件是可以被上传的
-
在服务器上编辑
.gitignore
文件来进行配置即可,例如不想提交.out文件,这时就可以在.gitignore
文件里面写入如下内容$ cat .gitignore *__**pycache__** .vscode .idea *.pyc *.db *.mp3 *.log *.wav *.out *log.txt $ vi .gitignore
4.记住账号密码
git bash进入你的项目目录,输入:
git config --global credential.helper store
然后你会在你本地生成一个文本,上边记录你的账号和密码。当然这些你可以不用关心。
然后你使用上述的命令配置好之后,再操作一次git pull,然后它会提示你输入账号密码,
第一次输入正确之后,下次使用git pull 以及git push 都无需账号密码了。
5. 设置默认的git用户名和密码方法:
- 进入到git项目的根目录下,打开
.git
目录下的config
文件
cd .git
vim config
- 添加如下内容
[credential]
helper = store
6. 浅克隆
当项目过大时,git clone
时会出现error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out
的问题。
depth用于指定克隆深度,为1即表示只克隆最近一次commit.
git clone --depth=1 xxxxx.git
这种方法克隆的项目只包含最近的一次commit的一个分支,体积很小,即可解决文章开头提到的项目过大导致Timeout的问题,但会产生另外一个问题,他只会把默认分支clone下来,其他远程分支并不在本地,所以这种情况下,需要用如下方法拉取其他分支:
$ git clone --depth 1 https://github.com/dogescript/xxxxxxx.git
$ git remote set-branches origin 'remote_branch_name'
$ git fetch --depth 1 origin remote_branch_name
$ git checkout remote_branch_name+
7. 查看以前版本以及回滚
git reflog # 查看所有的commit记录
git log # 查看所有git记录
git reset --hard <HEAD名> # 回退到HEAD的提交
8. 分支查看与删除
$ git branch -a #查看项目的分支们(包括本地和远程)
$ git branch -d <BranchName> # 删除本地分支
9. merge用法(以dev分支合并入master分支为例)
git checkout dev # 先切到dev分支,进行更新内容的拉取(如果远端无更新,可以直接进行merge)
git pull # 拉取更新
git checkout master # 切到master分支
git merge --no-ff dev # 将dev分支的内容合并过来,可选参数-m,加commit注释
10. Win更新系统后git bash快捷键消失解决办法:
https://blog.csdn.net/weixin_42357048/article/details/80533571