虽然Github Desktop用得很爽,但是偶尔也会有一些特殊的需求(比如回滚或是在Linux环境下操作),故还是在此记录一下。
git init project
git remote add origin https://github.com/xxx/xxx.git
git push -u origin master:master
git status
git log
git diff file
git reflog
git reset --hard HEAD^
(或者跟哈希码,从reflog
里得到)
git reset --hard commit_id // 不保留未提交的修改
git reset --soft commit_id // 默认方式,保留未提交的修改
git push origin local_branch --force
git add xxx.cpp
git commit -m "update log"
/ -am
实现添加并提交git stash -u
git clean -f
删除当前目录下untrack文件和文件夹, 不包括.gitignore中指定的文件和文件夹
git clean -df
删除当期目录下的所有untrack的文件和文件夹
git clean -xdf
git push
git add something
git stash -u -k # the most important step
git commit --date="Thu Jun 27 15:00:00 2019 +0800" -m "xxx"
git stash pop # pop out modification
git checkout -b dev
git branch
git checkout master
git merge dev
git pull origin <远程分支名>:<本地分支名>
git fetch origin pull/$ID/head:$BRANCHNAME
,$BRANCHNAME
是自己想要创建的分支名git rebase -i id
设置git账户信息(如果已经设置了,需要用--replace-all
覆盖)
git config --global user.name "username"
git config --global user.email "email"
git config --list
当git文件夹在MacOS/Linux/Windows下迁移时,可能会出现git status
将没有发生改变的文件也纳入变化的文件中,这可能是因为行尾换行或是文件权限引起的,可通过下面设置进行忽视。
# CRLF/LF
git config --global core.autocrlf true # Windows
git config --global core.autocrlf input # Linux
# File permission
git config core.fileMode false # ignore permission
git submodule add <url>
git submodule init
git submodule update
git pull
参见Generating a new SSH key and adding it to the ssh-agent。
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# This creates a new ssh key, using the provided email as a label.
> Generating public/private rsa key pair.
> Enter a file in which to save the key (/home/you/.ssh/id_rsa): [Press enter]
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
# Adding your SSH key to the ssh-agent
$ eval "$(ssh-agent -s)"
> Agent pid 59566
$ ssh-add ~/.ssh/id_rsa
然后将.ssh/id_rsa.pub
添加到Github账户中,参见此文。
可通过下面指令测试SSH是否能正常连接Github,见此文。
$ ssh -T git@github.com
用SSH方式git clone
可能比用HTTP快。关于在Linux下提速git clone
,可参见此文。
但注意用SSH很可能没法push上去,如果Github Desktop的SSH连接没有设置好的话,因此这时候可以重新将SSH换回HTTP,参见此文。