1. 在别人的项目写代码时
1> 犯了蠢翻天的事情,昨天一直在想其他事情。。。!!!结果直接把人家代码用非命令行的方式下载下来了(一般都是用命令行)。导致git branch -av 等命令不生效
切记:用命令行的方法git clone 重新拉代码 就好了
git checkout -b yksearch 创建分支并切换到当前新创建的分支上
git push origin yksearch 把新建的分支push到远程
git branch --set-upstream-to=origin/yksearch 关联本地、远程分支
或者
git checkout -b yksearch1
git push origin yksearch1:yksearch1 注:本地:远程分支 local_branch:remote_branch
删除远程分支
git push origin --delete yksearch1
删除本地分支,注:删除A分支当前不能在A分支,可以切换到master分支再删除A分支
git branch -d yksearch1
如果在git网页版直接删除远程git分支B,在用git branch -a查看的时候,发现还是会有B分支,这时候需要git 更新远程分支列表
git remote update origin --prune
2> git规则
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的
如果在个人目录下,添加了.gitignore,则提交代码时优先匹配 ~/.gitignore_global 的规则,其次是项目根目录或者.git文件夹下的.gitignore规则
解决办法
在个人目录下vim ~/.gitignore_global 添加如下配置
优点:经过一次配置后基本以后所有其他项目都会自动引用这个全局配置的过滤列表
# Compiled class file
*.class
*.o
*.so
*.dll
*.exe
*.pid
# Log file
logs/
*.log
# Package Files
*.jar
*.war
*.ear
*.sar
*.tar
*.tar.gz
*.zip
*.rar
*.7z
*.iso
*.dmg
*.rpm
# Eclipse project files
.classpath
.project
.settings/
# Intellij project files
*.iml
.idea/
# project
application-local.properties
build/
# Mobile Tools for Java
.mtj.tmp/
# BlueJ files
*.ctxt
# virtual machine crash logs
hs_err_pid*
# tmp
tmp/
temp/
#OS generated files
.DS_Store
.Spotlight-V100
.Trashes
Thumbs.db
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
## maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored)
!/.mvn/wrapper/maven-wrapper.jar
补充一个新问题
有些时候会发现自己的配置不生效,比如想要ignore a.java,配置后改动该文件依然会记录改动,这是由于该文件之前已经被添加到版本管理库的原因,可以用下面这个命令,把该文件先从cache中删除,该文件不会被删除:
git rm --cached filename
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
.gitignore文件 具体的规则一搜就有。我在使用GIT的过程中,明明写好了规则,但问题不起作用,每次还是重复提交,无法忍受。其实这个文件里的规则对已经追踪的文件是没有效果的。所以我们需要使用rm命令清除一下相关的缓存内容。这样文件将以未追踪的形式出现 然后再重新添加提交一下 .gitignore文件里的规则就可以起作用了
参考博客 https://www.cnblogs.com/sloong/p/5523244.html
3> 在别人的分支A上拉自己的分支B
B代码更新,提交到git status add commit push
A分支代码也更新了,需要更新到B分支
git checkout A
git pull
git checkout B
git merge A
git push origin B
4> 在IDEA中进行分支切换时,出现如此错误,导致无法正常切换:error: The following untracked working tree files would be overwritten by checkout
由于一些untracked working tree files引起的问题。所以只要解决了这些untracked的文件就能解决这个问题。解决方式:
进入本地版本仓库目录下,直接执行
git clean -d -fx 删除 一些 没有 git add 的 文件
git clean 参数 -n 显示将要删除的文件和目录; -x -----删除忽略文件已经对git来说不识别的文件
-d -----删除未被添加到git的路径中的文件; -f -----强制运行
5> git stash暂存的操作
多人开发,经常遇到开发某一个分支时,需要处理其他事情,这时就可以暂存手头的工作,进行其他工作,完事后再恢复,继续工作
1. 暂存操作
#查看当前状态
git status
#如果有修改,添加修改文件
git add .
#暂存操作
git stash save '本次暂存的标识名字'
2. 查看当前暂存的记录
#查看记录
git stash list
3. 恢复暂存的工作
‘pop命令恢复,恢复后,暂存区域会删除当前的记录’
#恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash pop stash@{index}
‘apply命令恢复,恢复后,暂存区域会保留当前的记录’
#恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash apply stash@{index}
4. 删除暂存
#删除某个暂存, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash drop stash@{index}
#删除全部暂存
git stash clear
6> git回滚命令
git reset HEAD -- <file> 拉取最近一次提交到版本库的文件到暂存区 改操作不影响工作区
7> git报错:Please move or remove them before you can switch branches
git clean -d -fx filename 删除未跟踪的untracked files
8> 将本地的从其他git仓库A上clone下来的代码上传push到一个新的远程git仓库B中的方法
由于当前本地的代码也是从其他的git仓库上clone下来的,所以就不需要执行sudo git init命令了。
1.sudo git add . ----将当前目录下的所有文件添加到版本库。
2.sudo git commit -m "一些说明" ----把添加的文件提交到仓库
3.sudo git remote add origin 新的远程git仓库的地址 ----关联到新的远程库的地址
由于我们当前的代码是从其他的git仓库上clone下来的,所以当前的关联仍然是之前的git地址,所以这一步会失败,并出现如下的错误信息:
fatal: remote origin already exists.
此时我们需要将之前的关联的git地址删除,然后再关联新的git仓库地址。具体操作如下:
sudo git remote rm origin
再执行第三步:sudo git remote add origin 新的远程git仓库的地址。---origin是远程仓库的别名
关联成功后就可以使用sudo git remote -v 命令查看是否关联到了新的git仓库地址。
4.sudo git push -u origin 需要push到新的远程仓库的分支名。----由于我们本地可能有好几个分支,可以使用git branch -v 命令查看。选择自己需要push到新的git仓库的分支名origin。
如下面所示,是将aaaa分支push到上面关联的远程库中。
git push -u origin aaaa
git push --set-upstream origin master // 当前分支 master 没有对应的上游分支。为推送当前分支并建立与远程上游的跟踪,使用
5.sudo git status ----状态查询
发现一个我问题:在从新的仓库上clone下来的代码,会出现如下警告:
warning: remote HEAD refers to nonexistent ref, unable to checkout.
并且进入工程目录,发现没有任何文件。通过git branch -a命令查看分支情况,发现没有master分支,只有我们上面上传的aaaa分支remotes/origin/aaaa。所以此时需要使用命令:sudo git checkout aaaa切换到aaaa的分支,这时就有之前我们上传push上的代码了。
主要原因是我们直接sudo git clone 下来的代码默认是master分支,由于我们新的git仓库上面没有master分支,所以clone下来的时候就是空的,因为master分支就是空的嘛,这是切换到自己之前提交的那个分支上就可以了。
如果想在新的仓库上clone下来的代码是master分支,可以采取如下的方法:
首先删除原有的git信息:sudo rm -r .git
然后执行如下步骤:
sudo git init
sudo git add .
sudo git commit -m “说明”---------执行完这一步后,使用git branch -v就可以看到master分支了。
sudo git remote add origin 新的仓库路径
sudo git push -u origin master
参考文档:
https://www.cnblogs.com/yaoxc/p/3946280.html
https://blog.csdn.net/njnujuly/article/details/86011600
9> 奇怪,从别人的仓库上拉下代码修改后,提交到自己的git仓库用step 8>的方法没错,但是从自己的仓库A,把代码clone后提交到自己的仓库B一直报如下的错
Permission denied (publickey). fatal: Could not read from remote repository.
博主在github上下载tiny face的的源代码的时候,遇到git clone命令为:git clone --recursive git@github.com:peiyunh/tiny.git
而当我在ternimal下执行这条语句的时候,出现错误:
➜ clientParamWatch git:(master) git push -u origin master
git@gitlab.alibaba-inc.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解决办法:
1. 首先,如果你没有ssh key的话,在ternimal下输入命令:ssh-keygen -t rsa -C "youremail@example.com", youremail@example.com改为自己的邮箱即可,途中会让你输入密码啥的,不需要管,一路回车即可,会生成你的ssh key(如果重新生成的话会覆盖之前的ssh key)
2.然后再ternimal下执行命令:
ssh -v git@github.com
最后两句会出现:
No more authentication methods to try.
Permission denied (publickey).
3.这时候再在ternimal下输入:
ssh-agent -s
然后会提示类似的信息:
SSH_AUTH_SOCK=/tmp/ssh-GTpABX1a05qH/agent.404; export SSH_AUTH_SOCK;
SSH_AGENT_PID=13144; export SSH_AGENT_PID;
echo Agent pid 13144;
4.接着再输入:
ssh-add ~/.ssh/id_rsa
这时候应该会提示:
Identity added: ...(这里是一些ssh key文件路径的信息)
(注意)如果出现错误提示:
Could not open a connection to your authentication agent.
请执行命令:eval `ssh-agent -s`后继续执行命令 ssh-add ~/.ssh/id_rsa,这时候一般没问题啦。
5.打开你刚刚生成的id_rsa.pub,将里面的内容复制,进入你的github账号,在settings下,SSH and GPG keys下new SSH key,title随便取一个名字,然后将id_rsa.pub里的内容复制到Key中,完成后Add SSH Key。
6.最后一步,验证Key
在ternimal下输入命令:
ssh -T git@github.com
提示:Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
这时候问题就解决啦,可以使用命令 git clone --recursive git@github.com:peiyunh/tiny.git 去下载你的代码啦。
10> 待续
2. git本地库关联远程库,在本地仓库目录运行命令
step1:Command line instructions
Git global setup
git config --global user.name "XX"
git config --global user.email "XX@alibaba-inc.com"
step2:Create a new repository
git clone git@gitlab.alibaba-inc.com:XX/lsTest.git
cd lsTest
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
step3:Existing folder or Git repository
cd existing_folder
git init
git remote add origin git@gitlab.alibaba-inc.com:XX/lsTest.git
git add .
git commit
以上内容只需要第一次配置,新项目git关联只需要如下命令行
git init
git remote add origin 远程git地址(ssh地址)
如遇如下报错,
则使用 git push -u origin master
$ git push 如果当前分支与多个主机存在追踪关系,那么这个时候-u选项会指定一个默认主机,这样后面就可以不加任何参数使用git push
$ git push -u origin master 上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了
3. FE环境手动拉代码
git init -初始化git就好了
或者手动拉FE代码
服务端手动pull代码
将目标文件赋予git文件夹权限
cd /data/beta 进入FE根目录
sudo rm -rf ssweb7001 删除老代码
将最新master代码 copy到新建ssweb7001中
sudo cp -rf /data/beta/sswebByHand/FE_Susuan ssweb7001 //sswebByHand放的master代码。拷贝master代码到FE测试环境
或者sudo git clone https://gitee.com/zuoyehezi/FE_Susuan.git
cd /data/beta/ssweb7001
sudo git checkout master //切换到master分支分支名
sudo git pull 检查更新master最新代码
sudo git branch -a 显示远程所有分支
sudo git remote update —一般不会出现这种情况
git remote update --prune
sudo git branch p-learning-report remotes/origin/p-learning-report 把远程分支拉到本地
sudo git branch -查看有没有提测lishan分支
sudo git checkout p-learning-report 切换分支
或者git checkout -b p-learning-report origin/p-learning-report 切换到提测分支
sudo git pull origin p-learning-report 检查更新
git branch oral-english remotes/origin/oral-english
cd ..
授权
sudo chgrp -R build ssweb7001
sudo chown -R build ssweb7001或者
sudo chown -R build:build ssweb7001
如果存在那个分支 一般是先切分支再拉代码 要是分支不在 就得先拉分支再切分支
如遇分支写错,要删除分支
sudo git branch -d remotes/origin/BBK
如遇
fatal: Not a git repository (or any parent up to mount point /data)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
[-] 21:05:37 error(@567): /usr/bin/git fetch 执行失败。
原因:知道原因了 因为之前拉代码失败 会残留一些文件,再拉就会这样,删了重新拉就行。需要手动删掉代码目录,重新git clone
git checkout -b AA 切换并且创建分支
2.QA环境提交Python代码
开发代码前,先在当前分支git pull
查看本地提交状态 git status
添加文件到change git add . // 添加当前目录所有文件 git add 指定文件/目录
提交到本地版本库 git commit -m '注释'
提交到远程仓库 git push origin 分支名
➜ maidianNew git:(master) git branch --set-upstream-to=origin/master master
Branch 'master' set up to track remote branch 'master' from 'origin'.
➜ maidianNew git:(master) git pull --rebase
Already up to date.
Current branch master is up to date.
最后再git pull一次代码,避免出错
再次查看本地提交状态 git status
提交代码之前git pull 从分支拉取最新的代码,如果有冲突需要解决,删除<<<<<(
<<<<<<< HEAD
=======
>>>>>>> 28ed2608dbc97aea773f3fef616ad366265bbb58),
如果同时修改了同一个文件,且为新增,不冲突,可以都保留,即如果同时修改了配置文件保留2份。再运行代码保证没错
git status --显示工作目录和暂存区的状态。此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。git status不显示已经commit到项目历史中去的信息
git add src/SuiteAndCases/Parent/cases_suite_parentuser/case_userRegisters.py --新增文件直接add
(-- git add -A 提交所有变化
-- git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
-- git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
)
git status --没有已经add的文件
git commit src/SuiteAndCases/Parent/cases_suite_parentuser/ -m 'Update' --将本地修改保存到本地仓库中
git commit src/SusuanOperations/Parent -m 'Update' --提交此路径下所有的代码文件
git commit src/SusuanRequests/Parent/userRequests.py -m 'Update' --提交单个文件
git commit src/casePath.py -m 'Update'
git commit src/caseRegister -m 'Update'
git commit testConfig.py -m 'Update'
git commit -m 'update' --提交所有文件
可以直接使用git commit -am "<message>",将所有修改,但未进stage的改动加入stage,并记录commit信息。(某种程度上相当于git add和git commit -m的组合技,前提是被改动文件已经是tracked)
git status --查看本地未提交文件
如遇
Untracked files:
(use "git add <file>..." to include in what will be committed)
"src/SuiteAndCases/Parent/cases_suite_parentuser/E:\\git\\SusuanApiAutoTest-pyunit\\src\\logs"
用git clean -f 解决
git checkout -- src/SusuanRequests/Student/__init__.py 放弃提交某个文件
git show origin
或git push xxx xxx -force 强推
先pull再push,pull相当于从远程先做git fetch,再执行git merge :取回远程主机某个分支的更新,再与本地的指定分支合并。(vim模式保存退出,没有conflict的冲突git自动merge)
git pull origin student --从远程分支拉取最新的代码
git push origin student --将本地的student分支推送到origin主机的student分支。如果student不存在,则会被新建
git commit -am'Merge Master' --保存退出,不需要新增内容
git status
git reset --hard HEAD
git log
也可以查询版本 :git log pretty =oneline
显示所有提交版本记录,选择 id
git branch --显示本地所有分支
git branch -a --查看所有本地分支和远程分支
git branch -r --只查看远程分支
git remote show origin --查看remote地址,远程分支,还有本地分支与之相对应关系等信息
如遇python clear read-only status
sudo chown -R qa:staff ./
如遇git pull失败 ,需要把远程分支名的参数带上
git pull origin operation/1.0.0
git remote set-url origin git@gitee.com:QAls/APInterfaceFrame.git 当前路径代码绑定到某内容仓库
git remote update --prune
首次创建git项目
不需要初始化项目
1.如何查看当前远程Git库源地址呢
$git remote -v
$git remote -version
//以上两种方法都是查看当前Git库源地址的
2.这时如果你想修改当前的源地址:
$git remote set-url origin [GIT URL]
//orgin为当前源地址名,[GIT URL]为欲修改源地址
3.添加一个新的Git库源地址:
$git remote add [NAME] [GIT URL]
//[NAME]为新的Git库源地址名,[GIT URL]为新的git库源地址
4.删除一个Git库源地址:
$git remote remove [NAME]
$git remote rm [NAME]
//[NAME]为Git库源地址名
要关联一个远程库,使用命令 git remote add origin git@gitee.com:knowbox_qa/qaailua.git
关联后,使用命令git push -u origin master第一次推送master分支的所有内容
git push origin master
git branch -av
git checkout -b local0918
git push origin local0918:remote0918 把本地仓库推送到远程,本地分支为local0918 远程分支为remote0918
跟踪远程分支:
克隆一个仓库时,它通常会自动地创建一个跟踪 origin/master 的 master 分支。
创建本地分支跟踪远程分支:git checkout -b [branch] [remotename]/[branch]
git checkout -b localfromremote origin/remote0918 语法git checkout -b local-name origin/remote-name
删除本地分支 git branch -d <BranchName>
删除远程分支 git push origin --delete <BranchName> 如 git push origin --delete aiqa0917 不需要加remotes/origin/
3.RD合并master
git checkout master 切到master分支
git pull origin master 更新本地master代码 保证与线上一致
git checkout featureA 切换到提测分支
git pull origin featureA 更新提测分支代码
git merge master 合master
git push origin featureA --将本地的提测分支推送到origin主机的提测分支。如果提测不存在,则会被新建
4. 开发环境基于master打新分支并编译test
cd /data/www/aiclassapi/tool
git checkout master
git pull origin master 更新本地master代码
git checkout -b qatest06
git branch创建分支,但保留在已签出的当前分支中。
git checkout -b创建一个分支并检查它。
它是以下简称:
git branch name
git checkout name
git push origin qatest06:qatest06
sh backoperation_build.sh test
git status
git add build/
git status
git commit -m 'add newest testbuild'
git push origin qatest06
5.其他
git 命令有时候失败,要用ssh了,https协议不行
虚拟机里git配置文件在 cd ~
vim .gitconfig
如遇
Cloning into 'aiclass_front'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
只需要在服务器个人目录下生成公私钥,把公钥id_rsa.pub粘贴在git SSH公钥即可。需要注意的是id_rsa.pub本地登录跳板机、跳板机登录服务器、服务器访问git是不同的公私钥,3对
lishan@XXXX:~/.ssh$ ssh-keygen -t rsa
6.其他RD的wiki也可以参考,以下为RD链接
Git 使用流程:
在本地操作git:
git branch 列出所有分支
git checkout -b dev_new_feature 创建并切换到新的分支,不要直接再master上做提交修改。在自己的分支上做修改。
git config --global user.name 'yourname' 配置操作用户
git config --global user.email 'yourname@knowbox.cn'
git config -l 查看是否添加成功
git add .
git commit -m'注释'
git push origin dev_new_feature 推送到远程具体分支
-------------|||
在服务器上操作git:
git branch 列出分支
git branch -D 强制删除这里的一个分支
git checkout -b dev_new_feature origin/dev_new_feature 取之前在本地操作新建的远程分支并在服务器端分化一个新分支。
git pull origin dev_new_feature 拉取远程这个分支
认知:测试服务器只是作为一个本地调试预览的环境。具体Git的提交和merge可以不用在服务器处理。
通过nginx配置找到下面的每个用户的配置地址:
/data/www/wangjn/vhosts 每个人配置自己的分支对外调试的端口。
shark项目的调试地址:
http://shark.heavi.cn:端口号/index.php
- 注册git
公司git托管网站:http://git.oschina.net
工作区、暂存区、版本库
工作区:我们写代码的地方
暂存区:中间态,已经add没有commit
版本库:已经提交了的代码所在的地方
2. git基本操作-本地基本命令
2.1 项目初始化-git init
2.2 文件从工作区提交到暂存区-git add
2.3 文件从暂存区提交到版本库-git commit (-m)
2.4 查看项目状态-git status
三个区域分别代表已经交到暂存区/尚未提交到暂存区/尚未跟踪 三种状态
2.5 删除文件 git add/rm
2.6 删除暂存区文件/工作区保留 git rm --cached
2.7 比较工作区和暂存区文件差别(第二个红框) git diff
2.8 比较暂存区和版本库(第一个红框) git diff --cached
2.9 工作区覆盖暂存区(取消暂存) git reset
2.10 一些常用的表示 HEAD当前最后一次commit 一串编码代码某次commit HEAD~倒数第二次commit HEAD~~倒数第三次commit
2.11 取消工作区变动(版本库覆盖工作区) git checkout
3. git基本操作-git远程仓库操作
3.1 文件提交云端-git push origin feature/1.0.0
3.2 从云端拉代码-git pull origin feature/1.0.0
3.3 从云端拉代码初始化 git clone
3.4 新关联远程仓库 git remote add origin xxx
3.5 修改地址 git remote set-url origin xxx
3.6 更新本地分支 git remote update
4. git基本命令-git版本控制
4.1 查看分支
本地分支:git branch
远端分支:git branch -r
本地&远端:git branch -a
新建:git branch xxx (用的不多 一般直接用checkout代替)
删除: git branch -d
4.2切换分支
新建git checkout xxx
新建并且换 git checkout -b xxx origin/xxxx
5. 合并不同分支的代码
git checkout tmp1
git pull origin tmp2
没有冲突可以push tmp1到远端
有冲突要对比冲突文件HEAD 和 某次commit之间需要手动保留的部分 后 push当前分支tmp1
6. 项目中git使用规范
6.1 每次需要单独上线的需求单独新建分支
6.2 只允许从远端master新建分支
6.3 分支拉代码只允许拉本分支代码和master分支代码(合并master)
6.4 提测前需要先合并远端master分支,保证当前分支代码是合过远端master的
6.5 有qa的项目 master分支不允许push
6.6 不允许从开发分支新建分支 或 或者待上线分支拉取其他待上线分支代码
6.7 一般情况下不会用到删除功能
================================================================
Git的小技巧
vim ~/.gitconfig 添加一些别名。别名操作可以提高开发效率。
[alias]
st = status
ci = commit
br = branch
co = checkout
df = diff
ss = stash
ssp = stash pop
在susuan_server下切换到一个新并行开发的分支上
git checkout master 切到主分支
git branch -r 远程分支名
git pull origin dev_new_english_homework_by_lyz 拉取远程这个分支到本地
git branch --set-upstream-to=origin/dev_new_english_homework_by_lyz 避免每次提交都加远程分支名。
所以上面那句话就可以直接git pull
git常用命令 fork在gitlab页面进行操作
git log 可以查看仓库版本号 通过commit 后面的版本号可以还原到指定版本
git reset --hard 版本号 还原到指定的版本号
git pull origin master 可以将origin仓库的master版本代码进行更新
git remote cd . 别名 git仓库地址 ----执行这个命令的时候注意需要先cd到项目路径下
查看配置 vim .git/config
git remote update origin --prune -----更新远程分支列表
合并其他人提交的代码
git checkout master # 切换到本地的master分支
git fetch upstream # 拉取upstream最新代码
git rebase upstream/master # 合并到本地的master分支
# 这时可能会出现代码冲突,通过 git status 来查看冲突的代码,在ide上进行合并修改然后使用
# git add + 合并冲突后的文件 git commit --amend # 更新本地的本次commit,不产生新的commit
git push origin master # push到github上的自己fork之后的master分支 --force 将强制覆盖
合并多个分支为一个可以使用 git merge --squash 分支名
还原某一个文件
git log fileA 拿到要还原到的版本号
git checkout 版本号 fileA
git checkout . 回滚当前目录下所有文件
git branch fix_xxx
git checkout fix_xxx
git add xxx
git commit -m "xxx"
git push origin fix_xxx -------提交到远程分支 首次提交时 fix_xxx:fix_xxx可以创建远程分支
git checkout -b fix_xxx origin/远程分支名x -------新建本地分支并切换/从远程拉取分支新建到本地
git remote set-url origin [url] -----修改origin地址
git remote rm origin
git remote add origin [url]
git fetch --all -------远程覆盖本地 下载远程库的内容,git reset 把HEAD指向刚刚下载的最新的版本
git reset --hard upstream/master
git reset HEAD . ----撤销所有的git add
git reset HEAD -filename ----撤销某个git add
git add . ----将文件夹下修改的内容全部add
--删除远程分支
git branch -r -d origin/branch-name
git push origin :branch-name
git tag -a v1.2 -m "version 1.2"
git push --tags
git去除idea目录 注意下面origin master需要修改为对应的分支名
git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch .idea' --prune-empty --tag-name-filter cat -- --all
git push origin master --force
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
使用.ignore插件 增加.gitignore文件来过滤不需要上传的文件
本地处理冲突
git fetch upstream master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp
git diff temp//比较master分支和temp分支的不同
git merge temp//合并temp分支到master分支
git branch -d temp//删除temp