Git——常用命令

git 配置

系统级别配置

# 配置git用户信息
git config --system user.name "xxx"
git config --system user.email "xxx@qq.com"
git config --system user.password "a123456"
# 记住密码
git config --system credential.helper store
git config --list
# 清理账号密码
git config --system --unset credential.helper  

用户全局级别配置

# 配置git用户信息
git config --global user.name "xxx"
git config --global user.email "xxx@qq.com"
git config --global user.password "a123456"
# 记住密码
git config --global credential.helper store
git config --global --list
# 清理账号密码
git config --global --unset credential.helper  

项目级别配置

# 配置git用户信息
git config --local user.name "xxx"
git config --local user.email "xxx@qq.com"
git config --local user.password "a123456"
# 记住密码
git config --local credential.helper store
git config --local --list
# 清理账号密码
git config --local --unset credential.helper  

免密登录

touch ~/.git-credentials
echo "http://guest:guest12345678@git.jollycorp.com:8088" > ~/.git-credentials
git config --global credential.helper store \

基本操作

# 初始化 git 文件
git init
# 提交对应文件的代码到暂存区
git add 文件名
# 提交所有工作区的代码到暂存区
git add .
# 创建快照记录
git commit -m ''
# 工作区与某次提交的差异
git diff [] 
# 暂存区与某次提交的差异,默认为HEAD
git diff -cached [] 
# 删除文件(只是从目录中删除、如果要从版本库中删除,需要再 git commit)
rm filename 

查看

# 查看所有版本日志,被回收的信息不会在这里看到
git log 
# 查看所有版本日志简化信息
git log --pretty=oneline 
# 查看所有版本日志,被回收的信息也可以在这里看到,按经过的顺序排列
git reflog 
# 查看当前提交情况
git status 
# 查看某次快照的提交(修改)内容
git show <commit 哈希值>
# 查看文件内容(获取的是暂存区和工作区的文件的内容,如果内容一样,则不区分)
cat filename 
# 查看分支信息(结果为该分支指针信息,如e72638jskanj988a8ifji…,长度为40的字符串)
cat .git/refs/heads/master 

版本回退

# 将文件内容从提交区复制到暂存区
git reset HEAD
# 撤回最近一次的commit (未push的情况下)
git reset HEAD~
# 回退到上一次提交,^ 指上一次
git reset --hard HEAD^
# 回退到上 n 次提交
git reset --hard HEAD~n
# 版本回退到某一指定版本,这里的 30945da 指的是具体版本号
git reset --hard 30945da
# 回退已跟踪的文件
git reset --hard origin/master
# (此处 mixed 不填效果是一样的),将当前内容复制到暂存区,此时 HEAD 和 master 同时回退到该指针,此时提交区与暂存区内容一致,与工作区不一致
git reset --mixed 30945da
# 将当前内容复制到暂存区和工作区,此时提交区与暂存区、工作区内容一致
git reset --soft 30945da
# 清除未跟踪的文件,若是文件不想被清除掉,可以在.gitignore里增加
git clean -df  

远程仓库

# 关联远程仓库
git remote add origin https://github.com/tugenhua0707/testgit.git
# 查看远程仓库的信息
git remote -v 
# 获取远程仓库的提交历史
git fetch 
# 修改了本地 origin master 分支
git fetch origin <分支名>  
# 完成本地三方合并
git merge origin <分支名> 
# 拉取并合并代码
git pull 或 git pull origin <分支名> 
git pull = git fetch + git merge
# 初次完整获取远程仓库
git clone = git init + git remote + git pull

分支操作

分支的增删改查

# 创建分支
git branch <分支名>
# 删除分支
git branch -d <分支名>
# 查看所有分支
git branch -a
# 删除远程 test 分支
git push origin --delete test

分支的切换

原理:通过移动HEAD检出版本

# 切换到该分支
git checkout <分支名>
# 创建并切换到该分支
git checkout -b <分支名>
git checkout 将其引用到任何一个对象上
# 切换到到上一个分支
git checkout - 
# 将文件内容从暂存区复制到工作区
git checkout – filename 
# 把 HEAD 切换到该指针上,但会造成 HEAD 与 master 分离,造成 detached head 效果,此时不宜提交,因为 master 指针没有回退,当 HEAD 回到 master 上时,之前提交的代码可能被回收。这种操作一般只用来查看代码
git checkout <指针名> 

