Git 常用指令

创建SSH keys
ssh-keygen -t rsa -C "注册github的邮箱地址"
可手动设定保存公私钥的地址
可手动设定推代码时的密码
在默认地址中找到.ssh文件夹
将.pub结尾的内容拷贝到github的ssh中
验证是否成功
ssh -T git@github.com


配置全局git环境
git config --global user.name "username"
git config --global user.email "what@gmail.com"
(注释:如果你想使项目里的某个值与前面的全局设置有区别(例如把私人邮箱地址改为工作邮箱),你可以在项目中使用git config 命令不带 --global 选项来设置. 这会在你当前的项目目录下创建 .git/config,从而使用针对当前项目的配置。)

克隆远程项目
git clone https://github.com/shiyanlou/gitproject

将一个已存在的文件夹放到Git版本控制管理中
进入目录后执行:
git init

将新创建或修改的文件到本地缓存区(Index):
git add filename1 filename2
将所有文件添加到本地缓存区:
git add .
将本地缓存区的内容移除缓存区
git rm --cached filename
git reset HEAD *
提交到本地缓存区的内容到本地库并注释
git commit -m "添加3个文件"
将没有添加到缓存区的内容一起提交,但不会添加新建的文件
git commit -a -m "add file3"
撤销最近的一个提交(创建了一个撤销上次提交(HEAD)的新提交)
git revert HEAD
撤销上上次的提交
git revert HEAD^


文件修改后没有添加缓存区想要撤销修改(回到和版本库一样)
git checkout -- filename


查看缓存区的哪些文件被修改(按q退出)
git diff --cached
查看所有已做但没有加入到缓存区的修改(比如将file1加入到缓存区后又修改了file1文件,修改之后再次添加到缓存区即可)
git diff

创建一个新文件:
touch file1

在文件夹中添加测试内容
echo "要添加的内容" >> file1(文件名)

查看git仓库状态
git status

撤销通过add添加到缓存区的文件
git reset --mixed

删除文件并添加到缓存区(文件没了)
git rm filename
移除缓存区(文件没了)
git reset
把文件从HEAD中迁出并恢复成未修改的状态,丢弃本次删除文件的记录(文件回来了)
git checkout -- filename

再次将删除文件放入缓存区(在git reset后使用)
git rm filename

将本地仓库关联到远程服务器(origin是主机名,可自定义,不一定使用origin)
git remote add origin https://github.com/king.lion580/shiyanlou.git

如果连接到了远程的Git服务器,使用一下命令将本地仓库同步到远端服务器
git push origin master

创建新分支
git branch newbranch

查看所有分支
git branch

切换到其他分支
git checkout newbranch

合并分支
git merge newbranch

合并分支并添加注释
git merge -m '注释内容' newbranch

删除分支(只能删除已经被当前分支的合并的分支)
git branch -d experimental

强制删除某个分支
git branch -D experimental

回到上次提交时的状态(把工作目录中所有未提交的内容清空)
git reset --hard HEAD^

查看日志 (按q退出)
git log

显示每个commit中哪些文件被修改,分别添加或删除了多少行
git log --stat

按要求的格式来格式化日志输出(--pretty)
git log --pretty=oneline(在一行内输出)
可选参数(short/medium/full/fuller/email/raw)
也可以使用--pretty=format参数定义格式

可视化提交图(--graph)
git log --graph --pretty=online

可以指定--topo-order参数,让提交按拓扑顺序来显示(就是子提交在它们的父提交前显示)
git log --pretty=format:'%h : %s' --topo-order --graph

查看两个分支的区别
git diff master test

查看当前的工作目录和另一个分支的差别
git diff test

查看当前工作目录和另一个分支的某个文件的差别
git diff test file1

统计一下哪些文件被改动
git diff test --stat

将一份仓库克隆到另一个位置,进入另一个位置,做一些修改后回到原先的仓库拉取代码
cd /tmp
git clone /home/shiyanlou/gitproject myrepo

回到原先的仓库拉取master分支并合并
git pull /tmp/myrepo master

定义远程分支的缩写:
将远程仓库命名为myrepo
git remote add myrepo /tmp/myrepo
将https://github.com远程仓库命名为origin
git remote add origin https://github.com

git pull 执行两个操作:从远程分支(remote branch)抓取修改git fetch的内容,然后合并git merge进当前的分支

查看远程分支做的修改
git log -p master..myrepo/master

把远程分支修改合并到主分支中
git merge myrepo/master

进入到myrepo中进行拉取直接拉取源地址的代码

克隆远程test分支
git clone localhost:/home/shiyanlou/gitproject test

推送本地的修改到远程Git仓库
git push git@github.com:wht456/GitStudy.git

在推代码之前先拉取远程代码
git pull
git push git@github.com:wht456/Gi6tStudy.git

用git tag 不带任何参数指定某个提交
git tag stable-1 8c315325

创建标签对象(-a -s -u)
git tag -a stable-2 commit号 -m '注释内容'

创建并切换分支
git checkout -b mywork origin

交互式添加
git add -i

保存本地修改到储藏(stash)中,将工作目录和Index里的内容全部重置,回到当前所在分支的上次提交时的状态(突然遇到bug时使用)
git stash save '注释内容'

回到以前的工作状态
git stash apply

查看储藏队列
git stash list

使用在队列中的任意一个储藏
git stash apply stash@{1}

清空整个储藏队列
git stash clear

创建追踪分支(前提是远程仓库也有一个experimental仓库)
git branch --track experimental origin/experimental

再执行git pull experimental 时会从origin抓取内容,再把远程的origin/experimental分支合并进本地的experimental分支

查找仓库里使用xxx的地方(-n显示行号)
git grep [-n] xxx

查找仓库里使用xxx的文件的名字
git grep --name-only xxx

查看文件里有多少行匹配内容
git grep -c xxx

查看某个版本里的内容在末尾加上标签名
git grep xxx v1.2.3

组合搜索条件
git grep -e '关键词1' --and -e '关键词2'

修改刚才提交的注释
git commit --amendgit

Git压缩
git gc

一致性检查
git fsck

建立公共仓库

建立私有仓库

 

拉取远程所有分支

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done

git fetch --all

git pull --all

(参考: https://stackoverflow.com/questions/10312521/how-to-fetch-all-git-branches

这是本人学习笔记,供大家参考学习,如内容有误欢迎大家批评指正,共同进步!

转载随笔/文章务必保留出处和署名,谢谢!!

该内容来自实验楼免费课程,不做任何商业用途, 如有侵权请及时联系本人删除!!!

posted @ 2019-06-10 23:55  W-it-H-ou-T  阅读(339)  评论(0编辑  收藏  举报