I'm reading Pro Git book and I learn some cool stuff. I don't know if I'm going to use these, so I'm not sure if it's a good idea to make seperate files for all the commands. But they are just so cool that I want to note it somewhere. So this file is created specifically for this purpose. If I ever need a command from this file, I will move it to their own file. - Limiting the logs since/until some time, or from specific author If you to know which changes are made since some time, use `--since` option like: ``` git log --since=2.weeks ``` or until some time ``` git log --until="20-01-2020" ``` These commands works with lots of formats, you can specify a specific date like "2008-01-15", or a relative date such as "2 years 1 day 3 minutes ago" The --author option allows you to filter on a specific author ``` git log --author="Asocia" ``` - Getting the logs for a specific string Another really helpful filter is the -S option (colloquially referred to as Git’s “pickaxe” option), which takes a string and shows only those commits that changed the number of occurrences of that string. For instance, if you wanted to find the last commit that added or removed a reference to a specific function, you could call: ``` git log -S function_name ``` - Adding remotes and fetching them We’ve mentioned and given some demonstrations of how the git clone command implicitly adds the origin remote for you. Here’s how to add a new remote explicitly. To add a new remote Git repository as a shortname you can reference easily, run git remote add : ``` $ git remote -v $ git remote add pb https://github.com/paulboone/ticgit $ git remote -v $ git fetch pb ``` Paul’s master branch is now accessible locally as pb/master — you can merge it into one of your branches, or you can check out a local branch at that point if you want to inspect it. - Using git switch to create and checkout branches From Git version 2.23 onwards you can use `git switch` instead of `git checkout` to: - Switch to an existing branch: `git switch testing-branch`. - Create a new branch and switch to it: `git switch -c new-branch`. The `-c` flag stands for create, you can also use the full flag: `--create`. - Return to your previously checked out branch: `git switch -`. - Renaming branches Suppose you have a branch that is called `bad-branch-name` and you want to change it to `corrected-branch-name`, while keeping all history. You also want to change the branch name on the remote (GitHub, GitLab, other server). How do you do this? Rename the branch locally with the `git branch --move` command: ``` git branch --move bad-branch-name corrected-branch-name ``` This replaces your `bad-branch-name` with `corrected-branch-name`, but this change is only local for now. To let others see the corrected branch on the remote, push it: ``` git push --set-upstream origin corrected-branch-name ``` To delete the old branch name: ``` git push origin --delete bad-branch-name ```