Git 基本概念
- 仓库分为本地库和远程库。一般会存在一个远程库作为协作的公共仓库,进行全局的版本管理。如你在 github 中注册的仓库( repository )。
- git 描述了工作区,暂存区,版本库的概念。你编写代码所在的位置称作工作区;使用 git add 指令后,暂存区便保留了你的修改记录;使用 git commit 后,生成了一个新的文件库版本(新版本),版本线往前推进一步。
- HEAD 指针,指向一个指向当前分支(current branch)的指针(branch name),即你正在操作的版本。可以通过操作 HEAD 指针快速的实现许多操作。HEAD --> master(branch) --> commitVersion
基础指令
添加修改到暂存区
- git add [filename], 添加你的修改记录到暂存区。
- git add , 添加除删除文件以外的修改到暂存区,包括内容修改,新建文件。
- git add -u 添加除新建文件以外的修改到暂存区,包括内容修改,删除文件。
- git add --all 添加所有更改到暂存区
- Git commit -m 'msg'
- 提交所有暂存区的更改,生成一个新的版本,版本线向前推进一步。
- Git log
- 查看历史commit记录
- Git status
- 查看当前的操作状态。
- Git reflog.
- 查看本地会影响HEAD指针的命令操作记录
放弃文件修改
- git checkout [filename]
- 回退到上次工作区保存前状态。
- git reset HEAD
- 版本回退,回归历史版本。操作 HEAD 指针指向过去的某个版本,以实现历史回退的操作。该操作在下次清除垃圾时,会抹除丢弃的提交。
- git revert
- 同 reset 操作一样,其目的是为了版本回溯,区别在于,revert 进行一个正向的 commit 操作,其提交内容是想要回退的旧版本内容。该操作不会影响你的操作历史。
- Git checkout [branchname]
- 切换分支,
- git checkout -b [branchname] = git branch [branchname] + git checkout [branchname]
- Git merge [branchname] 合并分支
- git merge --no-ff -m 'merge yaozhang-b' yaozhang-b
- git merge 会默认采用快速合并模式,即版本线向前推进,移动 HEAD 指针到合并点,使合并分支和被合并的分支同步,合并不会生成commit。 使用 --no-ff 可以采用普通合并,生成一次 merge 记录,做一次 commit ,将合并痕迹生成在历史记录中。
- Git diff
- 查看文件具体的修改内容。
- git stash
- 当前分支修改为提交时,是无法进行分支切换的。但我们并不想提交修改,因为工作进行到一半还未完成。使用 git stash 将工作区修改先存储起来, 然后我们可以如愿的切换到别的分支解决问题。
- git stash list 查看当前 stash的列表。
- git stash pop 恢复最近一次 stash 的修改内容。并删除 stash 列表中的记录
- git stash apply [stashid] 恢复 stash 列表中的修改内容。
- git stash deop [stashid] 删除 stash 列表中的记录。
- git pull
- 从远程分支拉取内容,进行了 git fetch 和 git merge 的操作。
- git pull --rebase。从远程拉取版本,与本地分支进行合并。
- 在合并过程中如想完全采取一方的更改,可使用如下指令 git checkout --ours(theirs) [filename],远程库为ours,本地为theirs。 git将本地更改先patch到。/git/rebase目录,以获取到的远程库版本为base 进行合并。
- git push
- 将本地内容,推送到远程库。
小指南
- merge时出现 ./MERGE_MSG.swp文件处理。
- blog.csdn.net/qq_32452623…
- git 对文件名的大小写修改不敏感, 当修改文件后, git status 可能发现工作区干干净净, 然而我们的的确确修改了文件名的大小写。
- 使用 git config core.ignorecase false 可以设置 git 对文件名大小写敏感。再查看 git status 便可以看到所做的修改了。
- git add , 添加除删除文件以外的修改到暂存区,包括内容修改,新建文件。
- git add -u 添加除新建文件以外的修改到暂存区,包括内容修改,删除文件。
- git add --all 添加所有更改到暂存区
- 提交所有暂存区的更改,生成一个新的版本,版本线向前推进一步。
- 查看历史commit记录
- 查看当前的操作状态。
- 查看本地会影响HEAD指针的命令操作记录
- 回退到上次工作区保存前状态。
- 版本回退,回归历史版本。操作 HEAD 指针指向过去的某个版本,以实现历史回退的操作。该操作在下次清除垃圾时,会抹除丢弃的提交。
- 同 reset 操作一样,其目的是为了版本回溯,区别在于,revert 进行一个正向的 commit 操作,其提交内容是想要回退的旧版本内容。该操作不会影响你的操作历史。
- 切换分支,
- git checkout -b [branchname] = git branch [branchname] + git checkout [branchname]
- git merge 会默认采用快速合并模式,即版本线向前推进,移动 HEAD 指针到合并点,使合并分支和被合并的分支同步,合并不会生成commit。 使用 --no-ff 可以采用普通合并,生成一次 merge 记录,做一次 commit ,将合并痕迹生成在历史记录中。
- 查看文件具体的修改内容。
- 当前分支修改为提交时,是无法进行分支切换的。但我们并不想提交修改,因为工作进行到一半还未完成。使用 git stash 将工作区修改先存储起来, 然后我们可以如愿的切换到别的分支解决问题。
- git stash list 查看当前 stash的列表。
- git stash pop 恢复最近一次 stash 的修改内容。并删除 stash 列表中的记录
- git stash apply [stashid] 恢复 stash 列表中的修改内容。
- git stash deop [stashid] 删除 stash 列表中的记录。
- 从远程分支拉取内容,进行了 git fetch 和 git merge 的操作。
- git pull --rebase。从远程拉取版本,与本地分支进行合并。
- 在合并过程中如想完全采取一方的更改,可使用如下指令 git checkout --ours(theirs) [filename],远程库为ours,本地为theirs。 git将本地更改先patch到。/git/rebase目录,以获取到的远程库版本为base 进行合并。
- 将本地内容,推送到远程库。
- blog.csdn.net/qq_32452623…
- 使用 git config core.ignorecase false 可以设置 git 对文件名大小写敏感。再查看 git status 便可以看到所做的修改了。