HEAD的含义
HEAD所指向当前版本
HEAD^ 上1个版本
HEAD^^ 上2个版本
HEAD~1 上1个版本
HEAD~2 上2个版本
git查看提交记录
-
使用git log查看历史版本记录:
$git log --oneline
-
查看某文件的历史提交记录
$git log filename
-
使用git reflog查看历史版本记录:
$git reflog
-
提交到本地版本库:
$git commit -a -m '第n次提交,新增内容:'
git打标签
-
查看本地所有标签:
$git tag 或者 git tag –l
-
查看远程所有标签:
$git ls-remote --tags origin
-
基于当前所在commit-id创建标签:
$git tag –a <tag_name>
$git tag -a <tag_name> -m "标签"
-
以某一个特定的提交为tag
$git tag –a <tag_name> <commitid>
-
把本地某一个标签推送到远程:
$git push origin <tag_name>
-
把本地所有标签推送到远程:
$git push origin –tags
-
查看本地某个标签的详细信息:
$git show <tag_name>
-
切换标签:
$git checkout <tag_name>
-
删除本地标签
$git tag -d <tag_name>
-
删除远程标签
$git push origin :refs/tags/<tag_name>
-
例子:把<tag1_name>标签重命名为<tag2_name>标签
$git tag <tag2_name> <tag1_name>
$git tag -d <tag1_name>
$git push origin :<tag1_name>
$git push --tags
git对比差异
-
比对工作区与暂存区中文件的差异:
$git diff readme.txt
-
比对暂存区与本地版本库中文件的差异:
$git diff --cached readme.txt
-
比对工作区与本地版本库中文件的差异:
$git diff HEAD readme.txt
-
查看两个文件之间的差异:
$git diff <file1> <file2>
-
这个对比是在本次修改和某次提交之间进行的:
$git diff <commit id> <file>
-
查看两个分支间的区别:
$git diff branch1 branch2
-
查看两次提交之间的有差异的文件:
$git diff <commit 1> <commit 2> --stat
git查看文件列表
-
查看暂存区中的文件列表:
$git ls-files
-
查看本地版本库中的文件列表:
$git ls-files --with-tree=HEAD
git show
- 查看某一次commit对应的文件修改情况
$git show comitid
- 查看某个文件的某个版本的具体内容
$git show commitid:filename
- 查看某个某个文件的某次版本提交记录
$git show commitid filename
git删除文件
git rm --cached filename
:仅删除暂存区中的指定文件。git rm filename
:删除工作区和暂存区的文件。- 通过
git commit
命令进行提交,可以将本地库中的文件文件也删除。
git checkout
-
当执行
git checkout .
或者git checkout -- <file>
命令时,会用暂存区全部或指定的文件替换工作区的文件,会清除工作区中未添加到暂存区中的改动,即撤销本地工作目录的修改。【缓存区的文件还存在,以缓存区为标准,使工作区和它一致】
如果文件已添加到暂存区,可使用git reset HEAD <file>
命令将缓存区同步到指定提交。 -
当执行
git checkout HEAD .
或者git checkout HEAD <file>
命令时,会用 HEAD 指向的
master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。 【但是不会清除新增的文件。】 -
git checkout 支持检出指定目录、文件,通过sparse-checkout文件定义要检出目录。
git merge
将new_branch分支的内容合并到master分支:
-
Fetch and check out the branch for this merge request
git fetch origin
git checkout -b new_branch origin/new_branch
-
Merge the branch and fix any conflicts that come up
git checkout master
git merge --no-ff new_branch
-
Push the result of the merge to GitLab
git push origin master
如果想从其他分支合并某次的commit,可以使用git cherry-pick
用法:git cherry-pick <commit id>
git基础配置
-
在首次commit时,都会提示要配置username、useremail:
$git config --global user.name “name”
$git config --global user.email “email”
-
配置命令别名:
如用co表示checkout
$git config --global alias.co checkout
-
查看已有的配置信息:
$git config --list
.gitignore文件
对于不想纳入git管理的文件,可以在仓库根目录下创建一个名为 .gitignore 的文件,列出要忽略的文件模式。下面看一个 .gitignore 文件的例子:
# 此为注释 – 将被 Git 忽略
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目录下所有扩展名为 txt 的文件
doc/**/*.txt
#跟踪某类文件
!*.c
#跟踪某个文件夹
!/plutommi/mmi
常见问题汇总
-
提交空目录
Git仅仅跟踪文件的变动,不跟踪目录
在要上传的空目录下创建.gitkeep文件 -
设置忽略文件权限变更
在git仓库中命令行下执行git config core.fileMode false
-
本地删除或修改文件后如何获取远程的该文件
$git fetch
$git checkout origin/remotebranch filename
-
如何放弃本地修改,用远程库最新内容强制覆盖本地代码
$git fetch
$git reset --hard origin/master