3个步骤
git add . 把所有文件放入暂存区;
git commit -m "comment" 把所有文件从暂存区提交进本地仓库;
git push 把所有文件从本地仓库推送进远程仓库。
4个区
工作区(Working Area)
暂存区(Stage)
本地仓库(Local Repository)
远程仓库(Remote Repository)
5种状态
未修改(Origin)
已修改(Modified)
已暂存(Staged)
已提交(Committed)
已推送(Pushed)
配置
git config --list 查询配置
git config --global user.name "yourname"
git config --global user.email "your_email"
生成SSH密钥
ssh-keygen -t rsa -C "这里换上你的邮箱"
cd ~/.ssh 里面有一个文件名为id_rsa.pub,把里面的内容复制到git库的我的SSHKEYs中
新建远程分支
git push origin local_b(本地分支名):origin_b(远程分支名)
git push -u origin 分支名
删除远程分支
git push origin :dbg_lichen_star
git push origin --delete/-d [branch-name]
重命名分支
git branch -m <oldbranch-name> <newbranch-name>
远端仓库重新命名
git remote rename old new
拉取并创建本地分支
git checkout -b 本地分支名x origin/远程分支名x
git fetch origin <branch-name>:<local-branch-name>
检查修改
1,已修改,未暂存
git diff //git diff的结果告诉我们哪些文件已经做了哪些修改。
2,已暂存,未提交
git diff --cached / git diff --staged //这时候我们看到的差异是暂存区和本地仓库之间的差异。
3,已提交,未推送
git diff master origin/master
撤销修改
1,已修改,未暂存
git checkout /git checkout --
2,已暂存,未提交
git reset . / git reset --hard
#git reset只是把修改退回到了git add .之前的状态,也就是说文件 本身还处于已修改未暂存状态,你如果想退回未修改状态,还需要执行git checkout .。
3,已提交,未推送
git checkout a18c6fa
git reset --hard HEAD~1
git reset --soft HEAD~1
4,已推送
git reset --hard HEAD^1
git push -u origin branch-name -f
origin:远程仓库名 branch-name:分支名称 -f:force,意为强制、强行
#先恢复本地仓库,再强制push到远程仓库就好了
强回滚到指定的版本
git reflog 查看版本
git reset --hard e377f60e28c8b84158
1,如果错误回滚之前版本,又有新提交,如何找回后来的版本又保留新提交:
git reflog
git reset --hard cd52afc (之前最后提交的hash)
git cherry-pick 4c97ff3 (新提交的hash)
2,撤销提交历史中的某一次指定的提交
git revert 711bb0b
#撤销该次提交(还原),并生成一个新的提交在最前面
amend
1,更改提交消息
git commit --amend -m “New commit message”
2,为了保持整洁的提交历史,将此文件加入到你之前的提交
git add file6
git commit --amend --no-edit
--no-edit 表示提交信息不会更改。
3,更改先前提交的作者消息
git commit --amend --author "Author Name <Author Email>"
***应该仅在本地仓库使用 amend 命令。在远端仓库使用 amend 命令会制造大量混乱。
rebase
git checkout feature
git rebase master
git rebase --abort 撤销变基
|| 遇到冲突,解决冲突,git add . ,然后 git rebase --continue 回最新的 commit
|| git rebase --skip
***请确保永远不要对远程存储仓库的代码使用变基。始终仅对本地仓库代码使用变基,来更改历史提交记录 如果 对远端仓库进行变基,会制造许多混乱
Git回滚merge操作
1、git merge --abort
2、git reset HEAD
3、git checkout HEAD
⑴ git reflog
查看merge操作的上一个提交记录的版本号
⑵ git reset –hard 版本号
这样可以回滚到merge之前的状态
git stash 把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录
1,git stash save "test" 给暂存起个名字
2,git stash pop [index]这个指令将缓存堆栈中的第一个stash删除,并将对应修改应用到当前的工作目录下
3,git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储 ,即stash@{0},如果要使用其他个,git stash apply stash@${num} ,
4,git stash list 查看现有stash
5,git stash drop 移除stash
6,git stash show 查看指定stash的diff
git stash show <stash@{ID}>
7,git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show <stash@{ID}> -p ,比如第二个:git stash show <stash@{1}> -p
8,git stash clear :删除所有缓存的stash
找回删除分支内容
1,git log -g ,找回之前提交的commit,并记下commit_id
2,git branch newbranch commit_id
3,切换分支
打tag
git checkout master
git tag -a 0.1 -m "Initial public release" master
git push --tags
git blame
git blame 文件名 :查看某个文件的每一行内容由谁所写
git blame 文件名 | grep "查找词" :根据查找词
git blame 文件名 -L a,b
-L 参数表示后面接的是行号(Line), a,b代表查询文件的第a行到第b行之间的文件内容情况。
a, 则代表从第a行到文件结尾
b则代表从文件开头到第b行。
参考链接:
https://mp.weixin.qq.com/s/Q2fLX27eb_fT3A84Pu1q1w
https://mp.weixin.qq.com/s/4vfifX-UkhrfpZjHycthOA
https://mp.weixin.qq.com/s/fylHW9mhy-5CYHKe2EM9DQ //git 撤销
https://mp.weixin.qq.com/s/CwO2owC0t8sMnuSOoEyebw
https://mp.weixin.qq.com/s/-DjGBDi7HQfVpGNY8sOCmw