设为首页 收藏本站
查看: 974|回复: 0

[经验分享] git常用命令及技巧

[复制链接]

尚未签到

发表于 2018-9-17 13:45:58 | 显示全部楼层 |阅读模式
  强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容
  git push -f
  git fetch --prune  #这样就可在本地删除在远程不存在的branch
  man git-fetch
  --prune
  After fetching, remove any remote tracking branches which no longer exist on the remote.
  -t, --tags
  Most of the tags are fetched automatically as branch heads are downloaded, but tags that do not
  point at objects reachable from the branch heads that are being tracked will not be fetched by
  this mechanism. This flag lets all tags and their associated objects be downloaded.
  #另外,关于git branch的几个命令
  git branch     # 查询本地存在的branch
  git branch -r  # 查询远程的branch
  git branch -a  # 查询本地和远程branch
  git branch -d -r origin/todo  #删除远程的todo branch
  git tag -l | xargs git tag -d    #delete local tag(s)
  git fetch vgt --prune   #fetch from remote repo
  #查询远程heads和tags的命令如下:
  git ls-remote --heads origin
  git ls-remote --tags origin
  git ls-remote origin
  git commit:
  git commit --amend 撤销上一次提交
  git push:
  git push [remote-name] [master] 推送数据到远程仓库
  git push origin :[branch-name] 删除远程分支.
  git diff:
  git diff --name-only 73a79c 2d49d2 查看两个版本中间改动过的文件列表
  git diff : workspace and index file.
  git diff HEAD: workspace and commint
  git diff --cached: index file and commit
  git fetch:
  git fetch [remote-name] 取回远程仓库的所有提交信息
  git clone:
  git clone [url] 获取远程仓库的 master 分支
  git log:
  git log -1 HEAD 显示最后一次提交信息
  git log -p 显示每次提交的内容差异, 可加参数 -num 显示最近num次提交差异
  git log --stat 仅显示增改行数统计.
  git reflog 查看rest, checkout 等操作纪录. git log --pretty=oneline 用一行显示每次提交信息.
  git log --pretty=fuller 额外显示提交日期.
  git log --since=2.weeks 显示最近两周修改
  git log --pretty=format:"%h - %an, %ar : %s"
  选项 说明
  %H 提交对象(commit)的完整哈希字串
  %h 提交对象的简短哈希字串
  %T 树对象(tree)的完整哈希字串
  %t 树对象的简短哈希字串
  %P 父对象(parent)的完整哈希字串
  %p 父对象的简短哈希字串
  %an 作者(author)的名字
  %ae 作者的电子邮件地址
  %ad 作者修订日期(可以用 -date= 选项定制格式)
  %ar 作者修订日期,按多久以前的方式显示
  %cn 提交者(committer)的名字
  %ce 提交者的电子邮件地址
  %cd 提交日期
  %cr 提交日期,按多久以前的方式显示
  %s 提交说明
  git checkout:
  git checkout --  撤销对文件file的修改
  git checkout -b branch-name 创建并切换到分区.
  git branch:
  git breanch -d branch-name 删除分支.
  git branch -D branch-name 强制删除分支.
  git merge master 合并主分支到当前分支.
  git remote:
  git remote 列出当前项目的远程库
  git remote -v 显示当前项目对应的克隆地址
  git remote add [shortname] [url] 添加远程仓库
  git remote show [remote-name] 查看远程仓库的详细信息
  git remote [remote-old-name] [remote-new-name] 修改远程仓库名称
  git remote rm [remote-name] 删除远程仓库
  git reset:
  git reset HEAD  撤销已经被暂存(git add)的文件
  git reset --soft: 撤销并回退 commit, 不影响 index file, 撤销到哪个位置由最后一个参数指定. git reset --soft HEAD^
  git reset --hard: 撤销 commit, index file and workspace
  git reset --mixed: 默认选项, 撤销 commit and index file, 只保留workspace.
  git reset --: 删除登记在 index file 里的某个文件.
  git show-branch:
  +(加号)表示所在分支包含此行所标识的commit
  (空格)表示所在分支不包含此行所标识的commit
  -(减号)表示所在分支是经过merge得到的,而所在行的内容即是merge的基本信息。
  *(星号)表示如果需要在某列标识+(加号),且此列为当前分支所在列,那么则将+(加号)转变为*(星号)。
  git:
  git gc 收缩空间
  git count-objects -v 查看占用空间大小.
  git恢复删除文件
  git 创建分支恢复文件步骤:
  git branch [recover-branch]
  git checkout [recover-branch]
  git checkout master
  git branch -D recover-branch
  要查看删除的文件: git ls-files –deleted
  恢复则需要从新checkout: git checkout –
  多个文件同时操作可以使用xargs
  git ls-fies -d | xargs git checkout --
  git checkout -f 恢复删除文件
  忽略提交某些文件或文件夹
  1. 在 .gitignore 文件内写入文件名或目录名即可忽略提交, 但只对只对没有被 track 的文件或目录有效, 对于已经加入版本管理的文件是无效的.
  2. 已经加入版本管理的文件或目录可使用如下命令忽略:
  git update-index --assume-unchanged PATH
  常见问题
  1. 执行 git remote add origin... 时出现错误: fatal: remote origin already exists.
  执行如下指令后再git remote add origin... :
  git remote rm origin
  git stash : Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
  git stash list
  工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
  一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
  另一种方式是用git stash pop,恢复的同时把stash内容也删了
  Git常用操作命令:
  1) 远程仓库相关命令
  检出仓库:$ git clone git://github.com/jquery/jquery.git
  查看远程仓库:$ git remote -v
  添加远程仓库:$ git remote add [name] [url]
  删除远程仓库:$ git remote rm [name]
  修改远程仓库:$ git remote set-url --push [name] [newUrl]
  拉取远程仓库:$ git pull [remoteName] [localBranchName]
  推送远程仓库:$ git push [remoteName] [localBranchName]
  *如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下:
  $git push origin test:master         // 提交本地test分支作为远程的master分支
  $git push origin test:test              // 提交本地test分支作为远程的test分支
  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] 或 $ git push origin :[name]
  *创建空的分支:(执行命令之前记得先提交你当前分支的修改,否则会被强制删干净没得后悔)
  $git symbolic-ref HEAD refs/heads/[name]
  $rm .git/index
  $git clean -fdx
  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]
  合并远程仓库的tag到本地:$ git pull origin --tags
  上传本地tag到远程仓库:$ git push origin --tags
  创建带注释的tag:$ git tag -a [name] -m 'yourMessage'
  4) 子模块(submodule)相关操作命令
  添加子模块:$ git submodule add [url] [path]
  如:$git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
  初始化子模块:$ git submodule init  ----只在首次检出仓库时运行一次就行
  更新子模块:$ git submodule update ----每次更新或切换分支后都需要运行一下
  删除子模块:(分4步走哦)
  1) $ git rm --cached [path]
  2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉
  3) 编辑“ .git/config”文件,将子模块的相关配置节点删除掉
  4) 手动删除子模块残留的目录
  5)忽略一些文件、文件夹不提交
  在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如
  target
  bin
  *.db
  =====================
  Git 常用命令
  git branch 查看本地所有分支
  git status 查看当前状态
  git commit 提交
  git branch -a 查看所有的分支
  git branch -r 查看本地所有分支
  git commit -am "init" 提交并且加注释
  git remote add origin git@192.168.1.119:ndshow
  git push origin master 将文件给推到服务器上
  git remote show origin 显示远程库origin里的资源
  git push origin master:develop
  git push origin master:hb-dev 将本地库与服务器上的库进行关联
  git checkout --track origin/dev 切换到远程dev分支
  git branch -D master develop 删除本地库develop
  git checkout -b dev 建立一个新的本地分支dev
  git merge origin/dev 将分支dev与当前分支进行合并
  git checkout dev 切换到本地dev分支
  git remote show 查看远程库
  git add .
  git rm 文件名(包括路径) 从git中删除指定文件
  git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来
  git config --list 看所有用户
  git ls-files 看已经被提交的
  git rm [file name] 删除一个文件
  git commit -a 提交当前repos的所有的改变
  git add [file name] 添加一个文件到git index
  git commit -v 当你用-v参数的时候可以看commit的差异
  git commit -m "This is the message describing the commit" 添加commit信息
  git commit -a -a是代表add,把所有的change加到git index里然后再commit
  git commit -a -v 一般提交命令
  git log 看你commit的日志
  git diff 查看尚未暂存的更新
  git rm a.a 移除文件(从暂存区和工作区中删除)
  git rm --cached a.a 移除文件(只从暂存区中删除)
  git commit -m "remove" 移除文件(从Git中删除)
  git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)
  git diff --cached 或 $ git diff --staged 查看尚未提交的更新
  git stash push 将文件给push到一个临时空间中
  git stash pop 将文件从临时空间pop下来
  git stash list
  ---------------------------------------------------------
  git remote add origin git@github.com:username/Hello-World.git
  git push origin master 将本地项目给提交到服务器中
  -----------------------------------------------------------
  git pull 本地与服务器端同步
  -----------------------------------------------------------------
  git push (远程仓库名) (分支名) 将本地分支推送到服务器上去。
  git push origin serverfix:awesomebranch
  ------------------------------------------------------------------
  git fetch 相当于是从远程获取最新版本到本地,不会自动merge
  git commit -a -m "log_message" (-a是提交所有改动,-m是加入log信息) 本地修改同步至服务器端 :
  git branch branch_0.1 master 从主分支master创建branch_0.1分支
  git branch -m branch_0.1 branch_1.0 将branch_0.1重命名为branch_1.0
  git checkout branch_1.0/master 切换到branch_1.0/master分支
  du -hs
  不要用git pull,用git fetch和git merge代替它
  git rebase用于把一个分支的修改合并到当前分支
  在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:
  $ git rebase --continue
  这样git会继续应用(apply)余下的补丁。
  在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。
  $ git rebase --abort


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-588476-1-1.html 上篇帖子: git usage-Git 下篇帖子: git使用diff----git-pull之后如何查看拉下来的文件有那些修改
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表