git 学习笔记
(本文主要是在学习廖雪峰大神时记下相关知识点,以备查忘)
安装git
sudo apt-get install git # 安装git
git config --global user.name 'My Name' # 设置名字
git config --global user.email 'email@example.com'
git config --all # 列出当前所有参数
创建git
git init # 初始化,将当前目录变成Git可以管理的仓库
ls -ah # 查看隐藏目录,有 .git 目录
git add <file> # 可添加多个文件
git commit -m 'explanation' # 添加解释
版本恢复
git status # 查看文件修改了是否未提交
git diff <file> # 查看文件修改了哪些地方
git log # 查看 历史提交记录
git log --pretty=oneline # 提交记录,只显示关键信息
git reset --hard HEAD^ # 回退到上一个版本
git reset --hard 3628164 # 根据commit id 恢复到指定的版本
git reflog # 查看命令历史
git reset HEAD <file> # 将缓存区的撤回到工作区,相当于撤销 git add 命令
git checkout --<file> # 版本库里的版本替换工作区的版本
git rm <file>
git commit -m "remove readme.txt" # 从版本库删除文件
远程库
git remote add origin git@github.com:github_username/repo_name.git
# 如果origin已存在,先执行git remote rm origin
git pull # 将远程库对应分支fetch and merge
git remote # 显示要推送的远程库别名
git push -u origin master # 将分支master推送到远程库origin
git push origin <branch_name> # 将分支branch_name推送到远程库origin上
git clone git@github.com:michaelliao/gitskills.git # 下载远程库master分支
git checkout -b <branch_name> orgin/<branch_name> # 将远程分支clone到本地
git branch --set-upstream <branch_name> origin/<branch_name> # 本地跟远程分支建立联系
分支管理
git branch <branch_name> # 从当前分支创建另一个分支
git checkout <branch_name> # 切换分支
git checkout -b <name> # 创建并切换分支
git branch # 查看分支
git merge <name> # 合并指定分支到当前分支
git branch -d <name> # 删除分支
git branch -D <name> # 强行删除分支
git log --graph # 以图形方式查看提交历史
git merge --no-ff -m "merge with no-ff" <name> #合并新分支, 不抹掉历史
git stash # 保存当前工作区,除非有没被Git管理的文件
git stash list # 查看保存的工作区
git stash pop # 恢复的同时把stash内容也删了
标签管理
git tag v1.0 # 对当前分支打上指定标签
git tag v1.1 <commit_id> # 对指定的 commit id 打上指定的标签
git tag -a v0.1 -m "version 0.1 released" <commit_id>
git show <tag_name> # 看指定标签的说明文字
git tag -d v1.0 # 删除本地的指定标签
git push origin :refs/tags/v1.0 # 删除远程上的指定标签
git push origin v1.0 # 推送指定标签到远程上
gt push origin --tags # 推送所有标签到远程上
自定义git
git config --global color.ui true # 允许git适当地显示不同的颜色
忽略某些文件时,需要编写.gitignore;
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
注意
- 所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件、程序代码等
- 注意工作区和版本库(缓存区、master)之间的含义,必须先add到缓存区,再commit到master
- 合并的时候,有可能会产生冲突。
冲突的产生是因为在合并的时候,不同分支修改了相同的位置。所以在合并的时候git不知道那个到底是你想保留的,需要手动选择想要保留的内容,解决冲突。
参考网址:
廖雪峰官网Git教程
Git教程首页
Git 提示fatal: remote origin already exists 错误解决办法
git2.9.2使用总结