git 操作集

命令集

用户

配置用户信息,不然无法提交(修改也是此操作)
git config --global user.name “用户名”

git config --global user.email “邮箱地址”

第二种:
git config user.name “用户名”

git config user.email “邮箱地址”

查看用户信息

git config --global user.name

git config --global user.email

第二种:
git config user.name

git config user.email

 

工作区

mkdir my_task   # 创建工作目录
cd task         # 进入工作目录
git init        # 初始化工作区,初始化完成后就可以正常使用了

 

vim a.py 创建并编辑a.py文件
git status     #查看当前目录下文件是否被跟踪 (红色--没有,绿色--以跟踪)

git add a.py   #把a.py文件 加入到暂存区(也就是跟踪文件a.py)

 

更改编辑器

# 如:Emacs
git config --global core.editor emacs

 

提交文件到仓库(commit)

1、git commit -m "这里写注释"  a.py  b.py c.py ......可以一直跟已经被跟踪了的文件
​
2、git commit -m "注释"              后面什么都不跟,默认把被跟踪的文件全都加入仓库
​
3、git commit -a   展现一个可视化界面,把你想**加入仓库**的文件前面的 **#** 删除 保存 就OK了

4、git stash -u -k 忽略其他文件,把现修改的隐藏起来,这样提交的时候就不会提交未被add的文件 (用于部分提交)
​
查看提交记录:
git log

查看某 commit 具体改动code:
git show {commit_id}
 
新分支从开发到push remote,再到 merge master 
 1、测试ok 的代码 git add
 2、git commit
 3、和remote code 同步:
  1) git fetch origin(这个前提本地master分支代码必须是最新的)
  2) git fetch origin master
 4、如果第三步使用(1)方法: git rebase master
    如果第三步使用(2)方法:git rebase origin/master
 5、git push origin dev_xxx 开发分支更新为最新版本
6、1)gitlab 上提交merge master 申请
 7、如果不需要第六步, 执行下面:
   1)git checkout master -------------> 切换到master分支
   2)git merge dev_xxx     ------------->合并开发分支dev_xxx
   3)git push origin master  ------------->提交remote

 

合并两次commit

git rebase -i HEAD~3    # 最新的3个版本合并
或
git rebase -i dfs1231     # 从最新的版本到 dfs1231 版本为止

结果:

pick aa123456 "注释"
pick bb123456 "注释"
pick cc123456 "注释"

第二:将pick 改为 s(squash 的缩写) 保存即可

pick aa123456 "注释"

s bb123456 "注释"
s cc123456 "注释"

第三:有冲突需要git add ; 没有则直接 git rebase --continue

第四:git push 

 

 

回退版本

撤销 工作区 与 暂存去的操作

git checkout -- readme.txt // 把readme.txt在工作区的修改全部撤销

git reset HEAD readme.txt // 把readme.txt暂存区的修改撤销,重新放回工作区

回退版本

本地回退:
git reset [commit_id]
撤销已经推送(push)至远端仓库的提交(commit)信息


参数**soft**:保留 工作区的修改 以便重新提交 参数hard:会撤销 工作区的修改 一定要谨慎使用,除非确认不想保留这次修改的内容 ​ 第1步:git reset --soft cddfdfds1231312(版本号) # 重置至指定版本的提交,达到撤销提交的目的 第2步:git push origin master --force # 强制提交当前版本号,以达到撤销版本号的目的
PS:如果是 hard 参数,那么本地文件也会被删除
强制提交: git push -f origin master

 

远程仓库配置

查看远程仓库

git remote
​
git remote -v

删除远程仓库

git remote remove  远程仓库地址
例子:git remote remove origin

添加远程仓库

git remote add origin(别名) https://github.com/ChinaTengFeng/hello-world.git (远程地址)

修改远程仓库

git remote rename  origin(旧名称)   new_name(新名称)

 

克隆项目

pull别人的项目(克隆别人)

git  clone  https://xxxxxx.com/xx(目标地址)

删除克隆的项目整个文件夹

rm -rf  test(文件夹名称)
ls -a  查看所有文件(包含隐藏文件)

克隆的项目提交到自己的git上:

1. 删除克隆项目的orgin : git remote remove origin
2. 创建commit(可选)
3. 更换远程仓库: git remote add origin https://gitee.com/TengOne/proxy-project.git
4. 提交: git push --set-upstream origin master

 

分支

git branch  (查看分支)

git branch -a (查看远程分支)

git branch xxx  (创建 xxx 分支)

git checkout xxx  (切换到 xxx 分支)

git push origin xxx (提交分支,第一次会自动帮你创建 xxx 分支)

git merge  xxx (合并分支)

git branch -D <branch_name>   删除分支

