git 从指定分支checkout 分支并推送到远程
git checkout -b backup origin/master
git push origin backup:backup
git push -u origin backup
git push origin backup
1.安装 git
yum install git
2.版本管理
- 1.创建版本库
git init
2.添加文件到版本库
git add readme.txt
- 3.把文件提交到版本库
git commit -m "comment"
3.仓库关联
- 1.关联本地仓库到远程仓库
git remote add origin git@github.com:michaelliao/learngit.git
- 2.1.第一次关联本地仓库到远程仓库
git push -u origin master
- 2.2.之后推送
git push origin master
4.从远程仓库克隆
git clone git@github.com:michaelliao/gitskills.git
5.分支操作
- 1.创建分支
git branch dev
- 2.切换分支
git checkout dev
- 3.创建并切换分支
git checkout -b dev
- 4.查看分支
git branch
- 5.合并分支
- 1.切换到目标分支
git checkout master
- 2.合并制定分支到当前分支
git merge dev
- 6.删除分支
- 1.正常删除
git branch -d dev
- 2.强制删除
git branch -D dev
6.时光穿梭机
- 1.查看git当前状态
1.查看git状态
git status
2.查看分支合并图
git log --graph --pretty=oneline --abbrev-commit
- 2.查看修改 git diff
git diff readme.txt
- 3.版本回退
- 1.查看版本历史:从近到远
全部信息 git log 简单信息 git log --pretty=oneline
- 2.回退到制定版本
回退到上一个版本 git reset --hard HEAD^ 回退到上上版本 git reset --hard HEAD^^ 回退到指定 commid_id 版本:版本前几位即可 git reset --hard 3628164
- 3.查看执行过的 git 命令
git reflog
- 4.丢弃工作区的修改:-- 一定要加上
git checkout -- readme.txt
- 5.把暂存区的修改撤销掉,重新放回工作区
git reset HEAD readme.txt
- 6.删除文件
1.移除文件 git rm test.txt 2.提交移除动作 git commit -m "remove test.txt"
- 7.恢复被删除的文件
git checkout -- test.txt
7.bug 分支管理
- 1.存储当前正在进行的修改
git stash
- 2.切换到bug分支
git checkout master
- 3.修复并提交bug分支,删除bug分支
1.新建 bug 分支:
git checkout -b issue-101
2.修改bug
vi readme.txt
3.提交修改
git add readme.txt
git commit -m "fix bug 101"
4.合并修改到主分支
git checkout master
git merge --no-ff -m "merge bug fix 101" issue-101
5.删除bug分支
git branch -d issue-101
- 4.切换到工作分支
git checkout dev
- 5.还原之前的修改
1.查看git状态
git status
2.查看驻存去
git stash list
3.回复驻存区域
3.1.恢复最近驻存并删除驻存
git stash pop
3.2.恢复驻存区
git stash apply stash@{0}
3.3.删除驻存区
git stash drop stash@{0}
8.远程分支查看
- 查看远程信息:git remote
- 查询远程分支详细信息:git remote -v(显示可以拉取和推送的分支)
- 推送本地分支到远程分支
git push origin master/dev
- 创建本地的远程分支的分支
git checkout -b dev origin/dev
- 更新最新提交,然后再推送
- git pull
如果拉取失败:There is no tracking information for the current branch
建立本地和远程连接之间的对应关系
git branch --set-upstream dev origin/dev
再次拉取最新提交
git pull
9.多人协作模式
-
首先,可以试图用git push origin branch-name推送自己的修改;
-
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
-
如果合并有冲突,则解决冲突,并在本地提交;
-
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
10.标签管理
-
1.为什么还要引入tag?
- tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
-
2.打标签
- 1.切换到要打标签的分支上
git checkout master
- 打标签
1.默认在最新提交上打标签 git tag v1.0 2.在指定的提交上打标签 2.1.找出提交的commit id git log --pretty=oneline --abbrev-commit 2.2.打标签 git tag v0.9 6224937 3.创建带有说明的标签 git tag -a v1.0 -m "version 0.1 release" 6224937
- 查看所有标签
git tag
- 查看标签信息
git show v0.9
-
3.删除标签
- 1.删除本地标签
git tag -d v0.9
- 2.删除远程标签
1.删除本地 git tag -d v0.9 2.从远程删除 git push origin :refs/tags/v0.9
-
4.推送标签到远程
推送单个标签到远程
git push origin v1.0
推送所有标签到远程
git push origin --tags
11.使用多个远程分支
- 关联本地分支到远程分支
1.关联本地分支到远程分支
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
2.如果报错:已经关联其他远程分支了
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
fatal: remote origin already exists.
3.删除已关联远程分支
git remote rm origin
4.再关联到远程分支
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
- 关联本地分支到多个远程分支
1.git 给远程分支默认起的名字叫 origin,如果使用多个分支那么需要给每个不同分支起不同的名字
2.删除远程分支
git remote rm origin
3.关联到github远程分支库:名字叫github
git remote add github git@github.com:michaelliao/learngit.git
4.关联分支到码云
git remote add gitee git@gitee.com:liaoxuefeng/learngit.git
5.查看远程仓库会看到2个仓库
git remote -v
6.如果要推送到 github
git push github master
7.推送都码云
git push gitee master
12.自定义 git
- 1.让 git 显示颜色
git config --global color.ui true
- 2.忽略特殊文件
- 建立 .gitignore
- 编写内容
# Python: *.py[cod] *.so *.egg *.egg-info dist build
- 供参考的 .gitignore 例子:https://github.com/github/gitignore
- 把 .gitignore 提交到 git
- 强制加入被忽略的文件
git add -f App.class
- 检查哪个规则忽略了指定文件
git check-ignore -v App.class
13.配置别名–global:参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用
- 1.git status 使用 git st
git config --global alias.st status
- 2.git 默认缩写
co->checkout
ci->commit
br->branch
- 3.unstage:撤销暂存区修改
git config --global alias.unstage 'reset HEAD'
- 4.git last:显示最后提交信息
git config --global alias.last 'log -1'
- 5.显示git提交历史的树
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
- 6.查看 git 配置文件(当前仓库,当前用户在用户主目录下的一个隐藏文件.gitconfig中)
cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git@github.com:michaelliao/learngit.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[alias]
last = log -1
- 7.删除别名
直接把对应的.git/config中的 alias 里面的行删掉即可