Git精华笔记

889 阅读1分钟
这里记录得的是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