git checkout -b xxx      创建分支 
git push origin --detele xxxx 删除远程分支


#等同pull操作,
git fetch origin  && git rebase origin/dev_xxx
1、 git fetch origin ----> 默认获取 master 分支代码, 并更新索引
2、 git rebase origin/dev_xxx -------> 以远程dev_xxx 分支为基点, 最新提交的commit 会添加在其后面,
 (git rebase master 以本地 master分支为基点, 最新提交commit 会添加在其后, 注意:本地master最好是最新版本)
 

 

两个分支相互合并:  

git cherry-pick:
理解何为”挑拣”提交,它会获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。 当我们需要在本地合入其他分支的提交时,
如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用git cherry
-pick了 背景: 分支1 合并 分支2   1、分支2 是在 分支1 基础上 创建的开发分支   2、在分支2开发完成,并push到远程分支2   3、切换到分支1,   4、执行合并:git cherry-pick xxxx(分支2的版本号) 两个非master分支合并:   如: dev1 合并dev2   git checkout dev1   git pull origin dev2 git merge 会有下面问题: 在一个分支上多次commit后,将分支合并至主干时默认会提交该分支下的所有提交记录,这并不是我想要的,我只想合并时汇总一条提交记录到主干即可。 解决办法: 合并分支时加参数–squash,用法:【git merge --squash 分支名】

stash命令

PS:可用于临时保存和恢复修改,可跨分支。
git stash [save message]      # 保存,save为可选项,message为本次保存的注释

git stash push -k         # 只保存未添加到暂存区的内容 (也就是没有add 的) git stash list # 所有保存的记录列表 git stash pop stash@{num} # 恢复,num是可选项,通过git stash list可查看具体值。只能恢复一次 git stash apply stash@{num} # 恢复,num是可选项,通过git stash list可查看具体值。可回复多次 git stash drop stash@{num} # 删除某个保存,num是可选项,通过git stash list可查看具体值 git stash
clear # 删除所有保存

git stash push --keep-index # 忽略 add 过的文件

 

show 命令 

# 查看特定提交中的文件
git show abc1234:example.txt

# 查看某个分支中的文件:
git show master:example.txt

# 查看某个标签中的文件:
git show v1.0:example.txt

# git show 会输出 ->文件
git show abc1234:example.txt > output.txt

 

改动日志查看

若果感觉有点乱,可以使用git log --pretty=oneline 让日志单行显示

git log : 查看项目日志
git log file : 查看某个文件日志
git log . :查看本目录日志
git reflog: 查看详细做了啥

 

 

修改注释

(进入编辑模式修改的只是注释而已,其它的不要管)

修改最新提交到仓库的一条

git commit --amend

在修改注释(第一行)保存就行

 

修改之前的某次注释

第一步

git rebase -i head~2          # 数字2指的是显示 到 最后 第2次 比如这个输入的2就会显示最后的两次注释(git log 最上面的两行)

第二步: 

你想修改哪条注释 就把哪条注释前面的pick换成edit
方法:编辑方式:按 i 进入编辑模式,把pick换成edit, 按 Esc 退出编辑模式, 按shift + 冒号(:),输入 :wq, 按回车

第三步: 

git commit --amend # 修改注释, 保存并退出

第四步: 

git rebase --continue

 

修改已经push的注释

1、首先,你把最新的版本从远程仓库先pull下来,

2、修改的方法都如上,

3、最后修改完成后,强制push到远程仓库:

git push --force origin 【分支】

 注:很重要的一点是,你最好保证在你强制push之前没有人提交代码,如果在你push之前有人提交了新的代码到远程仓库,然后你又强制push,那么会被你的强制更新覆盖!!!

 

修改 Author 值:

由于我们的主要目的是修改提交者的信息,因此光用 git commit --amend 是不够的,

我们要使用

git commit --amend --author "baurine <2008.hbl@gmail.com>" 

这样的操作,这一点是修改提交者信息的关键所在。 

 
解决error: failed to push some refs to 'xxx(远程库)'

出现错误的主要原因是本地仓库中的文件与远程仓库文件不一样

首先:把最新的远程仓库中的代码拉取下来

git pull --rebase origin master 

再次提交:

git push -u origin master

 

转换本地连接远程git的地址

注:http 连接 转换成 ssh连接

在你git clone项目后,只需将.git/config文件中:
url
= http://xxx.com/Name/project.git 改为 url = git@xxx.com/Name/project.git 测试ssh-key:
ssh -T git@xxx.com

# 查看详情
ssh -Tvv
git@xxx.com # git@xxx.com 你的git仓库地址

 


posted @ 2019-07-08 08:53  萤huo虫  阅读(424)  评论(0)    收藏  举报