1.创建工作区:
#进入相应的文件目录
git init
2.把文件放到(更新到)git仓库:
#同样要在对应得文件下
git add test.txt # 支持同时添加多个,文件名中间用空格分割。也可多次添加。
git commit -m "xxx" # 一次性提交所有添加的文件。需要在-m后添加文件的说明。
3.查看仓库的当前状态:
git status
4.查看仓库的修改:
git diff
5.查看历史的提交版本:
git log # 多行显示
git log --pretty=ontline # 一行显示
6.回退版本:
git reset --hard HEAD^ # 回退至上一版本,因为win中^是换行符,所以不用这个。
git reset --hard HEAD^^ # 回退至上上一版本,因为win中^是换行符,所以不用这个。
git reset --hard HEAD~100 # 回退至前100版本
git reset --hard 1094a # 回到id为1094a。。。。的版本,可以只写前几位。
7.查看历史命令:
git reflog
# 可以查看到已经删除的版本的ID,从而恢复
8.回退工作区的修改:
git checkout -- file
#一种是文件自修改后还没有被放到暂存区,现在,
撤销修改就回到和版本库一模一样的状态;
#一种是文件已经添加到暂存区后,又作了修改,现在,
撤销修改就回到添加到暂存区后的状态。
9.把暂存区的修改撤销:
git reset HEAD <file>
10.删除文件:
git rm
11.同步到GitHub上:
# 第一次同步
git remote add origin git@server-name:path/repo-name.git
git push -u origin master
# 往后推送
git push origin master
# 强行推送
git push -f origin master
12:分支
#查看分支:
git branch
#创建分支:
git branch <name>
#切换分支:
git checkout <name>
git switch <name>
#创建+切换分支:
git checkout -b <name>
git switch -c <name>
#合并某分支到当前分支:
git merge <name>
#删除分支:
git branch -d <name>
#分支合并图
git log --graph
#当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
#解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
13:修复bug
修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,
修复后,再git stash pop,回到工作现场;
在master分支上修复的bug,想要合并到当前dev分支
可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,
避免重复劳动。
14:新功能:
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。
15:多人协作开发:
1.首先,可以试图用git push origin <branch-name>推送自己的修改;
2.如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3.如果合并有冲突,则解决冲突,并在本地提交;
4.没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information,
则说明本地分支和远程分支的链接关系没有创建,
用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
16:标签:
git tag <tagname>
用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a <tagname> -m "blablabla..."
可以指定标签信息;
git tag
可以查看所有标签。
git push origin <tagname>
可以推送一个本地标签;
git push origin --tags
可以推送全部未推送过的本地标签;
git tag -d <tagname>
可以删除一个本地标签;
git push origin :refs/tags/<tagname>
可以删除一个远程标签。