git 基本操作

git基本操作

reference

git的工作流

工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的。
暂存区:已经 git add xxx 进去,且未 git commit xxx 的。
本地分支:已经git commit -m xxx 提交到本地分支的。

基础使用

git add .
git add aa.py
git commit -m “tijiao zhushi”
git pull --rebase
git push

git add .或git add all 或git add filename

git status

查看文件状态,修改、提交

git log

查看提交记录

git push origin master

提交推到主分支

git pull origin master

从主分支拉代码

git remote add origin

–rebase

reference

git rebase --abort 放弃本次 rebase 操作。
//解决冲突后
git add one.md
git rebase --continue

设置用户名和 Email

git config user.name "用户名" 
$ git config user.email "Email 地址"
$ git config list

git rm

取消追踪
当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用

git rm file_path
git commit -m 'delete somefile'
git push

当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用

git rm --cached file_path
git commit -m 'delete remote somefile'
git push	

git rm 与 git reset的区别
git rm:用于从工作区和索引中删除文件
git reset:用于将当前HEAD复位到指定状态。一般用于撤消之前的一些操作(如:git add,git commit等)。

git rm file_path 删除暂存区和分支上的文件,同时工作区也不需要
git rm --cached file_path 删除暂存区或分支上的文件, 但工作区需要使用, 只是不希望被版本控制(适用于已经被git add,但是又想撤销的情况)
git reset HEAD 回退暂存区里的文件

git branch

git branch -a or git branch			# 查看所有分支或者是本地分支,红色的remotes 代表的是远程分支。
git checkout -b '新建分支名字'		# 在当前分支复制分支
git checkout '分支名字'				# 切换到新建的分支上面
git push origin test name			# 如果不写远程name,则默认和本地分支同名

git submodule

reference
ref
添加

# git submodule add  仓库地址   路径
git submodule add http://github.coding.lab.com/submodule.git submod
git diff --cached		# 查看修改内容可以看到增加了子模块,并且新文件下为子模块的提交hash摘要
git add .getmodules submod
git commit -m "add submod submodule."
git submodule init

更新

git submodule foreach git pull
### 子模块更新后其他人可通过pull更新

git submodule update --remote ## 更新远程仓库(注意不加--remote的区别)
git submodule update --init --recursive  # 更新带子模块或依赖的子模块

删除子模块

git submodule deinit {MOD_NAME}   # 其中{MOD_NAME}为模块目录,执行后可发现模块目录被清空
rm -rf 子模块目录 删除子模块目录及源码
vi .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目
vi .git/config 删除配置项中子模块相关条目
rm .git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可

git rm --cached {MOD_NAME}   # 删除.gitmodules中记录的模块信息(--cached选项清除.git/modules中的缓存)
git commit -am "Remove a submodule."   # 提交更改到代码库,可观察到'.gitmodules'内容发生变更

修改模块URL

  1. 修改’.gitmodules’文件中对应模块的”url“属性;
  2. 使用 git submodule sync 命令,将新的URL更新到文件.git/config;

git stash和git stash pop

reference
git stash
备份当前工作区的内容,保存到git 栈中,从最近的一次commit中读取相关内容
git stash pop
从git栈中获取到最近一次stash进去的内容,恢复工作区的内容。。获取之后,会删除栈中对应的stash。
git stash list
显示git栈中的所有工作区内容的备份
git stash show //查看刚才暂存的修改

git reset

reference
三种模式,soft,mixed,hard
git reset --hard HEAD 撤消之前未add的所有修改
git reset HEAD 只撤消动作,修改的文件不变
git reset HEAD 文件名 只撤消动作工作区修改的文件不变

git revert

git revert 会回退到之前的那次提交,比如git revert HEAD~3会回退到最近的第4个提交的状态,而不是第3个
git revert会产生一个新的commit,将这次回退作为一次修改记录提交,这样的好处是不修改历史提交记录。

checkout

git checkout <bug_branch>//切换刚才功能开发的分支

git clone --recursive

把它依赖的一些项目同时下载下来.(多用于包含子模块的项目)

对子模块

git submodule init 初始化本地子模块配置文件
git submodule update 更新项目,抓取子模块内容。

git回滾

reference

git cat-file

git cat-file -p e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
查看该文件原始的文本内容

git show

git show命令用于展示某个快照的所有代码变动。

更改远程仓库地址

git remote 查看所有远程仓库
git remote xxx 查看指定远程仓库地址

方法一 通过命令直接修改远程地址

进入git_test根目录

git remote set-url origin http://192.168.100.235:9797/john/git_test.git
方法二 通过命令先删除再添加远程仓库

进入git_test根目录

git remote rm origin
git remote add origin http://192.168.100.235:9797/john/git_test.git
方法三 直接修改配置文件

进入git_test/.git, 修改 [remote “origin”]下面的url即可

vim config
[core]
repositoryformatversion = 0
filemode = true
logallrefupdates = true
precomposeunicode = true
[remote "origin"]
url = http://192.168.100.235:9797/shimanqiang/assistant.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值