首页 > 代码库 > git 常用命令
git 常用命令
git clone git@192.168.1.155:web.git 克隆创建好的 git
git log 查看日志
git add . 增加文件
git status 查看状态
git add -u 修改文件
git commit -m ‘第一次提交‘
git revert HEAD 还原之前的提交
git branch phoenix 创建分支 phoenix
git checkout phoenix 切换分支
git checkout -b phoenix 合起来这么写
git checkout master 切换master分支git merge phoenix 合并分支
git remote add origin https://github.com/xxxx/xxxx
git push -u origin master
以上两条为推送到远程 github
git push --force
强制推送
git remote rm origin
git remote add origin https://github.com/xxxx/xxxx
.git 更换远程仓库
git 牵出版本库 两个版本差异的 部分 defd8065e841dd465d4de261f985717b10c11cb0 上一个 72dccfa70d8b2c5a31420174a104cbfedbd82840 下一个
git archive -o ../upload.zip 72dccfa70d8b2c5a31420174a104cbfedbd82840 $(git diff --name-only defd8065e841dd465d4de261f985717b10c11cb0 72dccfa70d8b2c5a31420174a104cbfedbd82840)
1) 远程仓库相关命令
检出仓库:$ git clone git://github.com/jquery/jquery.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]
2)分支(branch)操作相关命令
查看本地分支:$ git branch
查看远程分支:$ git branch -r
创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
创建远程分支(本地分支push到远程):$ git push origin [name]
删除远程分支:$ git push origin :heads/[name]
3)版本(tag)操作相关命令
查看版本:$ git tag
创建版本:$ git tag [name]
删除版本:$ git tag -d [name]
查看远程版本:$ git tag -r
创建远程版本(本地版本push到远程):$ git push origin [name]
删除远程版本:$ git push origin :refs/tags/[name]
4) 子模块(submodule)相关操作命令
添加子模块:$ git submodule add [url] [path]
初始化子模块:$ git submodule init ----只在首次检出仓库时运行一次就行
更新子模块:$ git submodule update ----每次更新或切换分支后都需要运行一下
删除子模块:$ git rm --cached [path]
5)忽略一些文件、文件夹不提交
在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如
target
bin
*.db
问题:.gitignore只适用于尚未添加到git库的文件。如果已经添加了,则需用git rm移除后再重新commit
删除文件
直接在工作区删除,对暂存区和版本库没有任何影响。本地删除如果要反映在暂存区中应该用git rm命令,对不想删除的文件执行git checkout -- <file>,可以让文件在工作区重现。用git rm命令执行删除后,删除动作加入了暂存区,这时执行提交动作就从真正意义上执行了文件删除,不过文件只是在版本库的最新提交中被删除了,在历史提交中尚在。
$ git add -u 将本地有改动(包括修改和删除)的文件标记到暂存区。
恢复删除的文件
$ git cat-file -p HEAD^:test.txt > test.txt 从前一提交中恢复test.txt文件
$ git show HEAD^:test.txt > test.txt 效果相同
$ git checkout HEAD^ -- test.txt 也可以
$ git add -A 将工作区的所有改动及新增文件添加到暂存区
然后执行commit操作,则文件被恢复
移动文件(改名操作)
改名操作相当于对旧文件执行删除,对新文件执行添加,git mv可以由git rm和git add两条命令取代
$ git mv oldname newname 完成改名操作
查看版本号
$ git describe 查看当前版本号
git log命令的--decorate参数可以在提交ID的旁边显示该提交关联的引用(里程碑或分支)
选择性添加文件
$ git add -i可以进入一个交互式界面操作
文件忽略功能
若把编译的目标文件及其他临时文件加入版本库中,浪费存储空间不说,甚至还会造成冲突。
可以创建一个.gitignore文件,其作用范围是所处目录及其子目录,编辑好要忽略的文件,然后添加到版本库中。如果不希望添加到库里,也不希望.gitignore文件带来干扰,可以在忽略文件中忽略自己。
被忽略以后,只有使用git status命令的--ignore参数,才会在状态显示中看到被忽略的文件。添加时git add -A和git add .都失效,只有在添加操作的命令行中明确写入文件名并提供-f参数才能真正添加。忽略只对未跟踪文件有效,对于已加入版本库的文件无效。
文件.gitignore设置的文件忽略是共享式的。之所以被称为“共享式”,是因为.gitignore被添加到版本库后成为了版本库的一部分,当版本库共享给他人(克隆),或者把版本库推送(PUSH)到集中式的服务器或他人的版本库时,这个忽略文件就会在他人的工作区中同样生效。相对应的是独享式,有两种方式:
第一种是针对具体版本库的,即在版本库.git目录下的一个文件.git/info/exclude来设置文件忽略;
另一种是全局的,即通过Git的配置变量core.excludesfile指定的一个忽略文件,其设置的忽略对所有本地版本库均有效。
如果文件忽略对于所有使用此版本库工作的人都有益,就通过在版本库相应目录下建一个.gitignore文件建立忽略;否则,如果是需要忽略工作区中创建的一个试验目录或试验性的文件,则使用本地忽略。
忽略语法:
忽略文件中的空行或以#开始的行会被忽略
可以使用通配符,参见Linux手册:glob(7)
如果名称的最前面是一个路径分割符(/),表明要忽略的文件在此目录下,而非子目录的文件
如果名称的最后面是一个路径分割符(/),表明要忽略的是整个目录,同名文件不忽略,否则同名的文件和目录都忽略
通过在名称的最前面添加一个感叹号(!),代表不忽略
文件归档
git archive命令,可以对任意提交对应的目录树建立归档。
$ git archive -o latest.zip HEAD 基于最新提交建立归档文件latest.zip
$ git archive -o partial.tar HEAD src doc 只把目录src和doc建立到归档partial.tar中
$ git archive --format=tar --prefix=1.0/ v1.0 | gzip > foo-1.0.tar.gz 基于里程碑v1.0建立归档,并且为归档中的文件添加目录前缀1.0
在建立归档时,如果使用树对象ID进行归档,则使用当前时间作为归档中文件的修改时间,而如果使用提交ID或里程碑等,则使用提交建立的时间作为归档中文件的修改时间。
如果使用tar格式建立归档,并且使用提交ID或里程碑ID,还会把提交ID记录在归档文件的文件头中。记录在文件头中的提交ID可以通过git tar-commit-id命令获取。
如果希望在建立归档时忽略某些文件或目录,可以通过为相应文件或目录建立export-ignore属性加以实现。
git 常用命令