git使用总结

git使用总结

 

 

init命令:

  • git init :初始化一个本地仓库
  • git init --bare :创建一个git裸库 祼库一般存在于服务器 用于让客户更新提交代码 不会存在于客户端 如:gogs服务里都是git裸库

clone命令

add命令

  • git add test.txt :把test.txt文件添加到暂存区当中
  • git add . :把当前目录下的文件全部添加到暂存区当中

commit命令

  • git commit -m "提交注释" :把暂存区所有的内容提交到本地库
  • git commit --amend -m "修改最后一次提交的注释信息" :修改最后一次提交的注释信息
  • git commit -am "add one line" :表示添加当前文件夹下所有的文件到暂存区 并提交到仓库

rm命令

  • git rm --cache test.txt :当test.txt添加到暂存区时,把文件从暂存区中还原来到工作区中
  • git rm test.txt :删除test.txt文件并添加到暂存区
  • git rm --cached [-r] test :如果想过滤已经提交的目录与文件则需要先用此命令删除文本或目录(-r是递归删除),才可以在过滤文件里生效

help命令

log命令

  • git log :查看提交的日志记录
  • git log -3 :查看最近提交的3条日志信息
  • git log --pretty=oneline:以一行显示一条日志的形式来显示日志
  • git log --pretty=format:"%h - %an, %ar : %s" :以提交编号 作者 时间 注释 的形式显示日志,可以定制日志的格式
  • git log --graph :以图型化的方式查看提交的历史
  • git log --graph --abbrev-commit :以简单图型化的方式查看提交的历史
  • git log --graph --pretty=oneline --abbrev-commit :以图型化更简洁的方式查看提交的历史
  • git log origin/master :查看远程分支master上的日志信息
  • git log remotes/origin/master :查看远程分支master上的日志信息
  • git log refs/remotes/origin/master :查看远程分支master上的日志信息

diff命令

  • git diff :比较的是暂存区与工作区文件之间的差别
  • git diff 1aa7t :比较工作区与特定提交版本之间的差别
  • git diff HEAD :比较工作区与最新提交之间的差别
  • git diff --cached 1aa7t :比较暂存区与特定提交版本之间的差别
  • git diff --cached :比较暂存区与最新提交版本之间的差别

blame命令

  • git blame test.txt :显示test.txt提交的内容信息

tag命令

  • git tag v1.0.1 :创建一个经量级标签
  • git tag -a v1.0.2 -m "release version" :创建一个带有附注的标签
  • git tag -d v1.0.2 :删除一个指定的标签
  • git tag :查看标签信息
  • git tag -l "v1.0" :查找标签
  • git tag -l "v*" :查找以v开头的标签

fetch命令

  • git fetch origin master:refs/remotes/origin/mymaster :让远程的master分支与本地的远程分支mymaster进行个对应

pull命令

  • git pull :拉取与当前分支与之对应的远程分支的代码关进行合并 并把本地没有远程有的标签也拉取合并下来 完整命令是git pull origin srcBranch:destBranch

push命令

  • git push :将当前分支代码推送到与之对就的远程分支上 完整的写法是git push origin srcBranch:destBranch
  • git push origin --delete lilin :删除远程分支名为lilin的分支
  • git push -u origin master :把本地的master分支跟origin远程分支作一个关连
  • git push --set-upstream origin develop :将当前本地的develop分支推送到远程 并在远程新创建一个develop分支并将它们两个关连起来 完整的写法是git push --set-upstream origin srcBranch:destBranch
  • git push origin :develop :将本地的空分支推送到develop分支 即删除分支
  • git push --set-upstream origin develop:develop2 :将本地分支develop与远程分支develop2作关连
  • git push origin HEAD:develop2 :将当前提交点的信息推送到远程develop2的分支上
  • git push origin develop:develop2 :将本地的develop分支推送到远程的develop2的分支上
  • git push origin v1.0 :将本地v1.0标签推送到远程仓库 等同于git push origin refs/tags/v1.0:refs/tags/v1.0
  • git push origin v1.0 v2.0 :将本地v1.0 v2.0两个标签推送到远程仓库 多个之间用空格分开
  • git push origin --tags :将本地尚未推送到远程的所有的标签推送到远程
  • git push origin :refs/tags/v6.0 :将一个空的标签推送到远程的v6.0标签上 即删除远程分支上的v6.0标签 等同于git push origin :refs/tags/v6.0
  • git push origin --delete tag v5.0 :删除远程分支上名为v5.0的标签

remote命令

  • git remote add origin https://github.com/gitlecture/gitlecture.git :添加一个远程仓库与本地仓库对应
  • git remote show :查看与之关连的远程仓库
  • git remote show origin :列出origin远程仓库的所有信息
  • git remote prune origin :删除本地存在远程已经删除的分支
  • git remote add subtree-origin https://github.com/gitlecture/gitlecture.git :添加一个subtree远程仓库
  • git remote remove origin :删除远程仓库origin

status命令

  • git status :查看版本库的信息

merge命令

  • git merge dev :把dev分支合并到当前分支 git默认是fast-forward模式
  • git merge --no-ff dev :禁用fast-forward合并方式,会触发一次新的提交

config命令

  • git config --global user.name "" :设置本地全局的用户名
  • git config --global user.email "" :设置本地全局的邮箱
  • git config --system user.name "" :设置系统上git的全局的用户名,所有用户都用这一个
  • git config --system user.email "" 设置系统上git的全局的邮箱,所有用户都用这一个
  • git config --local user.name "" :设置当前仓库的用户名
  • git config --local user.email "" :设置当前仓库的邮箱
  • git config --local --unset user.name :删除本地仓库user.name的配置信息
  • git config --local --unset user.email :删除本地仓库user.email的配置信息
  • git config --list :列出当前git的配置信息
  • git config user.name :显示当前有效的用户名信息
  • git config user.email :显示当前有效的邮箱信息