分支的合并

# 把 test 分支合并到当前分支
git marge test
# 不使用 fast-forward
git marge next --no-ff
# 修剪提交历史的基线,即‘变基’
git rebase
# 在 master 分支上重演其他分支的所有指针信息,并且合并进来产生新的指针
git rebase master
# 在 master 分支上重演其他分支的最后一次指针信息,并(同上)
git rebase --onto master <指针名>

暂存

# 把工作区和暂存区的内容存到 stash 区
git stash save ‘name’
# 查看 stash 区中存了多少条内容
git stash list
# 将该条内容恢复到工作区
git stash apply stash@{0}
# 删除该条记录
git stash drop stash@{0}
# ?
stash pop = stash apply + stash drop

标签

# 创建别名
git tag
### Windows环境下Git常用命令 #### 初始化仓库 在本地创建一个新的Git仓库可以通过`git init`来完成。这会在当前文件夹下创建一个名为`.git`的子目录,该目录包含了项目所有的元数据和版本历史记录[^3]。 ```bash $ git init ``` #### 配置全局用户名和邮箱 为了跟踪每一次提交的信息,在首次安装配置Git时应设置用户的名称与电子邮件地址: ```bash $ git config --global user.name "Your Name" $ git config --global user.email you@example.com ``` #### 添加文件到暂存区 当有新的或已更改过的文件准备加入下次提交时,需先将其添加至索引(即暂存区域)。对于单个文件可直接指定路径;若要一次性全部新增/变更,则可用`.`表示整个目录下的所有改动项。 ```bash $ git add <file> # 或者 $ git add . ``` #### 查看状态 通过执行此指令能获取关于工作树以及索引的状态概览——哪些文件已被修改但尚未被标记为即将提交?哪些已经被放入了待提交队列? ```bash $ git status ``` #### 提交更新 一旦确认好想要保存的变化之后就可以进行提交操作了。每次提交都应当附带一条描述性的消息以便日后查阅变动原因[^2]。 ```bash $ git commit -m "commit message here" ``` #### 检查差异 如果想知道自上次提交以来具体做了什么改变,或是对比任意两个不同版本之间的区别,那么可以利用`diff`功能来进行审查。 ```bash $ git diff ``` #### 推送分支上的内容给远程库 假设已经有一个远端服务器上存在的存储库,并希望把自己这边最新的进展同步过去的话,就需要用到推送命令。这里特别提到的是针对子模块(subtree)的操作方式简化了跨多个独立项目的协作流程[^1]。 ```bash $ git subtree push --prefix=<path> <remote-repo-name> <branch-name> [--squash] ``` #### 获取最新代码并合并入当前分支 从远程拉取最新的变化并将它们集成进来是最常见的团队合作场景之一。通常情况下会自动尝试快速前进(fast-forward),但如果存在冲突则可能需要手动解决后再继续。 ```bash $ git pull origin master ``` #### 列出所有标签(tag) 有时候除了按时间线性发展的主线外还会有特定里程碑式的发布版次被打上了tag作为永久标识符方便检索定位。 ```bash $ git tag ``` #### 创建新分支用于实验特性开发 每当着手于某项可能会破坏现有稳定环境的功能实现之前最好新开辟一个临时支路出来单独处理以免影响主干进度。 ```bash $ git branch feature_branch_name ``` #### 更改活动中的分支 切换不同的上下文视角去浏览各个阶段的历史快照或者是在多条平行线路间游走调整都是日常工作中不可或缺的能力。 ```bash $ git checkout another_branch_or_tag ``` #### 合并与变基(rebase) 面对来自他人贡献过来的新鲜血液如何优雅接纳而不至于造成混乱局面呢? 这里就涉及到两种主要策略的选择问题... ```bash # Merge approach: $ git merge some_other_branch # Rebase alternative: $ git rebase target_base_branch ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值