in

Como utilizar o Git no Github (final)

Veja a última parte de nosso tutorial.

Mais de 80% das contribuições do repositório do GitHub vêm de fora dos EUA
Acima: Caneca do GitHub. Crédito da imagem: GitHub.

Para começar esta quarta e última parte do tutorial sobre como utilizar o git no Github vamos fazer um clone do repositório que vimos no passado e depois vamos começar a programar para fazer as mudanças e lançar uma versão estável.

Para clonar o repositório

$ git clone https://github.com/rodrigo-leutz-sempreupdate/media-alunos

Como utilizar o github para checar os branches existentes no repositório.

$ git branch -r

Criando o branch para começar a edição.

$ git checkout -b quote dev

Criando funções para vários alunos

Editando o programa.

$ nano media_alunos.kt

Agora vamos deixar o arquivo media_alunos.kt da seguinte forma.

var alunoList = ArrayList()

fun main(){ 
	do {
		val menu = menu()
		when(menu) {
			"1" -> {
				addAluno()
			}
			"2" -> {
				listAluno()
			}
		}
	} while(menu != "q")

}
private fun clearscreen(){
        print("\u001b[H\u001b[2J")
}
private fun menu(): String? {
	clearscreen()
	println("1 --> Adiciona Aluno.")
	println("2 --> Lista alunos e médias.")
	println("q --> Sair")
	val menu = readLine()
	return menu
}
private fun addAluno(){
	val aluno = readAluno()
	alunoList.add(aluno)
}
private fun listAluno(){
	if(alunoList.size == 0){
		println("Não existem alunos.")
	}
	else {
		println("Lista de alunos e médias.")
		for(x in 0..alunoList.size-1){
			showMedia(alunoList.get(x))
		}
	}
	readLine()
}
private fun readAluno(): Aluno {
        println("Digite o nome do aluno:")
        val nome = readLine()
        println("Digite a nota 1:") 
        val n1 = readNota()
        println("Digite a nota 2:") 
        val n2 = readNota()
        println("Digite a nota 4:")
        val n3 = readNota()
        println("Digite a nota 4:")
        val n4 = readNota()
        return Aluno(nome,n1,n2,n3,n4)
}
private fun showMedia(aluno: Aluno) {
        val media = (aluno.n1+aluno.n2+aluno.n3+aluno.n4)/4
        println("\nNome: "+aluno.nome)
        println("Média: $media")
}
private fun readNota(): Double {
        var nota = readLine()
        try{
                nota = nota!!.replace(",",".")
                val y = nota.toDouble()
                if(y > 10.0) {
                                println("Nota maior que 10, valor = 10.")
                                return 10.0
                }
                else if(y < 0.0) {
                                println("Nota menor que 0, valor = 0.")
                                return 0.0
                }
                else {
                                return y
                }
        } catch(e: NumberFormatException){
                println("Não foi digitado um número válido, valor = 0.")
                return 0.0
        }
}
data class Aluno(
        var nome: String?,
        var n1: Double = 0.0,
        var n2: Double = 0.0,
        var n3: Double = 0.0,
        var n4: Double = 0.0
)
ctrl+x e S ou Y para salvar.

Fazendo um novo commit das mudanças.

$ git add media_alunos.kt
$ git commit -m “Adicionado menu para ter vários alunos.”

Criar função de remover alunos

Vamos editar o arquivo novamente e adicionar a função de remover alunos, deixando o código da seguinte forma.

$ nano media_alunos.kt
var alunoList = ArrayList()

