Git笔记(不定期更新)

Git Common Command

git rm

  • 移除文件
  git rm <FilePath> 移除指定文件
  git rm <Folder> -r -f 移除文件夹及文件夹下的所用内容

git stash

  • 暂存
git stash save [<message>]
保存当前更改到暂存区,可选择性的添加描述信息
  • 更新暂存区内容到工作区
  git stash pop [--index][<stashId>]
  恢复暂存区中最新的内容到工作区
  --index 可选命令,If the --index option is used, then tries to reinstate not only the working tree’s changes, 
  but also the index’s ones. However, this can fail, when you have conflicts (which are stored in the index,
  where you therefore can no longer apply the changes as they were originally).
  stashId,指定要恢复的stash
  恢复成功后会删除暂存区中的相应内容
  
  git stash apply [--index][<stashId>]
  功能与 pop 相同, 但是恢复成功后不会删除暂存区中对应内容
  • 其他
git stash drop [<stashId>]
  删除最近的一次暂存区内容
  stashId, 删除指定的暂存区内容
git stash clear
   清空暂存区
git stash list 
   列出所有保存的进度列表
git stash show [<stashId>]
显示最近的更改
stashId:显示指定的更改

git config相关

  • git config
使用时的优先级为 local -> global -> system

配置用户名  
 
git config --system user.name "(userName)"
git config --global user.name "(userName)"   
git config --local user.name "(userName)"

--system 为对所有用户的所有仓库有效的配置信息
--global 为对当前用户的所有仓库有效的配置信息
--local 为对当前仓库有效的配置信息


配置用户邮箱  
 
git config --system user.email "(uesrEmail)"
git config --global user.email "(userEmail)"
git config --local user.email "(userEmail)"

查看配置信息  

git config --system --list
git config --global --list
git config --local --list

查看日志信息

  • git log
 包含作者信息,提交信息(m)
 git log  
 
 git reflog  
 可以查看reset后的信息
 
 git log [-p:显示提交的更改详情][number:显示提交的数目]
 
 显示每次提交的增加删除行数
 git log --stat

回退

  • git reset
reset 是在指定的commit之后的提交都被撤销,HEAD是回退到指定的提交的
git reset (commitId)  
将HEAD指向回退到 commitId指定的地方,但不自动撤销之后修改的代码  
可以通过手动修改并新建一个commit来保存修改
git reset --hard (commitId)   
回退并自动撤销之后修改的代码
  • get revert
 revert需要新建一个commit提交,HEAD是向后的
 git revert HEAD  
 回退前一次提交的代码
 git revert commitId
 回退指定的提交,并需要创建新的提交  
 除了指定的提交,其他的提交内容不会改变

合并

  • git push
 本地分支上传合并到指定的远程分支  
 git push origin (localName):(remoteName)
  • git pull
 本地分支拉取合并指定的远程分支  
 git pull origin (remoteName) 
  • git merge
 合并某个分支  
 git merge (branchName) 
  • git cherry-pick
 cherry-pick命令的合并
 1.合并单次提交
 git cherry-pick (commitId) 
 2.合并多个提交 
 ^:区间[a,b];没有:区间(a,b]
 git cherry-pick (commitIdA)[^]..(commitIdB) 区间:[commitIdA,commitIdB]
 git cherry-pick (targetBranch~commitIdA)[^]..(targetBranch~commitIdB)
 3.遇到冲突
   解决冲突后,通过
     a. git add .
     b. git commit 
     c. git cherry-pick --continue
 继续cherry-pick
 4.一次只能存在一个cherry-pick, 如果要另起一个cheery-pick,则使用以下命令
     a. git cherry-pick --quit  取消操作并回到之前的状态
     Forget about the current operation in progress.   
     Can be used to clear the sequencer state after a failed cherry-pick or revert.
     b. git cherry-pick --abort 取消操作并回到之前的状态
     Cancel the operation and return to the pre-sequence state.
  • git rebase
 衍合分支,不会产生新的提交(与merge的不同)
 git rebase (branchName)

 衍合分支的分支(?,会自动切到grandsonBranchName分支下执行)
 1.1 git rebase --onto(parentBranchName) (sonBranchName) (grandsonBranchName)
 
  衍合分支的提交(commitId为parent切出分支的提交)  
 (^,表示[commitIdA,commitIdB],没有则是(commitIdA,commitIdB])
 1.2 git rebase --onto (parentBranchName) (commitIdA)[^] (commitIdB)
 
 [beginIndex,endIndex:索引值,倒数;beginIndex指向要包含的commit的前一次提交,endIndex要包含的最后一次提交]
 (beginIndex,endIndex],索引倒数从 0开始到正无穷
 1.3 git rebase --onto (parentBranchName) (sonBranchName~beginIndex) (sonBranchName~endIndex)
  遇到冲突,解决冲突后
  a. git add .
  b. git rebase --continue
 2. git checkout parentBranchName
 3. git merge grandsonBranchName
 
 其他命令
 1. git rebase --skip 跳过冲突,且不保留冲突的部分(谨慎操作)
 2. git rebase --quit 退出rebase, 保持当前状态
 3. git rebase --abort 退出rebase , 回到之前的状态

