git教程
代码托管平台:git.acwing.com
git作用
将项目代码的历史版本用树的结构维护出来,便于开发者查找和回稳历史代码,还支持代码合并
将代码上传到云仓库托管,便于多人开发
git基本概念
- 工作区:仓库的目录。工作区是独立于各个分支的。
- 暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的,意思就是所有分支共用一个暂存区
- 版本库:存放所有已经提交到本地仓库的代码版本
- 版本结构:树结构,树中每个节点代表一个代码版本。
- 分支:一般多人开发不会直接在主分支开发,而是从各个节点开辟新分支,开发完后再进行合并
git常用命令
git config --global [user.name](http://user.name/) xxx
:设置全局用户名,信息记录在~/.gitconfig
文件中git config --global user.email [xxx@xxx.com](mailto:xxx@xxx.com)
:设置全局邮箱地址,信息记录在~/.gitconfig
文件中- 上述两个命令在家目录中执行
git init
:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中git add XX
:将XX文件(的修改)添加到暂存区git add .
:将所有待加入暂存区的文件加入暂存区git add
本质是将文件的修改状态加入到暂存区,让暂存区直到文件被创建、被修改还是被删除
git rm --cached XX
:将文件从仓库索引目录(其实应该是暂存区)中删掉git restore filename
:将已修改但未更新至暂存区的文件还原成暂存区版本(执行前提是暂存区有被维护的文件版本,如果执行过git rm --cached XX
就无法执行该命令)git restore --staged filename
:将未更新至版本库的暂存区文件还原成版本库中的HEAD指向的版本
git commit -m "给自己看的备注信息"
:将暂存区的内容提交到当前分支(不会删暂存区文件)- 所以如果只想提交部分文件,就只把那要提交的部分
git add
进暂存区 git commit -a
把未保存到 暂存区 的文件修改直接保存到版本库,命令中不能写备注信息,执行完命令后按提示再输入备注信息
- 所以如果只想提交部分文件,就只把那要提交的部分
git status
:查看仓库状态git diff XX
:查看XX文件相对于暂存区修改了哪些内容- 会显示哪些行是修改过的,但不会显示到哪些字符是修改过的
- 如果暂存区中没有XX或该文件与暂存区版本一致,则不输出内容
git log
:查看当前分支的所有版本git log --pretty=oneline
:把每次的版本信息用单行显示
git reflog
:查看HEAD指针的移动历史(包括被回滚的版本)git reset --hard HEAD^
或git reset --hard HEAD~
:将代码库回滚到上一个版本(会把工作区和暂存区的所有文件都回滚)git reset --hard HEAD^^
:往上回滚两次,以此类推git reset --hard HEAD~100
:往上回滚100个版本git reset --hard 版本号
:回滚到某一特定版本(版本号可以是git log
显示的完整版本号,也可以git reflog
的缩减版本号)
git checkout — XX
或git restore XX
:将XX文件尚未加入暂存区的修改全部撤销git remote add origin [git@git.acwing.com](mailto:git@git.acwing.com):xxx/XXX.git
:将本地仓库关联到远程仓库- 在云端便于代码开源共享,便于浏览代码
git push -u origin branch_name(第一次需要-u以后不需要)
:将当前分支推送到远程仓库git push origin branch_name
:将本地的某个分支推送到远程仓库
git clone [git@git.acwing.com](mailto:git@git.acwing.com):xxx/XXX.git
:将远程仓库XXX下载到当前目录下git checkout -b branch_name
:创建并切换到branch_name
这个分支git branch
:查看所有分支和当前所处分支- 带
*
的是当前所在的分支
- 带
git checkout branch_name
:切换到branch_name
这个分支git merge branch_name
:将分支branch_name
合并到当前分支上- 默认是快速合并,就是直接将HEAD指向当前节点
- 当同一文件被不同分支进行了不同的修改时,就会产生冲突。需要解决冲突才能合并
git branch -d branch_name
:删除本地仓库的branch_name
分支- 不能删除当前所在的分支
git branch branch_name
:创建新分支git push --set-upstream origin branch_name
:在云端创建branch_name
分支,与本地branch_name
分支对应,并将本地分支内容传到云端git push -d origin branch_name
:删除远程仓库的branch_name
分支git pull
:将远程仓库的当前分支与本地仓库的当前分支合并git pull origin branch_name
:将远程仓库的branch_name
分支与本地仓库的当前分支合并
git branch --set-upstream-to=origin/branch_name1 branch_name2
:将远程的branch_name1
分支与本地的branch_name2
分支对应git checkout -t origin/branch_name
: 将远程的branch_name
分支拉取到本地git stash
:将工作区和暂存区中尚未提交的修改存入栈中git stash apply
:将栈顶存储的修改恢复到当前分支,但不删除栈顶元素git stash drop
:删除栈顶存储的修改git stash pop
:将栈顶存储的修改恢复到当前分支,同时删除栈顶元素git stash list
:查看栈中所有元素
著作权信息
- 作者:yxc
- 链接:https://www.acwing.com/file_system/file/content/whole/index/content/2932078/
- 来源:AcWing
- 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。