Git 学习
学习Git的基本操作后的整理
参考学习廖雪峰Git
友情附赠国外网友制作的Git Cheat Sheet
- 安装git(linux)
sudo apt-get install git
- 设置用户和邮箱
git config –global user.name = “XXX”
git config –global user.email = “XXX”
本地库操作
git status # 掌握工作区的状态
git diff # 查看文件被修改的内容
- 创建版本库
mkdir learngit # 创建目录
cd learngit # 进入目录
pwd #显示当前目录
git init # 设为版本库
- 将文件添加到版本库
git add <flie1> # 将文件添加到仓库
git add <flie2> # 可同时提交多个文件
git commit -m <message> # 将文件提交到仓库
时光穿梭
- 版本回退(HEAD指当前版本号)
cat readme.text # 查看文件内容
git log # 查看目前的提交日志
git log –pretty=oneline # 约束在一行
git reset –head commit_id # 版本回退
commit_id: HEAD^ 上一个版本 HEAD^^上上个版本 HEAD~100前100版本
1094adb...版本号
git reflog # 查看所有的版本号
- 撤销修改
git checkout -- <file> # 撤销文件在工作区的修改,返回上次add或者commit的状态
git reset HEAD <file> # 将文件从暂存库中丢弃
- 删除文件
rm <file> # 删除文件
1.# 从版本库中删除文件
git rm <file>
git commit -m <message>
2.# 恢复文件
git checkout -- <file>
远程仓库
- 连接github
# 本机生成SSH
ssh-keygen -t rsa -C “XXX@XXX.com”
# 本地仓库和github仓库关联
git remove add origin git@github.com:path/rope-name.git
- 提交远程库
# 把当前分支的master推给github
git push -u origin master # 第一次操作
git push origin master # 正常操作
git remote -v # 查看远程库信息
git clone git@github.com:path/rope-name.git # 克隆仓库
- 创建+合并分支(fast forward方式合并)
git branch <name> # 创建分支
git checkout <name> 或git switch <name> # 转到分支
git branch # 查看分支
git checkout -b <name> 或者git switch -c <name> # 创建+转到分支
git merge <name> # 合并分支
git branch -d <name> # 删除分支
git branch -D <name> # 强行删除分支
- 合并分支时解决冲突
git merge <name>后产生冲突
使用git status查看冲突的文件
使用cat <flie>查看冲突的内容后修改
然后在此add和commit
git log –graph # 查看分支合并图
- –no-ff方式合并分支(普用模式合并)
git merge --no-ff commit -m <message> <name> # 需要创建一个新的commit
- 修改bug
git stash # 储存当前的内容
git stash list # 查看储存的内容
git stash pop # 直接恢复(有一次stash时)
git stash apply stash@{0} # 恢复到stash@{0}
git stash drop # 删除储存
git cherry-pick <commit> # 把之前的bug修改的内容在当前分支修改
- 多人协作的工作模式
1.首先,可以试图用git push origin <branch-name>推送自己的修改;
2.如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3.如果合并有冲突,则解决冲突,并在本地提交;
4.没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
5.如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。这就是多人协作的工作模式,一旦熟悉了,就非常简单。
git checkout -b <branch-name> origin/<branch-name> # 在本地和远程库建立分支并连接
git rebase # 把本地未push的分叉提交历史整理成直线
标签
git tag # 查看标签
git tag <tagname> # 创建一个标签默认在HEAD位置
git tag <tagname> commit_id # 指定一个commit_id
git tag -a <tagname> -m “bababab...” # 指定标签信息
git push origin <tagname> # 推送一个本地标签
git push origin –tags # 推送所有的未推送过的标签
* 删除标签流程
1.git -d <tagname> # 删除标签
2.git push origin :refs/tags/ <tagname> # 删除远程库的标签
git自定义
git config --global color.ui true # Git显示颜色
git config --global alias.st status # 重定义