I've been trying to create a new alias that send files to staging area, and at the same time it commit with a message.
I've tried this:
git config --global alias.stagecomm '!git add -A && git commit -m $1'
When I try to run:
git stagecomm "Commit"
It says that it didn't match any files known to git.
Try with a sh: edit your git config --global --edit and type:
!sh -c 'git add -A && git commit -m $1'
Another option: define a script (even on Windows) without extension, called git-stagecomm
In it, put your commands:
git add -A
git commit -m $1
If that script is in your path, you will be able to call it with git stagecomm "mymessage"
Any script called git-xxx will be executed by the git bash, as git xxx.
No alias needed there.
That being said, you could also type (without alias)
git commit -am "My message"
See git commit man page.
-a
--all
Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected.
That would not take new files though.
Related
I have a website running on cloud server. Can I link the related files to my github repository. So whenever I make any changes to my website, it get auto updated in my github repository?
Assuming you have your cloud server running an OS that support bash script, add this file to your repository.
Let's say your files are located in /home/username/server and we name the file below /home/username/server/AUTOUPDATE.
#!/usr/bin/env bash
cd $(dirname ${BASH_SOURCE[0]})
if [[ -n $(git status -s) ]]; then
echo "Changes found. Pushing changes..."
git add -A && git commit -m 'update' && git push
else
echo "No changes found. Skip pushing."
fi
Then, add a scheduled task like crontab to run this script as frequent as you want your github to be updated. It will check if there is any changes first and only commit and push all changes if there is any changes.
This will run every the script every second.
*/60 * * * * /home/username/server/AUTOUPDATE
Don't forget to give this file execute permission with chmod +x /home/username/server/AUTOUPDATE
This will always push the changes with the commit message of "update".
Below is my custom gitp command which works great (with psuedo-code). I would like to add to the script by having it automatically auto-index and checkout to a new branch.
Hoping there is a command-line bash whiz who can figure it out! :)
previous_branch_num = 0;
gitp() {
git add -A &&
git commit -m "${1?'Missing commit message'}" &&
git push
git checkout -b "v{++previous_branch_num}" //<--psuedo code
}
Simply:
#!/bin/bash
previous_branch_num=0
gitp() {
git add -A &&
git commit -m "${1?'Missing commit message'}" &&
git push
git checkout -b "v$((++previous_branch_num))" # <-- real code
}
when we fire command
git branch -D <branch_name>
git branch -d <branch_name>
what is the difference and how the execution of each of the command occurs?
The -d version first checks if the branch has commits which are unmerged into its upstream counterpart. If there are some, the delete is denied.
The -D version forces the deletion.
Check the doc if needed.
This is already answered in another thread. Basically this is what's been said
To delete the local branch use one of the following:
$ git branch -d branch_name
$ git branch -D branch_name
Note: The -d option is an alias for --delete, which only deletes the
branch if it has already been fully merged in its upstream branch. You
could also use -D, which is an alias for --delete --force, which
deletes the branch "irrespective of its merged status." [Source: man
git-branch]
I'm playing around with my custom commands, and I'm currently trying to change a remote Git branch programatically using bash.
issue() {
if [ `git branch --list issue_$1` ]
then
git checkout issue_$1
else
git checkout -b issue_$1
git branch -u origin issue_${1}
fi
}
The idea is this function will try to find the branch issue_X, if it does it switches, otherwise it creates and sets the remote origin.
The problem is git branch -u origin issue_${1} I don't know how to do this, and I'm having trouble googling for it because I don't know what this process is called.
Thanks a lot for the help!
I don't know how to do git branch -u origin issue_${1}
If a remote-tracking branch origin/issue_${1} exists you can do git branch -u origin/issue_${1}.
The problem is that in your situation the remote-tracking branch doesn't exit and you have to create it:
git push -u origin issue_${1}
Now I do this:
git commit -a -m "comment"
then (to bitbucket.org)
git push
then (to hosting via ftp)
git ftp push
I want to run these commands automatically:
git fix "comment"
or so:
gitfix "comment"
Create a bash function:
gitfix() {
git commit -a -m "$1" && git push && git ftp push
}
and put it in your ~/.bashrc file so you can just execute it from the terminal as gitfix "some commit comment"
Update: Concatenated the commands with &&, so, in case of failure, the remaining commands will not be executed. Thanks to burper for this update.