1、创建本地仓库的两种途径:
从远程仓库克隆一份:
git clone [remote git url]
创建一个目录:
mkdir git
, 然后用git init
去初始化这个目录,使之成为一个git仓库。
2、git config文件配置:
- 配置全局用户名:
git config --global user.name "xxxxxx"
- 配置全局E-mail:
git config --global user.email "[email protected]"
, 如果需要在项目中配置不同的用户名和邮件,则只需要在项目目录下执行上面的命令,不带--global
即可。 - 查看配置文件:
git config --list
3、将本地仓库和远程仓库关联(适用于git init创建的仓库):
- 添加远程仓库:
git remote add [host-name] [git-url]
, 一般host-name取origin
, 这也是git默认主机名。 - 拉取本地还没有的远程仓库的信息:
git fetch [host-name] [branch-name]
,从远程仓库下载制定分支的信息到本地,但不会与本地的仓库合并,需手动合并git merge [host-name] [branch-name]
,如:git fetch origin dev; git merge origin dev;
- 拉取远程信息,并尝试与本地合并(相当于fetch和merge的合体):
git pull [host-name] [branch-name]
, 有冲突需手动解决再手动合并。 - 查看远程仓库信息:
git remote -v
。
4、将本地信息推送到远程
git push [host] [branch]
,如果远程没有对应分支,则需要带上-u
参数创建相应分支。- 如果本地分支没有与远程分支关联,则需要:
git branch --set-upstream [remote-branch]
建立关联。 - 如果远程分支有其他人提交过,则必须先
git pull
,尝试与本地合并合并(有冲突解决冲突)后才可以push。
5、添加文件,修改,提交修改
- 添加文件到暂存区:
git add [file-name or directory-name]
,可以使用通配符。 - 所有做的修改都需要使用
git add
后在进行git commit
操作。 - 提交修改到本地仓库:
git commit -m '说明信息'
。 - 撤销修改/恢复删除文件:
git check --[file-name]
,注意两个’-‘。 - 查看git状态:
git status
。 - 查看commit日志:
git log
,单行显示:git log --pretty=oneline
。 - 查看上次的修改:
git diff file-name
。 - 从暂存区删除一个文件:
git rm file-name
。
6、创建、切换分支
- 创建并切换分支:
git checkout -b [branch-name]
,他相当于git branch [branch-name]; git checkout [branch-name];
。 - 切换分支:
git checkout [branch-name]
。 - 删除分支:
git branch -d <name>
,使用-D
强行删除。 - 查看分支合并情况:
git log --graph --pretty=oneline --abbrev-commit
7、版本回退
- 本地仓库回退:
git reset --hard HEAD^
,一个^
表示回退一个版本,两个^^
表示回退两个版本,一次类推,回退100个版本可以这样写HEAD~100
,也可以指定回退到具体某个版本git reset --hard 1094adb
。 - 重返未来:使用
git reflog
查看操作历史,找到要回去的版本号,使用1中命令即可回到未来。
8、保存工作现场
git stash
,保存工作现场后,working dir就是干净的,这时就可以创建别的分支,进行别的工作,比如紧急修复bug场景。PS:如果当前工作区不干净git不允许创建新的分支。- 恢复工作区:
git stash pop
,它相当于git stash apply; git stash drop;
,恢复并删除stash内容。
9、清理工作空间
git checkout .
,丢弃该目录下所有未提交的修改。git clean -df [path]
,丢弃当前目录/path目录下所有未track的文件或目录,当使用-n
时,仅仅提示会删除哪些文件,不会操作.gitignore里指定的文件,-x
可以忽略.gitignore定义。git reset --hard
,它一般和git clean -df
搭配使用,可以让目录回到最近一次commit的状态,又可以愉快开始新的工作了。
10、标签管理
- commit打标签:
$ git tag v0.9 [-m '说明文字'] f52c633
,可以省略commit号,默认打在最新commit上。 - 使用
git show tag-name
查看说明文字。 - 使用
git tag
查看所有标签。 - 使用
git tag -d v0.1
删除标签。 - 将标签推送到远程:
git push origin <tagname>
,使用git push origin --tags
推送全部tag。 - 使用
git push origin :refs/tags/<tagname>
可以删除一个远程标签,需要先删除本地对应标签。