0. 基本配置
git config --global user.name "用户名"
设置邮箱:
git config --global user.email "邮箱地址"
设置push方式:
git config --global push.default simple (只推送当前分支。matching是推送所有与远程分支对应的本地分支)
设置文本编辑器:
git config --global core.editor
查看Git配置信息:
git config --list
1. 创建本地仓库
git init
2. 文件操作
工作区:本地目录
暂存区:存放未提交文件
仓库:存放提交文件
一般先将文件添加入暂存区,然后将暂存区的文件提交至仓库。
git add 文件名
git add . 将所有改动都添加
提交文件到仓库:
git commit 使用文本编辑器编辑注释
git commit -m “注释” 直接加入注释
git commit -a 略过暂存区直接提交文件(不能用于新建的文件)
将暂存区清空:
git reset
从暂存区删除文件:
git reset Head 文件名
修改最后一次提交:
git commit --amend
查看文件变动,并与远程仓库比较:
git status 未添加到暂存区的变动显示红色,添加到暂存区的变动显示绿色
查看暂存区文件变动细节:
git diff 文件名
撤销修改:
可以使用版本回退,返回到上一个已提交版本
使用git checkout -- 文件名
1. 工作区文件未添加到暂存区做的修改。
撤回到文件未修改时。
2. 工作区文件添加到暂存区后做的修改。
撤回到文件添加进暂存区时的状态。
删除文件:
本地删除后,commit -a, 或者先add再commit
使用git rm 文件名,然后commit
恢复文件:
如果未add,可以用checkout。
如果已经add,可以reset再checkout。
如果已经commit,可以撤回到上一个版本,
更名或移动:
git mv file_from file_to
仓库不保留该文件:
git rm --cached 文件名
给版本打标签(GitHub生成release):
git tag -a v1.0 -m "Version 1.0"
git tag -a v1.0 -m "Version 1.0" 版本号
显示版本信息:
git show v1.0
查看标签:
git tag
暂停/恢复工作:
git stash 暂停当前工作,清空暂存区
git stash list
git stash pop 恢复之前工作
3. 版本回退
查看历史版本:
git log
git log --pretty=oneline 单行显示
退回到上一版本:
git reset --hard HEAD^
git reset --hard HEAD^^ 退回到上上版本
退回到指定版本:
git reset --hard 版本号/标签号
查看版本变更记录:
git reflog
查看各引用版本:
git show-ref
refs/heads/master 是本地的master
refs/remotes/origin/HEAD 是远程的HEAD
refs/remotes/origin/master 是远程的master
4. 远程仓库
在GitHub账户的设置中添加SSH Keys,将public key的内容复制过来。
1. 已建好本地仓库,添加对应的远程仓库。
(1)在GitHub上创建一个新的仓库GitTutorial。
(2)添加一个名为origin的远程服务器端:
git remote add origin SSH路径 (如果使用https则每次都要输密码)
(3)关联本地仓库与远程仓库,并将本地仓库的内容推送到远程仓库:
git push -u origin master,以后用git push即可。
2. 已有远程仓库,建立本地仓库。
git clone SSH路径
git clone SSH路径 新目录名
显示远程仓库:
git remote -v
更新远程仓库:
git push
git push origin v1.0
git push --tags 将标签一同推送
git push -f 强制远程仓库与本地一致
git push --all 推送所有分支
删除标签号:
git -d v1.0
删除远程标签号:
git push origin :v1.0
根据远程仓库更新本地引用数据(显示远程仓库变动,分支情况,不合并):
git fetch
更新本地仓库与远程仓库一致:
git pull 将远程关联分支与本地分支合并
git pull origin dev 将远程dev分支与本地当前分支合并
git pull -p 删除本地的远程已经删除的分支
5. 分支
master主分支是stable的,而其他分支往往是用来开发新feature,消除debug的。分支内add并commit后的文件独立于其他分支。
在Git中,每个分支有一个指针(如master,dev,origin/master远程分支),还有一个HEAD指针指向当前的分支。fetch就是用来更新远程分支指针的。
参考链接:Git分支管理策略
当合并遇到冲突时,需要手工解决冲突文件的内容,可以使用git mergetool图形界面工具。
查看分支:
git branch
git branch -v 查看分支最后一次提交
git branch --merged 查看已经合并的分支
git branch --no-merged 查看未合并的分支
新建分支dev:
git branch dev
切换到dev分支:
git checkout dev
新建并切换到分支dev:
git checkout -b dev
将dev分支合并到当前分支:
git merge --no-ff dev
将dev分支衍合到当前分支(类似打补丁,让提交历史干净整洁):
git rebase master dev 将dev上的操作在master上重演
推送本地分支到远程分支:
git push origin dev
推送并关联远程分支:
git push --set-upstream origin dev
克隆远程分支到本地并切换:
git checkout -b dev origin/dev
git checkout --track origin/dev
先git fetch 然后git checkout dev