合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
git status 查看当前更改状态 rm app -rf 放弃本地app目录更改 把新增加的文件使用git add添加进改动 使用git commit提交改动 使用git log查看提交的commit id 使用命令 git diff-tree -r --no-commit-id --name-only d18f9d5f17e190cfbb836a4acff2d96c0d466a2c | xargs tar -rf mytarfile.tar 把修改的文件打包 导出新修改的文件 git archive -o ../update.zip HEAD $(git diff --name-only HEAD) 修改文件后,怎么提交到远程仓库(这个不管) 1.git status 查看git是否有修改内容需要提交 2.git add 指向需要提交的内容文件 3.git commit 提交到本地库 4.git push origin master 提交到远程仓库 (这个比较可靠) git add . 提交暂存的更改 git commit -m "提交注释" git push origin master 分支名称 正常来说这三部就够了 忽略文件不起作用强制更新 git rm -r --cached . git add . git commit -m "update .gitignore" git rm --cached readme1.txt 删除readme1.txt的跟踪,并保留在本地。 git rm --f readme1.txt 删除readme1.txt的跟踪,并且删除本地文件。 git 如何在本地同步远程分支和tag 1.git如何同步本地分支与远程origin的分支 问题场景1: 同事A创建了本地分支branchA并push到了远程->同事B在本地拉取(git fetch)了和远程branchA同步的本地分支branchA->同事A开发完成将远程分支branchA删除(远程仓库已经不存在分支branchA)->同事B用git fetch同步远端分支,git branch -r发现本地仍然记录有branchA的远程分支 分析:远端有新增分支,git fetch可以同步到新的分支到本地,但是远端有删除分支,直接"git fetch"是不能将远程已经不存在的branch等在本地删除的 解决方法: git fetch --prune #这样就可以实现在本地删除远程已经不存在的分支 或者简略: git fetch -p git fetch -p origin git remote prune origin branch常用的命令: git branch -a #查看本地和远程所有的分支 git branch -r #查看所有远程分支 git branch #查看所有本地分支 git branch -d -r origin/branchA #删除远程分支 其他较常用的命令 git fetch #将本地分支与远程保持同步 git checkout -b 本地分支名x origin/远程分支名x #拉取远程分支并同时创建对应的本地分支 问题场景2: 本地分支提示:Git Your branch is ahead of ‘origin/master’ by X commits,你想让本地直接和远程保持同步,想让不再提示这个讨厌信息,那么如果你本地的commit确保不想要,可以如下操作: 解决方法: 1)git reset --hard origin/master 或者还有一个将本地代码与服务器代码更新一致的语句 2)git branch -u origin/master 如果想直接回退版本让远程和本地代码保持一致,那就确保本地代码没问题之后强制推到远程 git push -f origin master 2.git 如何同步本地tag与远程tag 问题场景: 同事A在本地创建tagA并push同步到了远程->同事B在本地拉取了远程tagA(git fetch)->同事A工作需要将远程标签tagA删除->同事B用git fetch同步远端信息,git tag后发现本地仍然记录有tagA 分析:对于远程repository中已经删除了的tag,即使使用git fetch --prune,甚至"git fetch --tags"确保下载所有tags,也不会让其在本地也将其删除的。而且,似乎git目前也没有提供一个直接的命令和参数选项可以删除本地的在远程已经不存在的tag(我目前是没找到有关这类tag问题的git命令~~,有知道的同学可以告知我下,互相进步)。 解决方法: git tag -l | xargs git tag -d #删除所有本地分支 git fetch origin --prune #从远程拉取所有信息 #查询远程tags的命令如下: git ls-remote --tags origin tag常用git命令: git tag #列出所有tag git tag -l v1.* #列出符合条件的tag(筛选作用) git tag #创建轻量tag(无-m标注信息) git tag -a -m ‘first version’ #创建含标注tag git tag -a f1bb97a(commit id) #为之前提交打tag git push origin --tags #推送所有本地tag到远程 git push origin #推送指定本地tag到远程 git tag -d #删除本地指定tag git push origin :refs/tags/ #删除远程指定tag git fetch origin #拉取远程指定tag git show #显示指定tag详细信息 Git中从远程的分支获取最新的版本到本地——两种命令 Git中从远程的分支获取最新的版本到本地有这样2个命令: 1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge Git fetch origin master git log -p master..origin/master git merge origin/master 以上命令的含义: 首先从远程的origin的master主分支下载最新的版本到origin/master分支上 然后比较本地的master分支和origin/master分支的差别 最后进行合并 上述过程其实可以用以下更清晰的方式来进行: it fetch origin master:tmp git diff tmp git merge tmp 从远程获取最新的版本到本地的test分支上 之后再进行比较合并 2. git pull:相当于是从远程获取最新版本并merge到本地 git pull origin master 上述命令其实相当于git fetch 和 git merge 在实际使用中,git fetch更安全一些 因为在merge前,我们可以查看更新情况,然后再决定是否合并结束 ## git还原到之前某个版本,本地和远程都还原 命令行操作: 第一步: git log 查看之前的commit的id,找到想要还原的版本 第二步: git reset --hard 44bd896bb726be3d3815f1f25d738a9cd402a477   还原到之前的某个版本 第三步: git push -f origin master  强制push到远程 ## 使用git把某一次commit修改过的文件打包导出 在用[git](http://www.caizhichao.cn/tag/git)做项目的版本控制时,经常需要更新某次或某几次修改后代码文件(无论是新增的需求文件还是修复了BUG的原有文件),使用git最方便的做法就是导出差异文件,也就是[使用git导出某次commit的文件](http://www.caizhichao.cn/675.html),或[使用git导出某次commit后的文件](http://www.caizhichao.cn/)。 一般在修改完代码后的工作流程是这样的: 1、把新增加的文件使用Git add添加进改动:`git add .` 2、使用git commit提交改动:`git commit -am 'update something'` 3、使用git log查看提交的commit id:`git log` 4、记录下commit id号,比如:*f4710c4a32975904b00609f3145c709f31392140* 5、使用命令把修改的文件打包导出: 打包某次commit: `git diff-tree -r --no-commit-id --name-only f4710c4a32975904b00609f3145c709f31392140 | xargs tar -rf update_201800001.tar` 使用命令把某次节点后的文件导出: window下: `git diff f4710c4a32975904b00609f3145c709f31392140 HEAD --name-only | xargs tar -rf update_201800001.tar` [linux](http://www.caizhichao.cn/tag/linux)下: `sudo git diff f4710c4a32975904b00609f3145c709f31392140 HEAD --name-only | cpio -pvdmu /var/www/git_update/update_201800001.tar` # 导出两个版本的差异文件 ``` git archive -o update.zip HEAD $(git diff  新版本标识串  旧版本标识串 --name-only) ``` # 打包某次提交 ``` `git diff-tree -r --no-commit-id --name-only e26f157e4c7dafb5a3898e5f40192d020dc54be9| xargs tar -rf ../update.tar` ```