基础操作
- 需要一个文件夹作为版本库
- 建立仓库
git init - 添加文件
git add filename - 提交文件
git commit -m "info" - 查看日志
git log//—pretty=oneline
版本控制
- 版本回退
git reset —hard HEAD^
HEAD^:上一个版本 HEAD~100:100个版本之前 commit_id:回退到该ID对应版本 - 查看命令日志
git reflog - 查看状态
git status - 比较不同
git diff HEAD — readme.txt - 撤销/丢弃在工作区的修改
git checkout -- <file>
ps: 如果没有放到缓存区,就回退到和版本库一样,如果放到了缓存区,回退到缓存区 - 把缓存区文件放回工作区
git reset HEAD <file> - 从版本库中删除该文件,那就用命令
git rm删掉,并且提交git commit -m "delete a file" - 删错恢复
git checkout — test.txt
推送到远程仓库
- 关联远程仓库
git remote add origin git@github.com:server-name:path/repo-name.git - 把本地库的当前master分支内容推到远程
git push -u origin master - 本地提交后,推送到远程github
git push origin master
从远程库克隆
git clone git@github.com:username/repo-name.git
本地库分支管理
- 查看分支:
git branch - 创建分支:
git branch <name> - 切换分支:
git checkout <name> - 创建+切换分支:
git checkout -b <name> - 合并某分支到当前分支:
git merge <name> - 删除分支:
git branch -d <name>
强行删除一个没有被合并过的分支:git branch -D <name> - 分支可视化:
git log --graph显示分支合并图git log --graph --pretty=oneline --abbrev-commit更简略- 合并分支时:
- 加上
--no-ff参数用普通模式合并,合并后的历史有分支,能看出来曾经做过合并 - 加上
fast forward看不出来曾经做过合并,历史分支会被丢弃 - 保存工作现场:把工作现场
git stash,离开,再git stash pop,回到工作现场 - 查看工作现场:
git stash list
远程库分支管理
- 查看远程库信息:
git remote -v - 从本地推送分支:
git push origin branch-name
如果推送失败,先用git pull更新版本 - 在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-name(本地和远程分支的名称最好一致) - 建立本地分支和远程分支的关联,使用
git branch --set-upstream branch-name origin/branch-name - 从远程抓取分支:
git pull,如果有冲突,要先处理冲突。
使用标签
- 新建标签:
git tag <name>,默认为HEAD,也可以指定一个commit id; - 制定标签信息:
git tag -a <tagname> -m "blablabla..." - 用PGP签名标签:
git tag -s <tagname> -m "blablabla..." - 查看所有标签:
git tag - 推送一个本地标签:
git push origin <tagname> - 推送全部未推送过的本地标签:
git push origin --tags - 删除一个本地标签:
git tag -d <tagname> - 删除一个远程标签:
git push origin :refs/tags/<tagname>
配置需要忽略的文件
- 忽略某些文件时,需要编写
.gitignore文件 - .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理
配置别名(分支表示着色)
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” Git lg

git的配置文件
- 配置Git的时候,加上
--global是针对当前用户起作用的,如果不加,那只针对当前的仓库起作用。 - 每个仓库的Git配置文件:
.git/config文件中 - 当前用户的Git配置文件:用户主目录下的一个隐藏文件
.gitconfig中