一、安装
1、官网下载,一直点击下一步完成安装(安装目录根据需要修改)
2、菜单栏里点击Git Bash进行设置
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
--global 参数表示机器上所有仓库都会使用这个配置,也可以对不同仓库设置不同用户和邮箱
二、创建本地仓库
1、创建一个空目录
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
2、使用git init 命令将目录变成Git可管理仓库
三、使用git
1、git add命令将文件添加到仓库
2、git commit -m" "把文件提交到仓库(-m后面输入的是本次提交的说明)
3、git status 告诉你文件被修改过
4、git diff 可以查看修改内容
5、git reset --hard commit_id 回到之前的版本(id输入前几位即可)
6、git log 可以查看提交历史,以便确定回退到哪个版本
7、git reflog 查看命令历史,可以确定回到未来的哪个版本
8、git status 查看工作区
9、 git diff HEAD -- file命令可以查看工作区和版本库里面最新版本的区别
10、git checkout -- file把文件在工作区的修改全部撤销(无论工作区是修改还是删除,都可以“一键还原”)
一种是自修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态;
一种是已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态。
11、git reast HEAD <file>可以把暂存区的修改撤销掉,重新放回工作区
12、 git rm 删除文件,并且git commit,
从版本库中删除该文件
四、分支管理
1、git switch -c 创建并切换到分支
2、git branch 查看当前分支
3、当提交修改完成后用 git switch 切换回master分支
4、git merge dev 合并dev 和master分支
5、git branch -d dew 删除dev分支
6、解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。用git log --graph
命令可以看到分支合并图。
7、git merge --no-f -m " "dev 强制禁用fast forward 模式
8、git log --graph --pretty=oneline --abbrev-commit 查看分支合并情况
9、修复bug时git stash 可以把当前工作现场储藏起来,修复完成时再用git stash pop(恢复的同时把stash内容也删除)回到工作现场,最后用git cherry-pick<commit>把bug提交的修改复制到当前分支。
10、开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,使用git branch -D <name>强行删除。
五、多人合作
1、首先,可以试图用git push origin <branch-name>
推送自己的修改;
2、如果推送失败,是因为远程分支比你的本地更新,需要先用git pull
试图合并;
3、如果合并有冲突,则解决冲突,并在本地提交;
4、没有冲突或者解决掉冲突后,再用git push origin <branch-name>
推送就能成功!
-
查看远程库信息,使用
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
,如果有冲突,要先处理冲突。 -
rebase操作可以把本地未push的分叉提交历史整理成直线;
-
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
六、标签
1、命令git tag <tagname>
用于新建一个标签,默认为HEAD
,也可以指定一个commit id;
2、命令git tag -a <tagname> -m "blablabla..."
可以指定标签信息;
3、命令git tag
可以查看所有标签。
4、命令git push origin <tagname>
可以推送一个本地标签;
5、命令git push origin --tags
可以推送全部未推送过的本地标签;
6、命令git tag -d <tagname>
可以删除一个本地标签;
7、命令git push origin :refs/tags/<tagname>
可以删除一个远程标签。