Git日常使用总结
一、 git,gitee,GitHub简介
- git是一个分布式版本控制系统,是一个文件版本管理软件,需要安装到本地使用。
- gitee(码云)和GitHub均为代码托管平台,不需要下载安装,gitee服务器在国内,而GitHub服务器在国外,且gitee使用功能会更加友好。
- gitee和GitHub的使用都需要借助git,通过git的远程仓库操作以及本地文件管理,实现对文件版本的追踪管理及团队协作。
二、 git基本命令
1. 远程管理
- 从远程仓库复制代码到本地
git clone xxx
xxx代表gitee(或GitHub)上代码复制链接,如本次fork到我gitee的作业所在远程仓库链接为【git@gitee.com:Chenwzh/course_note_mad.git】,所以,将该仓库代码复制到本地的命令为
git clone git@gitee.com:Chenwzh/course_note_mad.git
- 将本地代码推送到远程仓库
git remote add origin git@gitee.com:Chenwzh/course_note_mad.git
该命令是将本地与远程仓库关联,origin
为所关联的远程仓库代名,你可以修改成你喜欢的叫法。注意,要想与远程仓库进行关联,该gitee(或GitHub)账户必须添加了你本地git的公钥,这样确保了不是每个人都可以和远程仓库进行关联,除非已经授权,即添加了你本地git公钥。git push origin master
该命令解释为将本地master分支(也可推送其他对应分支)推送到origin仓库,即上面所关联的远程仓库,如果该远程仓库为空,需要加上-u,即git push -u origin master
- Pull Request请求
当你从其他人的远程仓库fork到你自己仓库,再clone到本地,当你完成工作的时候,你可能无法直接将你的新代码推送到其他人仓库里,因为他远程仓库账号不一定有你公钥。所以,你可以先推送新代码到自己的仓库里,再Pull Request给他,如果他愿意接受你的代码就可以。
2. 本地管理
- 工作区、版本库(即.git文件夹):
工作区就是我们文件存放位置,版本库为.git文件夹。我们在工作区修改我们的文件,版本库包括缓存区和一条有分支的提交记录链。 - 基本操作
git init
将当前目录变成本地仓库git add main.cpp
将修改后的文件main.cpp添加到缓冲区,可一次添加多个文件git commit -m "message"
将缓存区的所有文件提交到所在分支,-m是添加注释,注释内容为message。每次commit最好添加注释,因为一旦提交越多,没有注释很容易忘记某些提交修改了什么地方。git status
查看当前工作区和缓存区情况,看是否有未git add
或git commit
的文件。git diff main.cpp
查看main.cp文件在工作区是否有修改痕迹以及修改内容。git diff HEAD -- main.cpp
查看main.cpp文件在工作区和版本库(缓存区)的区别,即add到缓存区还未commit到链上时,又在工作区进行修改,此时工作区和缓存区不一致。git checkout -- main.cpp
取消工作区的修改,包括上面两种情况。注意–,没有这个是另一个命令。git log
查看提交历史,且显示信息非常完整,若加上参数--pretty=oneline
则只显示commit id,结果会更加简洁,若加上参数--graph
可显示分支合并之后的图。git reflog
查看所有命令记录,可以看到已删除的commit id和未来版本,而git log
不具备此种功能。git reset --hard commit_id
通过上面两条命令获得的版本号,回某个版本commit_id。git rm main.cpp
删除文件,之后还需add和commit命令提交到版库库。
- 分支管理
git branch dev
创建一个名为dev的分支。git checkout dev
。
跳转到名为dev的分支。git checkout -b dev
前两条命令的结合,创建并跳转到dev分支。git branch
查看当前分支git branch -d dev
删除已合并的dev分支,而参数-D
为删除为合并的分支git merge dev
将dev分支合并到当前分支,若加上参数--no-ff
则分支信息仍然保存。git stash
将当前工作区暂时保存,在当前分支任务未完成时需跳转其他分支的时候使用,使用此命令就可以安全跳转其他分支,可多次使用。git stash list
查看保存的工作区列表git stash apply stash@{x}
恢复某一工作区,stash@{x}
为某一保存的工作区,x为数字。若不添加该参数,默认恢复最近一次。