# learngit **Repository Path**: ruoransu/learngit ## Basic Information - **Project Name**: learngit - **Description**: 学习git - **Primary Language**: Shell - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-01-13 - **Last Updated**: 2023-11-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 学习git ## windows安装git 在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。 安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功! ### 安装完成,配置账户 ``` git config --global user.name "your Name" git config --global user.email "email@.com" ``` ### 创建一个版本库 ``` mkdir learngit cd learngit pwd --pwd意为显示当前目录 ``` ### 初始化仓库 ``` git init ``` ### 编写一个readme.md并提交 ``` git add readme.md --添加到暂存区 git commit -m 'add readme.md' --提交到工作区 总之,就是让这个文件回到最近一次git commit或git add时的状态。) ``` ### 版本回退 ``` git status --查看当前工作区状态,命令可以让我们时刻掌握仓库当前的状态 git diff --git diff顾名思义就是查看difference,可以查看修改内容 git checkout -- readme.md --可以丢弃工作区的修改,回到最原始状态,不管是否添加到暂存区。 git reset HEAD readme.txt --可以把暂存区的修改撤销掉(unstage),重新放回工作区 **git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。** git rm test.txt --删除文件 ``` ### 添加到远程仓库并推送 ``` git remote add origin https://gitee.com/ruoransu/learngit.git git push -u origin master --git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数。 ``` ### 删除远程库 ``` git remote -v --查看远程库信息 git remote rm origin --根据名字删除远程库关联信息,此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。 ``` ### 克隆远程库 ``` git clone https://gitee.com/ruoransu/learngit.git ``` ### 分支管理 ``` git branch --查看所有分支 git branch branchname 创建分支 git checkout branchname 切换分支 git checkout -b branchname 创建分支并切换到该分支上 git merge dev 假设当前分支是master,该命令就是把dev分支上的内容合并到master上 git branch -d dev 删除分支,-D代表强制删除分支 git switch -c dev 创建切换到新分支,与git chekcout -b dev 同样适用 git switch master 切换到master分支上,与git checkout master同样适用 git merge --no-ff -m "merge with no-ff" dev 请注意--no-ff参数,表示禁用Fast forward ``` #### 分支合并图 ``` git log --graph ``` #### 临时现场储藏 ``` git stash 现场临时储藏 git status 查看状态 git stash list 查看储藏的列表 git stash apply 恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除; git stash pop 恢复的同时把stash内容也删了 ``` ### git创建标签 #### 切换到需要打标签的分支上 ``` git branch [branchname] git branch dev ``` #### 创建标签 ``` git tag [tagname] 示例: git tag v1.0 ``` #### 使用git tag查看所有标签 ``` git tag ``` #### 对于特定commit id 打标签 ``` 先找到历史提交的commit id git log --pretty=oneline --abbrev-commit git tag v0.9 f52c633 ``` #### 查看标签信息 ``` git show 示例:git show v0.9 ``` #### 创建带有说明的标签,用-a指定标签名,-m指定说明文 ``` git tag -a v0.9 -m "version 0.1 released" 1094adb ``` #### 删除标签 ``` git tag -d v0.1 ``` #### 删除远程标签 ``` git push origin :refs/tags/v0.9 ``` #### 传送标签到远程仓库服务器上 ``` git push origin [tagname] 示例: git push origin v1.0 ``` #### 传送所有标签标签到远程仓库服务器上 ``` git push origin [branchname] --tags 示例: git push origin dev --tags ``` ### git 常见问题处理 `git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/` `在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;` `建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;` `git cherry-pick 4c805e2` 复制一个特定的提交到当前分支