基础操作
- 需要一个文件夹作为版本库
- 建立仓库
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
中