fun main(){ 
        do {
                val menu = menu()
                when(menu) {
                        "1" -> {
                                addAluno()
                        }
                        "2" -> {
                                listAluno()
                        }
                        "3" -> {
                                removeAluno()
                        }
                }
        } while(menu != "q")

}
private fun clearscreen(){
        print("\u001b[H\u001b[2J")
}
private fun menu(): String? {
        clearscreen()
        println("1 --> Adiciona Aluno.")
        println("2 --> Lista alunos e médias.")
        println("3 --> Deleta aluno")
        println("q --> Sair")
        val menu = readLine()
        return menu
}
private fun addAluno(){
        val aluno = readAluno()
        alunoList.add(aluno)
}
private fun listAluno(){
        if(alunoList.size == 0){
                println("Não existem alunos.")
        }
        else {
                println("Lista de alunos e médias.")
                for(x in 0..alunoList.size-1){
                        showMedia(alunoList.get(x))
                }
        }
        readLine()
}
private fun getIndex(nome: String): Int? {
        return alunoList.indexOfFirst { it.nome == nome }
}
private fun removeAluno(){
        var nomeAluno: String? = readLine()
        if(nomeAluno == null){
                println("Nome é nulo")
        }
        else{
                val ind = getIndex(nomeAluno)
                if(ind == null){
                        println("Não tem nenhum aluno com esse nome.")
                }
                else {
                        alunoList.removeAt(ind)
                }
        }
}
private fun readAluno(): Aluno {
        println("Digite o nome do aluno:")
        val nome = readLine()
        println("Digite a nota 1:") 
        val n1 = readNota()
        println("Digite a nota 2:") 
        val n2 = readNota()
        println("Digite a nota 4:")
        val n3 = readNota()
        println("Digite a nota 4:")
        val n4 = readNota()
        return Aluno(nome,n1,n2,n3,n4)
}
private fun showMedia(aluno: Aluno) {
        val media = (aluno.n1+aluno.n2+aluno.n3+aluno.n4)/4
        println("\nNome: "+aluno.nome)
        println("Média: $media")
}
private fun readNota(): Double {
        var nota = readLine()
        try{
                nota = nota!!.replace(",",".")
                val y = nota.toDouble()
                if(y > 10.0) {
                                println("Nota maior que 10, valor = 10.")
                                return 10.0
                }
                else if(y < 0.0) {
                                println("Nota menor que 0, valor = 0.")
                                return 0.0
                }
                else {
                                return y
                }
        } catch(e: NumberFormatException){
                println("Não foi digitado um número válido, valor = 0.")
                return 0.0
        }
}
data class Aluno(
        var nome: String?,
        var n1: Double = 0.0,
        var n2: Double = 0.0,
        var n3: Double = 0.0,
        var n4: Double = 0.0
)

ctrl+x e S ou Y para salvar.

$ git add media_alunos.kt
$ git commit -m “Adicionada função de remover aluno.”

Vamos executar o programa para ver como está.

$ ./kompila media_alunos.kt

Podemos ver que ainda contêm erros no código, então vamos arrumar todos eles e criar a nossa versão estável do código.

Como utilizar o github para criar uma versão estável

Editando arquivo para mudanças finais.

$ nano media_alunos.kt
var alunoList = ArrayList()

