一、代码提交
- 将新文件添加到临时存储区
- git add hello_world.c #hello_world.C加入临存区
- 在临存区添加所有变更文件
- git add. #hello_world.C加入临存区
- 检查当前状态
- git status
- 将临时存储区的文件提交给当地git仓库
- git commit -m "add:添加新文件..."
- 将本地git代码提交给git服务器
- git push #提交到git服务器仓库
- 退回某一提交的版本
- git reflog #获取提交的版本号
- git reset --hard xxxxx
- 查看当地分支机构
- git branch #列出当地已存在的分支,目前的分支将用*标记
- 查看远程分支
- git branch -r #查看远程版本库的分支列表
- 检查所有分支
- git branch -a #查看所有分支列表(包括本地和远程,remotes/开头表示远程分支)
- 查看最后一次提交的分支
- git branch -v #检查一个分支的最后一次提交
- 检查合并的分支
- git branch --merged #检查哪些分支已经合并到当前的分支
- 检查未合并的分支
- git branch --no-merged #检查所有未合并到工作的分支机构
- 创建新的分支
- git branch 新分支名称
- 切换分支
- git checkout 新分支名称
- 在创建分支的同时,切换到分支
- git checkout -b 新分支名称
- 指定远程分支和本地分支
- git pull origin 远程分支名称:本地分支名称
- 不屑当地分支名称的,默认与远程分支同名
- git pull origin 远程分支名称:
git push origin 分支名称
六、删除分支- 删除当地分支(不能删除当前分支,如果要删除,必须切换到其他分支)
- git branch -d 分支名称
- 注:如删除时报错误:error: The branch “分支名” is not fully merged. (意思 是:分支未完全合并)。解决方案是使用。 -D 强制删除代码如下:
- git branch -D 分支名称
- 删除远程分支
- git push origin :分支名称
- 注:分支名称前有冒号,分支名称前的冒号代表删除
- 加入我们目前的分支tempbranch,刚刚开发出一个功能,执行以下命令提交到当前的分支:
- git add .
- git commit -m "add:完成临时测试函数功能,提交tempbranch分支
- git push -u origin tempbranch
- 切换到master分支
- git checkout master
- 若多人开发状态,则需要将远程master分支上的代码pull下降
- git pull origin master
- 然后是tempbranch 分支代码合并到master上
- git merge tempbranch
- 如果git 当merge发生冲突时,可以执行以下命令取消merge:
- git merge --abort:
- 然后检查状态
- git status
- 最后,push到远程仓库
- git push origin master
- 什么是分支?
- Git 处理分支的方法可以说是不可思议的轻量级。创建新分支的操作几乎可以在瞬间完成,不同分支之间的切换操作也同样方便。 与许多其他版本的控制系统不同,Git 鼓励在工作过程中频繁使用分支和合并,即使在一天内进行多次。 理解和精通这一特征,你就会意识到 Git 它是如此强大和独特,并真正改变了你的发展方式。
- Git保存的不是文件的变化或差异,而是一系列不同时刻的快照 。在提交操作时,Git 一个提交对象将被保存(commit object)。 提交对象将包括指向临时存储内容快照的指针、作者的姓名和电子邮件地址、提交时输入的信息和指向其父亲对象的指针。 第一次提交产生的提交对象无父对象,普通提交操作产生的提交对象有父对象, 多个分支合并产生的提交对象有多个父对象。
- 分支在实际开发中有什么用?假设你要开发一个新功能,但需要两周时间才能完成。如果你在第一周写了50%的代码,如果你立即提交,不完整的代码库会导致其他人无法工作,因为代码还没有完成。如果所有代码都完成并再次提交,则存在巨大的日常进度损失风险。现在有了分支,就不用怕了。你创建了自己的分支,别人看不见,继续在原来的分支上正常工作,你在自己的分支上工作,想提交,直到开发完成,再次合并在原来的分支上,既安全又不影响他人的工作。
- 什么是衍生?
- 分支支流是指分支支流,gitblit上面的衍生实际上是git的分支,主支是master
GitBlit使用教程
9.git删除暂存区或版本库中的文件- 基础
- 我们知道Git有三个区域(工作区、临时存储区、版本库)和几个状态(untracked、unstaged、uncommited),下面简要介绍一下Git的一般工作流程.
- 打开你的项目文件夹,除了隐藏的.Git文件夹,其他项目文件位于工作区,工作区的文件需要添加到Git的临时存储区(git add),然后提交Git版本库(git commit)。
- 第一个新建的文件是untracked状态(未跟踪),此时需要gittracked 当addd到达临时存储区时,Git将在临时存储区生成该文件的索引。此时,文件处于uncommited状态,需要Git commit生成版本库。添加到版本库后,修改文件,文件状态将变为unstaged状态。
- 简单了解Git的工作流程,然后就可以看看如何删除添加到暂存区或版本库中的错误文件了!
- 将删除错误添加到暂存区的文件中
- 有时候你在工作区新建了文件Testfile,并且已经添加到了临时存储区,git会告诉你,现有的文件还没有提交到版本库
- 只删除暂存区内的文件
- 此时,如果您想取消在临时存储区域添加的错误文件,您可以输入以下命令
git rm --cache 文件名
- 上述命令仅删除临时存储区的文件,不会影响工作区的文件,如上图所示,TestFile.txt仍然存在,此时输入以下命令,git将通知testfile有一个未跟踪的文件.txt
git status
- 删除暂存区和工作区的文件
git rm -f 文件名
- 工作区的文件也被删除了
- 删除错误提交的commit
- 有时,git不仅被添加到临时存储区,而且commit也被添加到版本库中。此时,git不能使用 rm需要使用gitt reset命令。
错误提交到版本库。此时,无论是工作区、临时存储区还是版本库,三者的内容都是相同的。因此,在这种情况下,工作区和临时存储区的文件只被删除,错误添加的文件将在下一个版本库中重新生成。此时,为了解决问题,我们必须取消版本库的修改!git reset有三个选项,--hard、--mixed、--soft。
///仅取消已提交的版本库,暂存区和工作区git不会修改 reset --soft 版本库ID//只是取消已提交的版本库和暂存区,工作区gitt不会修改 reset --mixed 将工作区、暂存区和版本库记录完全恢复到指定的版本库git reset --hard 版本库ID,我们应该使用哪个选项?
(1)如果您在提交后修改工作区域的代码并希望保留这些修改,您可以使用git reset --mixed 版本库ID,请注意,这个版本库ID不应该是您刚刚提交的版本库ID,而应该是您刚刚提交的最后一个版本库。如下图所示:(2)如果不想保留这些修改,可以直接使用彻底的恢复命令,git reset --hard 版本库ID。(3)为什么不使用soft,因为它只是恢复了版本库,你提交的文件索引仍然存在于临时存储区域,你需要进一步使用添加到临时存储区域的最后一个删除错误的文件。详见上述内容。