git command line

241 阅读2分钟
  1. Git 配置

1.1. git config

  git config 语法:git config [–环境参数] key value   有三个环境参数:

–global 全局配置,写到~/.gitconfig中,即用户路径C:\Users\li.liu下的.gitconfig文件。 –local 工作目录配置,即所在仓库的配置,写到当前仓库下的.git/config文件中。 –system 写到$(prefix)/etc/gitconfig文件中,即git安装路径下的etc/gitconfig中。

eg: git config --global user.name "用户名" git config --global user.email "邮箱"

1.2 查看所有配置 git config --list

1.3 查看某个环境变量的配置 $ git config user.name

  1. 创建仓库 新建本地仓库 git init [project-name]

克隆远端仓库 git clone [url]

3.查看状态与提交

查看状态 git status

查看没有暂存的变化 git diff

查看暂存文件与上一版本的区别 git diff --staged

添加变化文件到stage,准备提交 git add [file]

git add的相反操作 git reset [file]

提交 git commit -m [“描述”]

4.分支 查看本地分支 git branch

查看远程分支 git branch -r

切换分支 git checkout [分支名称]

4.1合并分支 git merge [要合并进来的分支名如b1] ,git merge b1 表示,将分支b1合并到当前分支。

5.git stash 搁置和恢复未完成的修改

临时保存所有本地变化

git stash

恢复临时保存的本地变化

git stash pop

查看

git stash list

丢弃

git stash drop

6.git log 查看提交历史

git log

git log --follow [file]

git diff [first-branch]...[second-branch]

git show [commit]

-p 选项用来显示每次提交的内容差异。

git log -p

--stat 选项显示每次提交的简略统计信息

git log --stat

7.git push

$ git push <远程主机名> <本地分支名>:<远程分支名> 只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。当你和其他人在同一时间 克隆,他们先推送到上游然后你再推送到上游,你的推送就会毫无疑问地被拒绝。你必须先将他们的工作拉取下 来并将其合并进你的工作后才能推送。

git push <远程主机名> <本地分支名>:<远程分支名>   分支推送顺序的写法是<来源地>:<目的地>,

所以,git pull是<远程分支>:<本地分支>, 而git push是<本地分支>:<远程分支>。

git push -u origin newBranch:newBranch // 新建远程分支

8.删除分支

删除远程分支。 git push命令如果省略本地分支名,将删除远程分支。如git push origin :remoteb1将删除远程remoteb1这个分支。 $ git push origin :remote1

或者

$ git branch -r -d origin/remote1

删除本地分支 git branch -d 本地分支名

git fetch 更新本地的远程分支。 git rebase 如果远程分支确实有更新,且本地有未提交到服务器的提交,再执行git rebase, 这样本地的提交就会更新到新的base上,再提交到服务器不会因base不同而报错。 repo sync 实际是执行了两个操作,先git fetch,再基于最新base checkout出代码,也就更新了本地分支。

git fetch + git merge = git pull

9.git checkout -b [要新建的本地分支名] [远程主机名如origin]/[远程分支名如remoteb]

git checkout -b [要新建的本地分支名] [远程主机名如origin]/[远程分支名如remoteb]这个命令是新建一个本地分支,并切换过去。这个分支同远程分支remoteb一样。是origin/remoteb的一个跟踪分支。

10.远程仓库版本回退 gitbrancholdmaster//新建oldmaster分支做备份git branch old_master //新建old_master分支做备份 git push origin old_master:old_master //push到远程 gitresethard某次提交ID//本地仓库回退到某个版本git reset --hard 某次提交ID //本地仓库回退到某个版本 git push origin :master //删除远程分支 $ git push origin master:master //重新创建远程分支

在删除远程master分支时,可能会有问题,处理方式为: $ git receive.denyDeleteCurrent warn
慎用删除远程仓库方法😀 这2种方式,都挺危险的,需要谨慎操作……

11.git rebase 很好的一种避免合并(git merge)代码时出现冲突的方法,即合并(git merge)之前,执行git rebase命令。 如:要把b1 合并到b2上: 首先切换到b1,执行 git rebase b2 //把b1发生过的commit衍合过来, 然后切换到b2,执行 git merge b1 //把b1合并到b2。

12.git cherry-pick git cherry-pick用于把另一个本地分支的commit修改应用到当前分支。 如 git cherry-pick commit-ID1 commit-ID2 commit-ID3 1 命令读的是本地commit。 2 pick过来后,生成新的commit-ID 3 如果拿过来的commit本身是一个merge commit,则可能会用到-m参数,参数值为数字1或2,如 git cherry-pick commit-ID -m 2

13.添加远程仓库 先在github.com上新建一个仓库superalloy(远程库)。 将本地仓库与远程库关联: $ git remote add origin git@github.com:leonliu06/superalloy.git (SSH)

or

$ git remote add origin github.com/leonliu06/M… (HTTP) 关联后,使用命令: git push -u origin master 第一次推送master分支的所有内容。

14.修改最后一次commit的注释 一:最新的一次提交 当你不小心,写错了提交的注视/信息,该如何处理呢。理论上,SCM是不应该修改历史的信息的,提交的注释也是。 不过在Git中,其commit提供了一个–amend参数,可以修改最后一次提交的信息.但是如果你已经push过了,那么其历史最后一次,永远也不能修改了。 我使用git commit –amend已经push过的 $ git commit --amend
然后在出来的编辑界面,直接编辑注释的信息,保存退出。

二:历史提交 git使用amend选项提供了最后一次commit的反悔。但是对于历史提交呢,就必须使用rebase了。 git rebase -i HEAD~3 表示要修改当前版本的倒数第三次状态。 这个命令出来之后,会出来三行东东: pick:******* pick:******* pick:******* 如果你要修改哪个,就把那行的pick改成edit,然后保存退出。 这时通过git log你可以发现,git的最后一次提交已经变成你选的那个了,这时再使用: git commit --amend 来对commit进行修改。

修改完了之后,要回来对不对? 使用git rebase –continue OK,一切都搞定了。