基本命令
初始化一个Git仓库,使用git init命令。
1. 使用命令git add,注意,可反复多次使用,添加多个文件;也可一次add多个文件,文件用逗号分隔,add是添加到暂存区
2. 使用命令git commit -m,可以多次add,一次commit,添加 -a 参数可以add全部修改的文件,一次提交,跳过add ,git commit -a -m "my first commit"
3. 要随时掌握工作区的状态,使用git status命令。
4. 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
5. HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
6. 版本穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。git log --graph --pretty=oneline --abbrev-commit 缩写的id并显示简单图git log --pretty=oneline
7. 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
8. 用git diff HEAD --命令可以查看工作区和版本库里面最新版本的区别
9. 修改了,但是未add,通过git checkout -- file 撤销工作区修改,若两次修改,只add一次,checkout只能回到add后的,也就是说checkout不能撤销add的
10. 如果已经add了,怎么办?git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本此时,暂存的修改被撤销,但修改还在,相当于修改后未add,此时想撤销就可以用checkout了
远程
11. 本地库和远程库关联 git remote add origin [email protected]:michaelliao/learngit.git
查看远程库:git remote
Git remote -v 显示更详细的信息,包括可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址
查看远程库地址:git remote xxx
删除远程库:git remote rm xxx
修改远程库:git remote set-url xxx
关联后,使用命令git push -u origin master第一次推送master分支的所有内容
git push origin推送到指定远程分支
12. 克隆仓库:git clone 可以使用git的原生协议,也可以使用https协议,但通过ssh支持的原生git协议速度最快
分支
13. 查看分支:git branch
本地和远程分支 git branch -a
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除本地分支:git branch -d
强制删除未合并的分支:git branch -D
删除远程分支:git push origin --delete
推送当前分支到远程仓库:git push --set-upstream origin
14. git merge命令用于合并指定分支到当前分支,优先使用快速合并不使用快速合并 git merge --no-ff -m "merge with no-ff" dev
15. 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
16. 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
17. 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
贮藏区
当前的修改,尚未达到可提交的状态,又需要切换到其他分支开发,可先add,然后git stash添加到暂存区,添加暂存后文件就不在工作区了
18. 查看暂存列表:git stash list
19. 恢复暂存区:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了如果暂存有多个,可以在恢复和删除命令的后面添加编号:stash@{0},例如git stash drop stash@{0}
20. rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
21. git tag查看所有标签
git tag
git tag
22. git show
创建带有说明的标签,用-a指定标签名,-m指定说明文字
git tag -a v0.1 -m "version 0.1 released" 1094adb
删除标签:git tag -d
23. 推送标签到远程: git push origin推送全部本地标签: git push origin --tags
24. 删除远程标签:
git push origin :refs/tags/前提是删除本地标签
配置
git 修改当前的project的用户名的命令为:git config user.name;
git 修改当前的project提交邮箱的命令为:git config user.email
修改全局配置命令分别为: git config --global user.namegit config --global user.email
免费Git服务
github:https://github.com/
Gitlab:https://about.gitlab.com/
Coding:https://coding.net/
Gitee:https://gitee.com/
搭建git服务:https://gogs.io/
问题列表
1) 修改错误提交,或者提交错分支:
git reset --soft
注:--soft回退后保留当前工作修改,可重新提交,--hard放弃修改
git push origin
此时切换到想要提交的分支,git checkout
注:
git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息,若要提交需再次add
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
2) 由于错误用户信息导致无法push由于log里已经包含了提交用户信息如果服务器做了校验,所以这次提交是无法push了,只能回退此次提交,然后再重新提交
git reset
然后就可以通过git config user.name修改用户信息了,修改完后通过git add、git commit等进行提交
特殊的,如果只是修改最近一次,可以使用下面命令:
git commit --amend --author="userName