概述
Git 四个状态:
- untracked 没在进入git仓库
- unmodified 没有修改
- modified 已修改 红色modified
- staged 可以进行提交 绿色modified
Git 初始化
- git 初始化项目(需要在项目根目录执行)
git init
- 配置账号和邮箱
git config --global user.name “yourname”
git config --global user.email “email@email.com ”
- 修改远程项目的git 地址(当远程仓库地址迁移时使用)
git remote set-url origin http://test@github.com/paas/common-lib.git
- 查看配置
git config --global --list
配置github 权限
- 配置github账号和邮箱
- 生成ssh密钥对(使用github邮箱)
ssh-keygen -t rsa -C “email@email.com”
- 将生成的公钥粘贴到github
查看公钥
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAfdafewqrqerqHZ+I6BeQEy1244II7ZNxjA5pd0yYdDI9RB55WNnV7K+EriLVBec8vMfG+X1NygWqBKFxI+dn2hDy7izVdsaX2LXw0/nArMM4A1wxSZXZ1aQSNohsBFVGmkX1MmzOYuXjTsu0L1/CKQfdafafsgdepjHoyd8gbuUbSPFLU8FITZHKAmjglwYZLx622zXrLm4iJuPespbgIe+NC2EUtJ3ZnhlImTBpaGbF7MjTGSxe+ySCGAYuUhwrL/ghIVcztwjaC2fea9mpWeY925t6X+VgrequiredfafOyO292GCbq4xYNF9RcsiHHnEgRChEwf2sxdzlp/GL9BM4kwx23foxBjIUoTjDFfVsWxyCjPKBqey+vHWNCe0VC28yt/U3x314GdvooINhoE5ZcQ6aCASVyZamEMfXsLrBPN8qZJUJOBO2G/dk= *******@163.com
Github截图:
常用命令
查看类型命令
- 查看状态
git status
- 查看分支
git branch # 查看本地分支:
git branch -a # 查看所有分支:
- 查看跟踪关系
git branch -vv
- 查看日志
git log --oneline
git log --oneline --graph # 带图解
git log # 查看commit的历史
git log -p # 查看某个文件的修改历史
git log -p -2 # 查看最近2次的更新内容
git log master..dev # 查看 dev 中比 master 中多提交了哪些内容:
git log dev..master # 注意,列出来的是两个点后边(此处即dev)多提交的内容。同理,想知道 master 比 dev 多提交了什么:
- 查看本次commit 修改内容
git show
- git diff 文件对比
git diff
git diff --cached # 查看staged状态更改
git diff hard # 查看在一次的修改。
git diff filepath # 工作区与暂存区比较
git diff HEAD filepath # 工作区与HEAD ( 当前工作分支) 比较
git diff --staged 或 --cached filepath # 暂存区与HEAD比较
git diff branchName filepath # 当前分支的文件与branchName 分支的文件进行比较
git diff commitId filepath # 与某一次提交进行比较
变更类型命令
- 克隆命令
git clone http://github.com/*****/****.git
- 添加
git add . # 添加所有modified到staged状态。 会变成绿色的modified
- 拉取
git fetch # 是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。
git pull # 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
git checkout -b feature_01 origin/release_01 # 将远程分支origin/release_01 将取到本地并改名为feature_01 和 切换到此分支
- 提交
git commit -m [message] # 提交本地commit,message 提交的信息描述
git commit --amend --no-edit # 提交commit ,不产生记录信息
- 推送
git push origin head:dev_test # 将当前分支推送到远程服务器
git push origin head:dev_test -f # 强制覆盖推送(小心使用)
git push -u origin 分支名称 # 将当前分支推送到远程服务器,将添加新分支
- 删除
git branch -d dev_test # 删除本地分支
git push origin :dev_test # 删除远程分支
git branch -dr origin/dev_test # 删除远程分支origin/dev_test (实测只是删除了本地的远程分支记录)
- 切换
git checkout dev_test
- 暂存
git stash # 将当前文件未提交的文件进行暂时保存
git stash pop # 恢复之前暂时保存的文件
- 撤销
git撤销本地所有未提交的更改
git clean -df # 只删除所有untracked的文件,如果文件已经被tracked, 修改过的文件不会被回退。
git reset --hard # 把tracked的文件revert到前一个版本,对于untracked的文件(比如编译的临时文件)都不会被删除。
git reset 1.py # 将文件从staged返回到modified状态:
git checkout -- test/test/transfer_base.py # 撤销对本地文件test/test/transfer_base.py 的更改
- 回滚
git reset --hard e377f60e28c8b84158 # 回滚到指定的commit 版本
git log --oneline
git log --oneline --graph
git reset --hard HEAD # 回到前一个commit
git reset --hard HEAD^ # 回到上一个commit
git reset --hard 版本号 # 回到指定版本号
git reflog # 查看引用的log hard 前后的log
- 添加文件
git add 1.py
- 变基
变基操作指令:rebase
说明:
作用:在对当前分支与主分支进行merge 操作时,将自己当前多次提交commit条数,合并成1条记录 。
操作方法:
示例:git rebase -i commit id
-i 是交互模式
- 我们设置第二以后的”pick 657a291 add 2.txt” 为” s 657a291 add 2.txt”这里的s就是squash命令的简写。
- 跳出来了一个临时文件,最上面是commit message 删除。我们修改下这个总体的commit message。
dev_test_3.6.2.7 对比目标的commit 记录,进行对比操作,重新设置基线,将多条commit记录合并成一条。
注意:- 若dev_test_3.6.2.7 与当前分支已经各自前进,可以将当前分支push 到一个分支,再与目标分支进行merge操作。
rebase 操作:commit id 为修改前的id。
git rebase -i fdb2d2c43c4737fe4453cbfc438348d20001f119
- merge
git merge dev # merge dev 分支到当前分支
git merge --no-ff -m "keep merge info" dev # merge dev 分支到当前分支
- 指定文件回到从前
git checkout 版本号 -- 1.py
git add 1.py
git commit -m "修改了1.py"
git checkout 0b6aedc95213b06bd069c29e1bbf3d84196810eb -- test/stat/alarm/common.py
vi 替换命令
git rebase # 编辑文本时使用
[addr] 表示检索范围,省略时表示当前行。
“1,20” :表示从第1行到20行;
“%” :表示整个文件,同“1,$”;
“. ,$” :从当前行到文件尾;
s : 表示替换操作
[option] : 表示操作类型
g 表示全局替换;
c 表示进行确认
p 表示替代结果逐行显示(Ctrl + L恢复屏幕);
示例:1,15s/pick/s/g
最后
以上就是粗暴皮卡丘为你收集整理的Git 常用命令的全部内容,希望文章能够帮你解决Git 常用命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复