Skip to content

Git 的一些常用命令和参考学习资料

常用命令参考 1常用命令参考 2学习 Git 阮一峰学习 Git Bootstrap远程操作参考

rebase

shell
git checkout -b [feature-branch-rebase]  #current in feature-branch.
git checkout master
git pull
git checkout [feature-branch-rebase]
git rebase -i [commit-id-这个分支的多次提交的前一个]#将本地的多次提交合并为一个,以简化提交历史。本地有多个提交时,如果不进行这一步,在git rebase master时会多次解决冲突(最坏情况下,每一个提交都会相应解决一个冲突)
git rebase master -i  #current in feature-branch-rebase.
# 2.resolve conflict
# 3. commit file to stage
git add .
# 4. continue
git rebase --continue
git checkout master
git merge feature-branch-rebase

查看远程仓库信息

git remote -v

本地库关联远程库

git remote add origin git@github.com:nanfei9330/learngit.git

查看所有分支(本地加远程)

git branch -a

查看远程分支

git branch -r

拉取远程分支到本地分支

git checkout -b 本地分支名 origin/远程分支名

推送本地分支到远程分支

git push origin 本地分支名:远程分支名

删除远程分支

git push origin --delete [name]

版本

git checkout 234ab5
git reset --hard 534iu4

分支

创建

git chekout -b dev   // -b 创建并进入

切换分支

git chekout dev

合并分支

  • 正常合并
git merge dev    //当前分支合并 dev 分支
  • --no-ff 合并 --no-ff 禁用 Fast forward 模式在 merge 时生成一个新的 commit,这样,从分支历史上就可以看出分支信息
git merge --no-ff -m "merge with no-ff" dev

删除分支

git branch -d dev   // -D 强制删除

push 本地分支到远程

git push origin dev

查看记录 log

git log --graph --pretty=oneline --abbrev-commit

将当前分支的修改状态存储起来,存储后使得工作区是干净的,就可以 pull 最新代码。

存储

git stash

查看

git stash list

取出

  • 取出列表某个:
git stash drop  statsh@{2}
  • 取出最后一个: 取出后会删除最后一个状态
git stash pop

标签 tag

创建

git tag <tagname> [ commit id ]  //默认为HEAD,也可以指定一个commit id
  • -m 指定标签信息
git tag -a <tagname> -m "blablabla..."
  • 推送某个标签到远程
git push origin <tagname>
  • 推送全部标签到远程
git push origin --tags

查看

  • 全部
git tag -l
  • tag 名称
git show <tagname>

删除

  • 本地
git tag -d v0.1
  • 远程
git tag -d v0.1
git push origin :refs/tags/v0.9

tag other

git tag -l | xargs git tag -d #删除所有本地分支
git fetch origin --prune #从远程拉取所有信息

#查询远程tags的命令如下:
git ls-remote --tags origin

tag常用git命令:
git tag #列出所有tag
git tag -l v1.* #列出符合条件的tag(筛选作用)
git tag [tag名] #创建轻量tag(无-m标注信息)
git tag -a [tag名] #创建含注解的tag

git push origin --tags #推送所有本地tag到远程
git push origin [本地tag名] #推送指定本地tag到远程

git tag -d [本地tag名] #删除本地指定tag
git push origin :refs/tags/[远程tag名] #删除远程指定tag

git fetch origin [远程tag名] #拉取远程指定tag
git show [tag名] #显示指定tag详细信息

别名

git config —global alias.lg “log —color —graph —pretty=format:’%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset’ —abbrev-commit”

pull push 配置项

要把当前分支 push 和 pull 的默认分支设置为 dev

git branch --set-upstream-to=origin/dev dev

未分类

丢弃工作区文件修改

git checkout -- b.txt

暂存区修改放回工作区

git reset HEAD b.txt

将文件从缓存中删除(非物理)

git rm --cached  "文件路径"

版本回退

shell
# 显示最近300条提交记录
git log -300
git reset --hard [commitID]
#强制提交
git push -f origin master
#更简单的做法(回复上一个版本)
git reset --hard HEAD~1
git add .
git commit "xxx"
git push -f origin master

git 如何忽略本地文件 , 但这个文件要保存在远端库

git 在远端库有一个 web.config 的配置文件, 把这个库克隆到本地以后, 需要忽略这个配置文件的 push 和 pull . 应该怎样做?

通常,远端库应该保存的是 web.config.example 这样的文件,然后开发者 clone 仓库下来,cp web.config.example web.config,再对 web.config 进行修改。而 web.config 是 git ignore 的。或者,你在本地执行 git update-index --assume-unchanged web.config,然后你就可以随意更改了。但当远端库的 web.config 更改时,你本地 pull 时会提示需要手动处理 web.config 文件(因为有 uncommitted 的内容),你可以先执行 git update-index --no-assume-unchanged web.config 把 changes 放出来,然后 stash 下... 然后 pull,然后解决冲突。

别名

官方文档

shell
#示例
git config --global alias.mlog 'log --oneline --graph'

Rebase Global Config

shell
# cat ~/.gitconfig
git config --global pull.ff true
git config --global pull.rebase true
git config --global rebase.autoStash true

git set push same name

shell
git config --global push.default current

git http clone set username and password to .git/config

[remote "origin"]
    url = https://username:password@github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*