这里记录得的是Git中比较经典的用法,方便查找。持续维护中……
最近修改 2020-9-16 增加log
branch
$git branch -a
显示所有本地及远程分支
$git branch -d <branch name>
删除分支
checkout
$git checkout -f 4997f70 -- .
回滚到某个版本,回退的东西作为一个新提交出现,可以commit,再push到公共分支
$git checkout — readme.txt
丢弃某个文件的修改
$git checkout -b githubmaster remotes/origin/master
Checkout 远程的master分支到本地,本地名为githubmaster
$git checkout -b dev
从当前分支拉出dev分支
pull
$git pull origin master
将远程的origin/master分支上取回代码,合并到当前的分支上
push
$git push origin master
将当前分支提交到远程的origin/master分支上
用户名
不同的项目使用不同的用户名
通过$cd .git进入该目录,发现该目录下有个config文件,采用$open config命令打开,添加如下配置:
[user]
name = XXX(自己的名称英文)
email = XXXX(邮箱)
保存,command+s即可。这时候就为该项目配置了独立的用户名和邮箱,这时提交代码时,提交日志上显示的就是设置的名称,当然github这种会根据设置的邮箱来设置对应的用户名。
当然也可以通过命令行的方式(即要去掉--global参数)去设置单独的git配置,只需要在.git文件夹下。 例如执行如下命令:
$git config user.name "xxxxx"来修改当前项目提交代码时用到的用户名。
ps:如果全局的配置和当前项目的单独配置中出现相同的配置选项,比如全局和项目都设置了user.name,那么在该项目中进行git操作时,会默认采用该项目配置的用户名。
如果要设置提交到github相同的用户名按下面方式设置
$git config user.name "<github-username>" $git config user.email "<github-user-email>"
Cherry-pick
cherry-pick 和它的名称一样,精心挑选,挑选一个我们需要的 commit 进行操作。它可以用于将在其他分支上的 commit 修改,移植到当前的分支。
$git cherry-pick <commit-id>
修改commit的作者
执行下面的脚本
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="itvincent@gmail.com"
CORRECT_NAME="zhongyongsheng"
CORRECT_EMAIL="zhongyongsheng@yy.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
log
将某个分支的所有提交记录打印出来,只显示一行(不要详情),不显示merge的记录
$git log origin/<branch name> --oneline --no-merges