git小计录

1.解决Git refusing to merge unrelated histories

在git pull origin master后面跟上参数–allow-unrelated-histories
(git pull origin master --allow-unrelated-histories)

2.关联项目github

git remote add origin (github地址)

3.强制push

git push -u origin master -f

4.将本地的分支传到远端

git push (远端名称) (本地分支名称)
git push origin xxxxxxx

如何删除github上的远程分支

命令: git push origin 【空格】【冒号】【你的分支名字】

比如我github上有master和develop分支,我现在想着删除develop分支,命令如下:

 git push origin :develop
commit提交错误,想要重新commit
将上次提交之后修改的代码全部删除了(慎用)
回退最近一次提交的原始状态 git reset --hard HEAD
git 删除 错误 提交的 commit
根据--soft --mixed --hard,会对working tree和index和HEAD进行重置:
    git reset --mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息
    git reset --soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
    git reset  --hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,此命令 慎用!

HEAD 最近一个提交
HEAD^ 上一次提交
HEAD^ ^ 上一次的 上一次的提交(倒数第三次)
HEAD^^^ 倒数 第四次的 提交

HEAD~0 最近一个提交
HEAD~1 上一次提交
HEAD^2 上一次的 上一次的提交(倒数第三次)
HEAD^3 倒数 第四次的 提交
git push -f origin ${branch_name}
合并分支

基于 master 分支的紧急问题分支 hotfix branch
你可以运行你的测试,确保你的修改是正确的,然后将其合并回你的 master 分支来部署到线上。 你可以使用 git merge 命令来达到上述目的:

git checkout master
git merge hotfix
5.Android Studio 的忽略不管用
git rm -r --cached .  
git add .  
git commit -m "update .gitignore"
6.简化提交

git commit -a 相当于运行 git add 把所有当前目录下的文件加入暂存区域再运行。git commit

7.Android Studio忽略文件.gitignore
#built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/
out/
build/

# Local configuration file (sdk path, etc)
local.properties

# Windows thumbnail db
Thumbs.db

# OSX files
.DS_Store

# Eclipse project files
.classpath
.project

# Android Studio
*.iml
.idea/
.settings/
gradle/

# Local IDEA workspace

# Gradle cache
.gradle/

#NDK
obj/
提交连环套
git status
git add .
git commit -m "xxx"
git pull
git push origin xxx

Git的优势是可以创建不同的branch,然后在每个branch上开发。那么问题是:如果不同的branch之间需要做同步,比如sourceBranch上做的修改也需要同步到targetBranch,改怎么做?

1. 如果一个branch是有远程Git server管理的,另一个branch是自己本地的
cd <your workspace>

git branch  //假定现在所在的branch是targetBranch,并最好保证没有未提交的修改,并且已经更新到最新

git checkout -b sourceBranch  //创建一个本地的sourceBranch并切换到sourceBranch

git commit  //把sourceBranch上做的修改先提交

git checkout targetBranch  //切换回targetBranch

git merge --no-ff sourceBranch  //把sourceBranch的修改merge到targetBranch。注意:建议merge的时候总是用 --no-ff 选项

git status  //保证现在workspace是干净的

git push   //push到远程,如果远程有新的修改,先做一下git pull
2. 如果两个branch都是远程管理的,想把branchB的内容同步到branchA上
   cd <your workspace>

   git branch  //假定现在所在的branch是branchA,并最好保证没有未提交的修改,并且已经更新到最新

   git checkout sourceBranch  //确保同一个workspace能在不同的branch直接切换,即保证 .git/config里 [remote "origin"] 的内容是 fetch = +refs/heads/*:refs/remotes/origin/*

   git merge targetBranch

   解决conflicts如果merge的结果里有显示conflicts

   git commit  //解决冲突后先commit到sourceBranch

   git checkout targetBranch  //切换到targetBranch

   git merge --no-ff sourceBranch  //建议merge的时候总是用 --no-ff 选项

   git push origin targetBranch   //把sourceBranch的修改merge到targetBranch之后,push到远程的targetBranch
git 一个分支完全覆盖另一个分支
1,远程
git push origin develop:master -f 
就可以把本地的develop分支强制(-f)推送到远程master

2,本地
git checkout master // 切换到旧的分支 
git reset --hard develop // 将本地的旧分支 master 重置成 develop 
git push origin master --force // 再推送到远程仓库

注释: origin 远程仓库名, master 分支名,force,意为:强行、强制。
这行命令的意思就是强制用本地的代码去覆盖掉远程仓库的代码,敲 git push --help 可查看官方的解释(英文的)。当然不止这一种操作方式了,但是这种操作是最快速的,不会有冲突什么的,当然我也有一个忠告:请谨慎使用!请谨慎使用!请谨慎使用!

Android.gitignore

备份:https://github.com/github/gitignore/blob/master/Android.gitignore

# Built application files
*.apk
*.ap_

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/dictionaries
.idea/libraries

# Keystore files
# Uncomment the following line if you do not want to check your keystore files in.
#*.jks

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild

# Google Services (e.g. APIs or Firebase)
google-services.json

# Freeline
freeline.py
freeline/
freeline_project_description.json

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md
git tag的用法

我们常常在代码封板时,使用git 创建一个tag ,这样一个不可修改的历史代码版本就像被我们封存起来一样,不论是运维发布拉取,或者以后的代码版本管理,都是十分方便的

git 下打标签其实有2种情况

轻量级的:它其实是一个独立的分支,或者说是一个不可变的分支.指向特定提交对象的引用
带附注的:实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证,电子邮件地址和日期,一般我们都建议使用含附注型的标签,以便保留相关信息

所以我们推荐使用第二种标签形式

创建tag

git tag -a V1.2 -m 'release 1.2'

上面的命令我们成功创建了本地一个版本 V1.2 ,并且添加了附注信息 ‘release 1.2’

查看tag

git tag

要显示附注信息,我们需要用 show 指令来查看

git show V1.2

但是目前这个标签仅仅是提交到了本地git仓库.如何同步到远程代码库

git push origin --tags

如果刚刚同步上去,你缺发现一个致命bug ,需要重新打版本,现在还为时不晚.

git tag -d V1.2

到这一步我们只是删除了本地 V1.2的版本,可是线上V1.2的版本还是存在,如何办?这时我们可以推送的空的同名版本到线下,达到删除线上版本的目标:

git push origin :refs/tags/V1.2

如何获取远程版本?

git fetch origin tag V1.2

这样我们可以精准拉取指定的某一个版本.适用于运维同学部署指定版本.

git删除远程提交记录

开发过程中,如果把本地的某一个commit推送到远端后,希望把远端的该条记录删除。

commitId需要删除记录上一条ID,保留的最后一条记录ID:4074bbb4518c1c4355131cafc309140fda8411c3

git reset  --hard <commitId>

git reset --hard 4074bbb4518c1c4355131cafc309140fda8411c3

做次提交,用于强制覆盖,将顶部的提交记录覆盖线上的

git push origin HEAD  --force
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值