checkout命令

  • git checkout -- test.txt :丢弃test.txt在工作区作了修改,与上一次即暂存区的一致
  • git checkout new_branch_name :切换分支到new_branch_name new_branch_name是分支的名字
  • git checkout -b dev :创建一个dev分支并切换到dev分支上去
  • git checkout 9e7f3 :切换到指定的提交点
  • git checkout new_branch_name 9e7f3 :根据一个提交点创建一个分支
  • git checkout -b develop origin/develop :新建一个develop分支并将他推送到远程的同时在远程创建一个develop分支把两个分支关连起来
  • git checkout --track origin/test :本地新建一个test分支并与远程的test的分支作关连

reset命令

  • git reset HEAD test.txt :将之前添加到暂存区的内容从暂存区移除到工作区
  • git reset --hard^ :回退到上一个版本
  • git reset --hard^^ :回退到前一个版本
  • git reset --hard~1 :回退到上一个提交,指定几是前几个提交
  • git reset --hard 1aa7t :回退到指定的版本号

mv命令

  • git mv test.txt test2.txt :重命名一个文件并提交到暂存区

branch命令

  • git branch :列出当前版本的所有分支
  • git branch new_branch_name :创建一个新的分支 new_branch_name 是新的分支名字
  • git branch -d branch_name :删除分支,不允许删除当前的分支
  • git branch -D branch_name :当删除的分支没有被合并过时 -d 参数就删除不了 要用 -D 强行删除
  • git branch -m master master2 :master分支改为master2分支
  • git branch -a :列出当前的所有分支包括远程分支
  • git branch -av :列出当前的所有分支包括远程分支,并显示最后一次提交的信息

reflog命令

  • git reflog :查看git的操作日志

stash命令

  • git stash :保存正在进行的工作
  • git stash list :列出所有保存的状态
  • git stash save "hello basic" :在保存工作的时候加一个说明
  • git stash pop :将之前临时保存的状态恢复后再删除掉
  • git stash apply :将保存的状态恢复,但不删除
  • git stash drop stash@{0} :手动删除状态
  • git stash apply stash@{0} :指定恢复那个状态

show命令

  • git show v1.0 :查看标签为v1.0的标签信息

subtree命令

  • git subtree add --prefix=subtreeDir subtree-origin master --squash :添加远程subtree-orgin里的master分支到subtreeDir目录下 --squash表示把远程库的所有提交合并为一个提交
  • git subtree pull --prifix=subtreeDir subtree-origin master --squash :从远程仓库subtree-origin的master分支上拉取代码且合并到subtreeDir下
  • git subtree push -P subtreeDir subtree-origin master:将subtreeDir的修改推送到远程仓库subtree-origin的master分支上

submodule命令

  • git submodule add https://git.oschina.net/oschina/android-app.git mymodule :将远程的仓库代码拉取到mymodule文件夹下 会生成.gitmodules文件与mymodule文件夹 子模块要更新的话只需要进入相应的目录用一般的方式更新即可
  • git submodule foreach git pull :遍历所有的子模块来依次更新
  • git submodule init :当一个仓库有submodule时在clone下来后要初始化一下 然后再用git submodule update --recursive来更新子模块的代码
  • git submodule submodule update --recursive :当一个仓库有submodule时在clone下来后经过初始化后再这这个命令来更新拉取子模块的代码

cherry-pick命令

  • git cherry-pick da7a18 :把da7a18的提交应用到当前分支上 commitid可以是多个

rebase命令

  • git rebase origin :把origin分支rebase到当前分支上 rebase会把两个分支合并为一条直线 merge会把两个分支合并到一起 rebase会修改git的提交历史但是merge不会修改提交历史
  • git rebase --continue :当git rebase origin有冲突后 解决冲突后先使用git add添加然后再使用此命令让rebase继续执行
  • git rebase --abort :在rebase之前使用此命令可以中止rebase 让仓库回到rebase之前的状态

.gitignore文件使用

  • .gitignore支持正则表达式
  • *.a 忽略所有.a结尾的文件
  • !lib.a w但lib.a除外
  • /TODO 仅仅忽略项目根目录下的TODO文件,不包括subdir/TODO
  • build/ 忽略build/目录下的所有文件
  • doc/*.txt 会忽略doc/notes.txt但不包括doc/server/arch.txt
  • /**/test3.txt 忽略所有目录下的test3.txt文件

**HEAD标记:**是一个文件,HEAD文件是一个指向你当前所在分支的引用标识符,该文件内部并不包括SHA-1值,而是一个指向另外一个引用的指针。 当执行git commit命令时,git会创建一个commit对象,并且将这个commit对象的parent对象的指针设置为HEAD所指向的引用的SHA-1值

**rebase注意事项:**不要对master分支执行rebase操作,否则会引起很多问题;一般来说,执行rebase的分支都是自己的本地分支,没有推送到远程版本库

**git gc:**可以手动gc但一般都是git根据情况自己会执行gc不需要自己操作


检出指定目录与文件夹

  1. git config --local core.sparsecheckout true :启用此项
  2. cd .git/info
  3. echo 'dir1' >> sparse-checkout :把要检出的目录设置到此文件里
  4. echo 'README.md' >> sparse-checkout :把要检出的文件也设置到此文件里
  5. git remote add origin http://192.168.1.70:3000/dubing/Model-UI.git
  6. git pull origin master :这样只会检出相应的目录
备案号:豫ICP备14002392号-2