1. 命令把这个目录变成Git可以管理的仓库
git init
2. 添加文件
git add .
3. 添加注释
git commit -m '123'
4. 提交代码
git push origin master
5. gitignore 不起作用的解决办法
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
6. 设置用户和邮箱
git config --global user.name "blankcat"
git config --global user.email "123@qq.com"
git config user.name "blankcat"
git config user.email "321@qq.com"
7. 生成公共密文
cd ~/.ssh
ssh-keygen
cat ~/.ssh/id_rsa.pub
8. git 放弃本地修改,强制拉取更新
开发时,对于本地的项目中修改不做保存操作(或代码改崩),可以用到Git pull的强制覆盖,具体代码如下:
git fetch --all
git reset --hard origin/master
git pull //可以省略
git fetch 指令是下载远程仓库最新内容,不做合并
git reset 指令把HEAD指向master最新版本
9. 添加仓库
git remote add origin git@github.com:michaelliao/learngit.git
10. 获取更多远程仓库信息
git remote show origin
11. 想要将 pb 重命名为 paul
git remote rename pb paul
12. 如果因为一些原因想要移除一个远程仓库 - 你已经从服务器上搬走了或不再想使用某一个特定的镜像了,又或者某一个贡献者不再贡献了 - 可以使用
git remote rm paul
13. 创建dev分支,然后切换到dev分支
git checkout -b dev
也可以
git branch dev
git checkout dev
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
远程仓库上有其他分支:git branch -va
撤销修改:git reset HEAD <file>
撤销操作:git checkout – 文件名
回滚到指定版本:git reset --hard XXXXXX
强制推送到远程仓库:git push origin HEAD --force
合并某个分支上的单个commit :git cherry-pick 62ecb3
可以显示该文件每次提交的diff :git log -p filename
git log -p README.md
查看某次提交中的某个文件变化 :git show commit-id filename
git show 999e31080f96c29d84e11a82e87bfa175976fe0e README.md
14. 打标签
显示全部
git tag
模糊匹配
git tag -l 'v1.4.2.*'
创建一个含附注类型的标签非常简单,用 -a (译注:取 annotated 的首字母)指定标签名字即可:
git tag -a v1.4 -m 'my version 1.4'
可以使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象。
git show v1.4
只要在打标签的时候跟上对应提交对象的校验和(或前几位字符)即可:
git tag -a v1.2 9fceb02
15. 退回版本
git reset --mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
git reset --soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset --hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
git commit --amend :git修改已commit的注释信息
git push origin HEAD --force
16. 暂存操作
git stash save '本次暂存的标识名字'
17. 查看记录
git stash list
18. 恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash pop stash@{index}
19. 恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash apply stash@{index}
20. 删除某个暂存, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash drop stash@{index}
21. 删除全部暂存
git stash clear
如果你使用的是 Git Bash,直接使用 git pull --rebase。如果拉取不产生冲突,会直接 rebase,不会产生分支合并操作,
如果有冲突则需要手动 fix 后,自行合并。
22. 版本冲突解决出现MERGING情况
执行完git pull --rebase之后如果有合并冲突,使用以下三种方式处理这些冲突:
git rebase --abort 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃;
git rebase --skip 则会将引起冲突的commits丢弃掉(慎用!!);
git rebase --continue 合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突。(fix conflicts and then run "git rebase --continue")
解决完冲突以后使用
git add '<冲突文件>'
git commit -m "解决冲突文件"
git rebase --continue #就可以线性的连接本地分支与远程分支,无误之后就回退出,回到主分支上。
#注意:一般情况下,修改后检查没问题,使用rebase continue来合并冲突。