分支创建

  • git checkout
 根据指定的远程分支创建本地分支  
 git checkout -b (localName) (remoteName) 
 
 从提交的节点[之前的内容,此次提交]创建分支  
 git checkout (commitId) -b (branchName) 
 
 从Tag创建分支  
 git checkout (tagName) -b (branchName) 

Tag相关

 在本地创建tag  
 git tag -a (tagName) [commitId] -m"(description)"  

 推送tag到远程仓库
 git push origin (tagName)
 
 删除本地tag
 git tag -d (tagName)

 删除远程的tag
 git push origin :refs/tags (tagName)  

删除相关

 删除本地分支  
 git branch -d[D:强制删除] (branchName) 

 删除远程分支  
 git push origin --delete(branchName) 

克隆相关

克隆全部
git clone (remoteSourceUrl) (localName)

克隆指定分支
git clone -b (branchName) (remoteSourceUrl) (localName)

其他

  • Android Studio 命令窗口,log日志乱码
[git config --global i18n.commitencoding utf-8]
[git config --global i18n.logoutputencoding utf-8]
暂时性的: SET LESSCHARSET=utf-8
持久性的: 在window 环境变量中配置 key: LESSCHARSET value:utf-8
  • 保持forked项目与源项目同步更新
  git remote -v
  查看本地项目的远程地址
  git remote add upstream (sourceRemoteURL)
  添加源项目的地址
  git fetch upstream
  获取更新
  git merge upstream/(localBranchName)
  将更新合并到本地分支
  git push
  将更新推送到自己的远程分支
  • 创建SSH Key
 在.ssh文件夹下执行
 1.配置用户信息
 git config --global user.name "(userName)"
 
 git config --global user.Email "(userEmail"
 
 2.创建
 ssh-keygen -t rsa -C "(userEmail)"
 a.自定义保存key文件的名字,默认为id_rsa就好, 自定义的话还要写一个配置文件。
 b.输入密码,不设置为空就好
 c.将生成的公钥,在Git服务端上配置
 3.ssh -T git@github.com 测试是否成功有效
  • 从远程仓库获取数据时出错(目前只是clone时验证过)
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
reason: 缓存值太小
solve: git config --global(全局,不需要在仓库里才能执行此命令) http.postBuffer 52488000

error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
reason: SSL证书错误
solve: env(只对单次生效) GIT_SSL_NO_VERIFY=true (正常的git clone命令)
项目克隆下来后可以对单项目配置
git config http.sslVerify "false"
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,252评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,886评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,814评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,869评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,888评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,475评论 1 312
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,010评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,924评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,469评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,552评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,680评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,362评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,037评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,519评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,621评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,099评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,691评论 2 361

推荐阅读更多精彩内容

  • git 使用笔记 git原理: 文件(blob)对象,树(tree)对象,提交(commit)对象 tree对象 ...
    神刀阅读 3,778评论 0 10
  • Add & Commit git init 初始化一个 Git 仓库(repository),即把当前所在目录变成...
    冬絮阅读 4,846评论 0 9
  • 配置 首先是配置帐号信息 ssh -T git@github.com#登陆github 修改项目中的个人信息 1 ...
    rochuan阅读 725评论 1 1
  • 输入 y ,创建 git_hug 目录No githug directory found, do you wish...
    风花花阅读 1,933评论 0 4
  • 因为拆迁、新房在建,一向节俭的妈妈选择暂住在城中村的出租屋里,一住也有两年多了。我带着孩子过年回家省亲,为...
    Bess的百褶裙阅读 443评论 6 7