git-命令提交代码等基本操作,本地项目提交到github
git常用命令
1.初始化(git init)
进入到对应的目录,右键Git Bash Here
$ git init
Initialized empty Git repository in D:/project/git-demo/.git/
生成隐藏的.git文件夹则成功
2. 本地提交代码篇 (git add/commit)
- add
$ git add demo.txt
# 不加入git管理
git rm --cached demo.txt
git rm --cached -f demo.txt # 上面删除不掉时可以强制
查看状态命令
$ git status
![](https://img-blog.csdnimg.cn/20210228231022223.png)
新增文件太多,使用
git add *
或则
git add *.java
(提交所有的java文件)
- commit
$ git commit demo.txt -m '提交的第一个文件demo.txt'
再次查看状态
3.查看日志(log)
$ git log
![](https://img-blog.csdnimg.cn/2021022823353073.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODQ3MDE3Ng==,size_16,color_FFFFFF,t_70)
如果提交记录太多,一页展示不下则会分页
- 下一页:空格
- 上一页: b
- 退出: q
简化查看日志
$ git log --pretty=oneline
$ git log --oneline
![](https://img-blog.csdnimg.cn/20210228234721112.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODQ3MDE3Ng==,size_16,color_FFFFFF,t_70)
查看退回需要多少步日志
$ git reflog
![](https://img-blog.csdnimg.cn/2021022823515932.png)
HEAD@{数字} :里面的数字表示如果退回到历史版本需要多少步
git log --graph # 使用图标的方式查看日志
4.rebase 操作
1.rebase 合并本地的多个commit
1. git rebase -i [logid] # 或者 git rebase -i origin master(远程分支)
2. 手动选择合并多个提交的方式
pick # 选择该提交
squash # 选择该提交,但是合并到上一个提交中
drop # 丢弃修改
reword # 选用该提交,但是修改提交备注
3. 推送远程即可
git push origin master
2. 本地有commit未push,远程又有更新文件
1.如果至今pull 会有一条merge的记录,不太友好,可以采用如下方式
1. 拉取代码,并且采用rebase的方式
git pull origin master --rebase
2.(如果有冲突)
手动解决冲突后
git add 文件
git rebase --continue
3. 推送远程分支
git push origin master (提交到远程分支即可)
git rebase --abort 取消rebase操作
3. 合并远程已经push的commit(慎用)
操作方式与【1.rebase 合并本地的多个commit】相同,只是推送是需要强制推送(慎用)
git push -f origin master
reset回退/前进到之前的版本
$ git reset --hard a52f5f1 # 版本号前缀使用git log --oneline 可以获取
$ git reset --mixed HEAD~ #mixed 默认~代表上一个快照等同于 HEAD~1
$ git reset --soft HEAD~
-- 还原后强制推送
$ git push -f origin master
–hard 回退后会清除自己本地的修改记录
–soft 回退后会保留自己的修改内容,使用git status查看上次的提交记录未移除, 再次提交不需要add,仅commit即可
–mixed 与soft 一样会保留自己的修改记录,使用git status 查看,上次的提交记录移出了本地工作目录,再次提交需要先add,然后commit
![](https://img-blog.csdnimg.cn/20210301000251722.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODQ3MDE3Ng==,size_16,color_FFFFFF,t_70)
删除文件并还原
删除操作与添加文件一样,删除后先add 然后commit即可
$ rm demo.txt # 直接鼠标删除也行
$ git add demo.txt
$ git commit demo.txt -m '删除文件demo.txt'
![](https://img-blog.csdnimg.cn/20210301001055857.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODQ3MDE3Ng==,size_16,color_FFFFFF,t_70)
分支相关操作(git branch)
查看分支
$ git branch -v #本地分支
git branch -r # 远程分支
git branch -a #所有分支
创建分支
$ git branch dev20210301 # dev20210301 分支名
删除本地分支
git branch -d 分支名
切换分支checkout
$ git checkout dev20210301
![](https://img-blog.csdnimg.cn/20210301003142580.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODQ3MDE3Ng==,size_16,color_FFFFFF,t_70)
* 表示当前所在的分支
拉取远程分支
git fetch origin 分支名
git checkout -b 本地分支名 origin/远程分支名
远程仓库remote/push
查看远程仓库别名
$ git remote -v
给远程仓库创建一个别名
$ git remote add 别名 远程仓库地址 # 如git remote add origin https://github.xxx.xx.git
推送至远程仓库:
- 初始化 init (参考前面的)
- add/commit (参考前面的)
- push
$ git push [远程仓库地址|别名] [分支]
由于之前创建项目时手动添加了一个master分支且创建了readme.rm文件,所以第一次推送冲突,建议创建项目时不要马上添加rm文件
$ git pull origin master
From https://xxx/spring_cloud_demo
* branch master -> FETCH_HEAD
fatal: refusing to merge unrelated histories
出现错误,使用下面的
$ git pull origin master --allow-unrelated-histories
继续出现错误
$ git pull origin master --allow-unrelated-histories
From https://xxxxx/spring_cloud_demo
* branch master -> FETCH_HEAD
error: Your local changes to the following files would be overwritten by merge:
.idea/.gitignore .idea/compiler.xml .idea/encodings.xml .idea/jarRepositories.xml >.idea/misc.xml .idea/uiDesigner.xml .idea/vcs.xml .idea/workspace.xml > spring_cloud_demo
$ git stash # 隐藏本地修改
$ git pull origin master --allow-unrelated-histories
再次打开隐藏的本地代码
$ git stash pop
![](https://img-blog.csdnimg.cn/2021030101201923.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODQ3MDE3Ng==,size_16,color_FFFFFF,t_70)
- 再次推送,成功
git push origin master
![](https://img-blog.csdnimg.cn/20210301012517848.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODQ3MDE3Ng==,size_16,color_FFFFFF,t_70)
修改本地用户命密码
window:控制面板\所有控制面板项\凭据管理器 找到【windows 凭证】对应git的账号地址,直接删除
取消正在合并(有冲突)
git merge --abort
取消合并没有冲突,未push
git reset --merge ORIG_HEAD
下载远程分支
git clone url
会自动生成别名origin
修改备注
1.git commit --amend
2.使用vim编辑器编辑,按a或者i进入编辑模式
3.:wq