fun main(){ 
        do {
                val menu = menu()
                when(menu) {
                        "1" -> {
                                addAluno()
                        }
                        "2" -> {
                                listAluno()
                        }
                        "3" -> {
                                removeAluno()
                        }
                }
        } while(menu != "q")

}
private fun clearscreen(){
        print("\u001b[H\u001b[2J")
}
private fun menu(): String? {
        clearscreen()
        println("1 --> Adiciona Aluno.")
        println("2 --> Lista alunos e médias.")
        println("3 --> Deleta aluno")
        println("q --> Sair")
        val menu = readLine()
        return menu
}
private fun addAluno(){
        val aluno = readAluno()
        if(aluno != null){
                alunoList.add(aluno)
        }
}
private fun listAluno(){
        var mediaTotal: Double = 0.0
        if(alunoList.size == 0){
                println("Não existem alunos.")
        }
        else {
                println("Lista de alunos e médias.")
                for(x in 0..alunoList.size-1){
                        showMedia(alunoList.get(x))
                        mediaTotal += getMedia(alunoList.get(x))
                }
                mediaTotal = mediaTotal/alunoList.size
                println("\n\nMédia da sala: $mediaTotal")
        }
        readLine()
}
private fun getIndex(nome: String): Int? {
        return alunoList.indexOfFirst { it.nome == nome }
}
private fun existeNome(nome: String): Boolean {
        val exist = alunoList.find { it.nome == nome }
        if(exist == null){
                return false
        }
        else{
                return true
        }
}
private fun removeAluno(){
        println("Digite o nome do aluno a ser removido:")
        var nomeAluno = readNome()
        if(!existeNome(nomeAluno)){
                println("Não tem nenhum aluno com esse nome.")
                readLine()
        }
        else {
                val ind = getIndex(nomeAluno)
                alunoList.removeAt(ind!!)
        }
}
private fun readNome(): String{
        var nome: String?
        do{
                nome = readLine()
                if(nome == "") println("Nome não pode ser nulo. Digite novamente")
        } while(nome == "")
        return nome!!
}
private fun readAluno(): Aluno? {
        println("Digite o nome do aluno:")
        val nome = readNome()
        if(existeNome(nome)){
                println("Aluno ja existe")
                readLine()
                return null
        }
        println("Digite a nota 1:") 
        val n1 = readNota()
        println("Digite a nota 2:") 
        val n2 = readNota()
        println("Digite a nota 4:")
        val n3 = readNota()
        println("Digite a nota 4:")
        val n4 = readNota()
        return Aluno(nome,n1,n2,n3,n4)
}
private fun showMedia(aluno: Aluno) {
        val media = getMedia(aluno)
        println("\nNome: "+aluno.nome)
        println("Média: $media")
}
private fun getMedia(aluno: Aluno): Double {
        return (aluno.n1+aluno.n2+aluno.n3+aluno.n4)/4
}
private fun readNota(): Double {
        var nota = readLine()
        try{
                nota = nota!!.replace(",",".")
                val y = nota.toDouble()
                if(y > 10.0) {
                                println("Nota maior que 10, valor = 10.")
                                return 10.0
                }
                else if(y < 0.0) {
                                println("Nota menor que 0, valor = 0.")
                                return 0.0
                }
                else {
                                return y
                }
        } catch(e: NumberFormatException){
                println("Não foi digitado um número válido, valor = 0.")
                return 0.0
        }
}
data class Aluno(
        var nome: String?,
        var n1: Double = 0.0,
        var n2: Double = 0.0,
        var n3: Double = 0.0,
        var n4: Double = 0.0
)

ctrl+x e S ou Y para salvar.

Executando o programa terminado para dar uma olhada.

$ ./kompila media_alunos.kt
Como utilizar o Git no Github
Média dos Alunos

Como utilizar o github para fazer o ultimo commit e enviar a versão estável

Agora vamos a parte final de nosso tutorial, escrever nosso último commit e fazer o upload para o branch dev e depois para o master inserindo a tag que significa versão estável no nosso exemplo.

Adicionando nosso arquivo ao git.

$ git add media_alunos.kt

Fazendo o commit

$ git commit -m “Projeto finalizado”

Fazendo mudanças no README.md para ver como funciona

Vamos mudar o arquivo README.md para ficar da seguinte forma.

$ nano README.md
# Média dos Alunos

- Aplicativo que calcula a média dos alunos de uma sala e a média da sala.

ctrl+x e S ou Y para salvar.

Assim podemos ver que é possível usar algumas tags para mudar como é apresentado o arquivo quando se entra no repositório. Também é possível utilizar algumas tags html.

Adicionando arquivo ao commit

$ git add README.md

Fazendo o commit da mudança no README.md.

$ git commit -m “Arrumando o readme”

Agora vamos criar a tag de versão estável.

git tag 2.0

Como utilizar o github para enviar para atualizar o branch dev

Entrando no branch dev.

$ git checkout dev

Fazendo merge do branch quote no dev.

$ git merge quote

Utilizar o github para enviar as atualizações.

$ git push

Como utilizar o github para enviar as tags das versões.

$ git push --tags

Como utilizar o github para enviar a versão estável

Mudando para o branch master.

$ git checkout master

Fazendo o merge do branch dev no master.

$ git merge dev

Enviando as atualizações no branch master.

$ git push

Para ver os logs.

$ git log

Ou se preferir ver em um aplicativo gráfico.

$ gitk

Assim termino essa série de tutoriais com como utilizar o git no github final.

<- Como utilizar o Git no Github

 

Escrito por Rodrigo Leutz

Usuário do Linux a mais de 20 anos.
Desenvolvedor Web e Android ( Kotlin e Java ).
Membro da equipe de suporte do sempreupdate.

Dark Web oferece desinformação como serviço

Dark Web oferece desinformação como serviço

google-maps-lanca-recurso-de-navegacao-para-motos

Como o Google Maps sabe onde estou?