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)

导出一个版本的一个目录或者一个文件到一个压缩包

 git archive -o ../sss.zip    001950  template/default   

 

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属性加以实现。

原文地址:https://www.cnblogs.com/xiaoli3007/p/4091795.html