GitHub

From Sinfronteras
Revision as of 19:51, 9 March 2020 by Adelo Vieira (talk | contribs) (Basics about creating, committing and pushing a repository)
Jump to: navigation, search

https://github.com



Installing Git

https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-18-04

sudo apt install git



Configuring GitHub

https://www.howtoforge.com/tutorial/install-git-and-github-on-ubuntu/

We need to set up the configuration details of the GitHub user. To do this use the following two commands by replacing "user_name" with your GitHub username and replacing "email_id" with your email-id you used to create your GitHub account.

git config --global user.name "user_name"
git config --global user.email "email_id"
git config --global user.name "adeloaleman"
git config --global user.email "adeloaleman@gmail.com"



GUI Clients - Github Desktop

Git comes with built-in GUI tools for committing (git-gui) and browsing (gitk), but there are several Desktop tools for users looking for platform-specific experience:

  • GitHub Desktop (aplicación oficial GitHub):


Hay otras aplicaciones similares a la aplicación oficial GitHub Desktop disponibles para Linux:



Github Desktop



Install GitHub Desktop on Ubuntu

https://snapcraft.io/install/github-desktop/ubuntu



Basics about creating, committing and pushing a repository

  • Go to https://github.com and click on «New»
  • Repository name: WebApp-CloneOfTwitter
  • ...
  • Click «Create repository»



  • Create a local repository in our computer:

After we create a repository at https://github.com, we have to create a local repository in our computer:

mkdir nombreDelRepositorio
cd nombreDelRepositorio


# Create the repository
git init
git remote add origin https://github.com/adeloaleman/ProyectoPiloto.git



# In case we want to create a RAADME file
echo "# ProyectoPiloto" >> README.md


# Commit and push the files
git add .
git commit -m "first commit"
git push -u origin master



Ahora, si queremos crear un repository local in our computer para un repository en https://github.com que ya contiene archivos, al intentar «git push -u origin master» obtendremos el siguiente error:

error: failed to push some refs to 'https://github.com/adeloaleman/gofaaas.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.



Tenemos dos opciones:



1. To clone the repository:

Si queremos preservar los archivos que se encuentran en el repositorio en https://github.com

https://confluence.atlassian.com/bitbucket/clone-a-repository-223217891.html


git clone https://github.com/adeloaleman/ProyectoPiloto.git


# Or using ssh:
git clone git@github.com:adeloaleman/ProyectoPiloto.git



2. Forzar el «push» a través de la opción «-f»:

Los archivo que se encuentran en https://github.com serán reemplazados.


git push -f origin master



  • Si nuestro repositorio contiene Branches

En este caso no podremos realizar «commit» and «push» al «master». Tenemos que trabajar en nuestro branch y hacer el «commit» and «push» hacia nuestro branch.


Entonces, desde nuestro repositorio local en nuestra computadora, podemos cambiar de branch de la siguiente forma:

git checkout «branch_name»
git checkout adelo


Luego los «commit» and «push» se deben realizar de la siguiente forma:

git push -u origin adelo



Ignnore - exclure files when commiting or pushing

https://www.atlassian.com/git/tutorials/saving-changes/gitignore

Debemos crear el file «.gitignore»

Al parecer, se puede crear en el home y puede ser utilizado para excluir files en cualquier repositorio. Yo lo he sin embargo creado en el current repository. En este file simplemente tenemos que escribir los files que queremos excluir.


My basic «.gitignore» looks like this:

.gitignore
.uptoday.sh


However, there can be many different files depending on the project. Actually, Githup will propose you a «.gitignore» file when you create a repository based on the Language, Framework or Library.


For example, for a React project, we have to exclude the «/node_modules» folder. This is how my «.gitignore» file looks like for my React project. I have actually commented the recommended exclusion files because I didn't understand well why they were being excluding. However, it can be important to exclude some of these files; sometimes for security reasons:

.gitignore
.uptoday.sh
/backEnd-express/node_modules
/frontEnd-react/node_modules


### Lo siguiente es el archivo .gitignore generado automaticamente cuando cree el proyecto React
## See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
#
## dependencies
#/node_modules
#/.pnp
#.pnp.js
#
## testing
#/coverage
#
## production
#/build
#
## misc
#.DS_Store
#.env.local
#.env.development.local
#.env.test.local
#.env.production.local
#
#npm-debug.log*
#yarn-debug.log*
#yarn-error.log*



If you want to ignore a file that you have committed in the past

For example, if we want to ignore our «.uptoday.sh» but it has already been committed in the past, you'll need to delete the file from your repository this way:

git rm --cached .uptoday.sh

Using git rm --cached .uptoday.sh means that the file will be deleted from your «repository», but will remain in your «working directory» as an ignored file.



My uptoday script

I have also created a «.uptoday.sh» script to automate the pushing process.

This script is able to optionally take an argument. If you don't give it an argument the «commit comment» will just be "commit"; but you can specify a «commit comment» in the argument of the script. For example:

./.uptoday.sh                         # This will commit and push the changes using the «commit comment»: "commit"
./.uptoday.sh "The navbar was added"  # This will commit and push the changes using the «commit comment»: "The navbar was added"


.uptoday.sh
#! /bin/sh

git add .

commit="$1"

if [ -z "$commit" ]
then
	git commit -m "commit"
	# echo "Please set \$commit"

else
	git commit -m "$1"
	# echo "Setting up jail at $commit"
fi

git push -u origin master



How to change the URL for a remote Git repository

https://help.github.com/en/github/using-git/changing-a-remotes-url


git remote set-url origin https://github.com/adeloaleman/JavaDesktopApp-ZooManagementSystem.git



Git push requires username and password

https://stackoverflow.com/questions/6565357/git-push-requires-username-and-password

In the link above there is apparently an explanation about how to avoid typing the username and password every time you push files.



GitHub Pages

https://pages.github.com/

Websites for you and your projects. Hosted directly from your GitHub repository. Just edit, push, and your changes are live.



Another Collaborative and Remote development resources I have been testing

This is not related to GitHub at all. I'm leaving this section here cause I haven't found a better place to it.



Eclipse - Connect to a remote file system

https://us.informatiweb.net/tutorials/it/6-web/148--eclipse-connect-to-a-remote-file-system.html



Mount a remote filesystem in your local machine

https://www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh

https://stackoverflow.com/questions/32747819/remote-java-development-using-intellij-or-eclipse

https://serverfault.com/questions/306796/sshfs-problem-when-losing-connection

https://askubuntu.com/questions/358906/sshfs-messes-up-everything-if-i-lose-connection

https://askubuntu.com/questions/716612/sshfs-auto-reconnect

root@sinfronteras.ws: /home/adelo/1-system/3-cloud
sshfs -o reconnect,ServerAliveInterval=5,ServerAliveCountMax=3 root@sinfronteras.ws: /home/adelo/1-system/3-cloud
sshfs -o allow_other root@sinfronteras.ws: /home/adelo/1-system/3-cloud


faster way to mount a remote file system than sshfs: https://superuser.com/questions/344255/faster-way-to-mount-a-remote-file-system-than-sshfs